From 9aa401b517aaebc62a87d0efb94b100c12589a8c Mon Sep 17 00:00:00 2001 From: hazre Date: Sat, 28 Mar 2026 17:25:06 +0100 Subject: [PATCH 01/23] chore: refresh tsconfig and tooling --- .gitignore | 2 + eslint.config.js | 53 ++ knip.json | 3 +- package.json | 25 +- pnpm-lock.yaml | 734 ++++++++++++++++++++------ scripts/import-rewrites.test.js | 73 +++ scripts/migrate-matrix-sdk-imports.js | 234 ++++++++ scripts/normalize-imports.js | 205 +------ scripts/utils/import-rewrites.js | 280 ++++++++++ src/app/components/editor/output.ts | 7 +- src/app/pages/Router.tsx | 5 +- tsconfig.json | 45 +- tsconfig.node.json | 29 + tsconfig.web.json | 52 ++ vite.config.ts | 14 +- vitest.config.ts | 17 +- 16 files changed, 1350 insertions(+), 428 deletions(-) create mode 100644 scripts/import-rewrites.test.js create mode 100644 scripts/migrate-matrix-sdk-imports.js create mode 100644 scripts/utils/import-rewrites.js create mode 100644 tsconfig.node.json create mode 100644 tsconfig.web.json diff --git a/.gitignore b/.gitignore index d6c83cfb1..fce1c2439 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ dist coverage node_modules devAssets +.tsbuildinfo +*.tsbuildinfo .DS_Store .idea diff --git a/eslint.config.js b/eslint.config.js index 9fa0c87bb..dc2a2ebc6 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,9 +1,11 @@ import path from 'node:path'; +import e18ePlugin from '@e18e/eslint-plugin'; import { includeIgnoreFile } from '@eslint/compat'; import js from '@eslint/js'; import { defineConfig } from 'eslint/config'; import { configs, helpers, plugins } from 'eslint-config-airbnb-extended'; +import { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript'; import { rules as prettierConfigRules } from 'eslint-config-prettier'; import prettierPlugin from 'eslint-plugin-prettier'; import reactPlugin from 'eslint-plugin-react'; @@ -66,10 +68,53 @@ const prettierConfig = defineConfig([ }, ]); +const e18eConfig = defineConfig([ + { + name: 'e18e/scripts', + files: ['scripts/**/*.js'], + plugins: { + e18e: e18ePlugin, + }, + rules: { + 'e18e/prefer-array-at': 'error', + 'e18e/prefer-array-some': 'error', + 'e18e/prefer-array-to-sorted': 'error', + 'e18e/prefer-spread-syntax': 'error', + }, + }, +]); + +const scriptOverrides = defineConfig([ + { + name: 'project/script-overrides', + files: ['scripts/**/*.js'], + languageOptions: { + globals: { + ...globals.node, + }, + }, + rules: { + 'no-await-in-loop': 'off', + 'no-bitwise': 'off', + 'no-continue': 'off', + 'no-restricted-syntax': 'off', + 'prefer-destructuring': 'off', + }, + }, +]); + const projectOverrides = defineConfig([ { name: 'project/rule-overrides', files: [...jsFiles, ...tsFiles], + settings: { + 'import-x/resolver-next': [ + createTypeScriptImportResolver({ + alwaysTryTypes: true, + project: ['tsconfig.web.json', 'tsconfig.node.json'], + }), + ], + }, languageOptions: { globals: { JSX: 'readonly', @@ -110,6 +155,12 @@ const projectOverrides = defineConfig([ { name: 'project/typescript-rule-overrides', files: tsFiles, + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, rules: { // disabled for now to get eslint to pass '@typescript-eslint/consistent-type-definitions': 'off', @@ -138,6 +189,8 @@ export default defineConfig([ ...jsConfig, ...reactConfig, ...typescriptConfig, + ...e18eConfig, + ...scriptOverrides, ...prettierConfig, ...projectOverrides, ]); diff --git a/knip.json b/knip.json index c6cca1d75..e011aaea4 100644 --- a/knip.json +++ b/knip.json @@ -1,6 +1,7 @@ { "$schema": "https://unpkg.com/knip@5/schema.json", - "entry": ["src/sw.ts", "scripts/normalize-imports.js"], + "entry": ["src/sw.ts"], + "ignore": ["src/ext.d.ts", "src/types/matrix-sdk-events.d.ts"], "ignoreExportsUsedInFile": { "interface": true, "type": true diff --git a/package.json b/package.json index 23853c9e2..86ea3ff21 100644 --- a/package.json +++ b/package.json @@ -16,11 +16,16 @@ "lint:fix": "eslint . --fix", "fmt": "prettier --write .", "fmt:check": "prettier --check .", - "typecheck": "tsc", + "typecheck": "tsc -b", "test": "vitest", "test:ui": "vitest --ui", "test:run": "vitest run", "test:coverage": "vitest run --coverage", + "imports:normalize": "node scripts/normalize-imports.js", + "imports:normalize:write": "node scripts/normalize-imports.js --write", + "imports:repair": "pnpm run imports:normalize:write", + "imports:migrate:matrix-sdk": "node scripts/migrate-matrix-sdk-imports.js", + "imports:migrate:matrix-sdk:write": "node scripts/migrate-matrix-sdk-imports.js --write", "knip": "knip", "tunnel": "cloudflared tunnel --url http://localhost:8080", "knope": "knope", @@ -44,7 +49,7 @@ "@use-gesture/react": "10.3.1", "@vanilla-extract/css": "^1.18.0", "@vanilla-extract/recipes": "^0.5.7", - "@vanilla-extract/vite-plugin": "^5.1.4", + "@vanilla-extract/vite-plugin": "^5.2.1", "await-to-js": "^3.0.0", "badwords-list": "^2.0.1-4", "blurhash": "^2.0.5", @@ -95,7 +100,8 @@ "workbox-precaching": "^7.4.0" }, "devDependencies": { - "@cloudflare/vite-plugin": "^1.26.0", + "@cloudflare/vite-plugin": "^1.30.2", + "@e18e/eslint-plugin": "^0.3.0", "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@eslint/compat": "2.0.2", "@eslint/js": "9.39.3", @@ -116,7 +122,7 @@ "@types/react-google-recaptcha": "^2.1.9", "@types/sanitize-html": "^2.16.0", "@types/ua-parser-js": "^0.7.39", - "@vitejs/plugin-react": "^5.1.4", + "@vitejs/plugin-react": "^6.0.1", "@vitest/coverage-v8": "^4.1.0", "@vitest/ui": "^4.1.0", "buffer": "^6.0.3", @@ -124,19 +130,20 @@ "eslint": "9.39.3", "eslint-config-airbnb-extended": "3.0.1", "eslint-config-prettier": "10.1.8", + "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-prettier": "5.5.5", "globals": "17.3.0", "jsdom": "^29.0.0", "knip": "5.85.0", "prettier": "3.8.1", "typescript": "^5.9.3", - "vite": "^7.3.1", - "vite-plugin-compression2": "2.5.0", + "vite": "^8.0.3", + "vite-plugin-compression2": "2.5.3", "vite-plugin-pwa": "^1.2.0", - "vite-plugin-static-copy": "^3.2.0", + "vite-plugin-static-copy": "^4.0.0", "vite-plugin-svgr": "4.5.0", "vite-plugin-top-level-await": "^1.6.0", "vitest": "^4.1.0", - "wrangler": "^4.70.0" + "wrangler": "^4.78.0" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ad8544f09..935490119 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,8 +58,8 @@ importers: specifier: ^0.5.7 version: 0.5.7(@vanilla-extract/css@1.18.0) '@vanilla-extract/vite-plugin': - specifier: ^5.1.4 - version: 5.1.4(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(yaml@2.8.2) + specifier: ^5.2.1 + version: 5.2.1(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(yaml@2.8.2) await-to-js: specifier: ^3.0.0 version: 3.0.0 @@ -206,8 +206,11 @@ importers: version: 7.4.0 devDependencies: '@cloudflare/vite-plugin': - specifier: ^1.26.0 - version: 1.27.0(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(workerd@1.20260310.1)(wrangler@4.72.0) + specifier: ^1.30.2 + version: 1.30.2(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(workerd@1.20260317.1)(wrangler@4.78.0) + '@e18e/eslint-plugin': + specifier: ^0.3.0 + version: 0.3.0(eslint@9.39.3(jiti@2.6.1)) '@esbuild-plugins/node-globals-polyfill': specifier: ^0.2.3 version: 0.2.3(esbuild@0.27.3) @@ -269,8 +272,8 @@ importers: specifier: ^0.7.39 version: 0.7.39 '@vitejs/plugin-react': - specifier: ^5.1.4 - version: 5.1.4(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + specifier: ^6.0.1 + version: 6.0.1(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) '@vitest/coverage-v8': specifier: ^4.1.0 version: 4.1.0(vitest@4.1.0) @@ -292,6 +295,9 @@ importers: eslint-config-prettier: specifier: 10.1.8 version: 10.1.8(eslint@9.39.3(jiti@2.6.1)) + eslint-import-resolver-typescript: + specifier: ^4.4.4 + version: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.57.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.3(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.3(jiti@2.6.1)) eslint-plugin-prettier: specifier: 5.5.5 version: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.3(jiti@2.6.1)))(eslint@9.39.3(jiti@2.6.1))(prettier@3.8.1) @@ -311,29 +317,29 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^7.3.1 - version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + specifier: ^8.0.3 + version: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) vite-plugin-compression2: - specifier: 2.5.0 - version: 2.5.0(rollup@4.59.0) + specifier: 2.5.3 + version: 2.5.3(rollup@4.59.0) vite-plugin-pwa: specifier: ^1.2.0 - version: 1.2.0(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0) + version: 1.2.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0) vite-plugin-static-copy: - specifier: ^3.2.0 - version: 3.2.0(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + specifier: ^4.0.0 + version: 4.0.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) vite-plugin-svgr: specifier: 4.5.0 - version: 4.5.0(rollup@4.59.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + version: 4.5.0(rollup@4.59.0)(typescript@5.9.3)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) vite-plugin-top-level-await: specifier: ^1.6.0 - version: 1.6.0(@swc/helpers@0.5.19)(rollup@4.59.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + version: 1.6.0(@swc/helpers@0.5.19)(rollup@4.59.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) vitest: specifier: ^4.1.0 - version: 4.1.0(@types/node@24.10.13)(@vitest/ui@4.1.0)(jsdom@29.0.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + version: 4.1.0(@types/node@24.10.13)(@vitest/ui@4.1.0)(jsdom@29.0.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) wrangler: - specifier: ^4.70.0 - version: 4.72.0 + specifier: ^4.78.0 + version: 4.78.0 packages: @@ -768,18 +774,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.29.0': resolution: {integrity: sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==} engines: {node: '>=6.9.0'} @@ -895,8 +889,8 @@ packages: resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} engines: {node: '>=18.0.0'} - '@cloudflare/unenv-preset@2.15.0': - resolution: {integrity: sha512-EGYmJaGZKWl+X8tXxcnx4v2bOZSjQeNI5dWFeXivgX9+YCT69AkzHHwlNbVpqtEUTbew8eQurpyOpeN8fg00nw==} + '@cloudflare/unenv-preset@2.16.0': + resolution: {integrity: sha512-8ovsRpwzPoEqPUzoErAYVv8l3FMZNeBVQfJTvtzP4AgLSRGZISRfuChFxHWUQd3n6cnrwkuTGxT+2cGo8EsyYg==} peerDependencies: unenv: 2.0.0-rc.24 workerd: 1.20260301.1 || ~1.20260302.1 || ~1.20260303.1 || ~1.20260304.1 || >1.20260305.0 <2.0.0-0 @@ -904,38 +898,38 @@ packages: workerd: optional: true - '@cloudflare/vite-plugin@1.27.0': - resolution: {integrity: sha512-+s8APrIadCf2h0zYZ3WIPVeQ2CYgbXgFiR3BIrKvbpoo5klLgTeYpTq8ggxBmtjwt88PNruI4eCGZ6XNaDHMaA==} + '@cloudflare/vite-plugin@1.30.2': + resolution: {integrity: sha512-1TG/GyYxMAVhRtbKs9dPCsJY+c4qaPk+NKiLywKLV/BuvgMTBGhrmIvkC9NQSaw9sa5fPOYmv9me68AIs5kXJQ==} peerDependencies: - vite: ^6.1.0 || ^7.0.0 - wrangler: ^4.72.0 + vite: ^6.1.0 || ^7.0.0 || ^8.0.0 + wrangler: ^4.78.0 - '@cloudflare/workerd-darwin-64@1.20260310.1': - resolution: {integrity: sha512-hF2VpoWaMb1fiGCQJqCY6M8I+2QQqjkyY4LiDYdTL5D/w6C1l5v1zhc0/jrjdD1DXfpJtpcSMSmEPjHse4p9Ig==} + '@cloudflare/workerd-darwin-64@1.20260317.1': + resolution: {integrity: sha512-8hjh3sPMwY8M/zedq3/sXoA2Q4BedlGufn3KOOleIG+5a4ReQKLlUah140D7J6zlKmYZAFMJ4tWC7hCuI/s79g==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20260310.1': - resolution: {integrity: sha512-h/Vl3XrYYPI6yFDE27XO1QPq/1G1lKIM8tzZGIWYpntK3IN5XtH3Ee/sLaegpJ49aIJoqhF2mVAZ6Yw+Vk2gJw==} + '@cloudflare/workerd-darwin-arm64@1.20260317.1': + resolution: {integrity: sha512-M/MnNyvO5HMgoIdr3QHjdCj2T1ki9gt0vIUnxYxBu9ISXS/jgtMl6chUVPJ7zHYBn9MyYr8ByeN6frjYxj0MGg==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20260310.1': - resolution: {integrity: sha512-XzQ0GZ8G5P4d74bQYOIP2Su4CLdNPpYidrInaSOuSxMw+HamsHaFrjVsrV2mPy/yk2hi6SY2yMbgKFK9YjA7vw==} + '@cloudflare/workerd-linux-64@1.20260317.1': + resolution: {integrity: sha512-1ltuEjkRcS3fsVF7CxsKlWiRmzq2ZqMfqDN0qUOgbUwkpXsLVJsXmoblaLf5OP00ELlcgF0QsN0p2xPEua4Uug==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20260310.1': - resolution: {integrity: sha512-sxv4CxnN4ZR0uQGTFVGa0V4KTqwdej/czpIc5tYS86G8FQQoGIBiAIs2VvU7b8EROPcandxYHDBPTb+D9HIMPw==} + '@cloudflare/workerd-linux-arm64@1.20260317.1': + resolution: {integrity: sha512-3QrNnPF1xlaNwkHpasvRvAMidOvQs2NhXQmALJrEfpIJ/IDL2la8g499yXp3eqhG3hVMCB07XVY149GTs42Xtw==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20260310.1': - resolution: {integrity: sha512-+1ZTViWKJypLfgH/luAHCqkent0DEBjAjvO40iAhOMHRLYP/SPphLvr4Jpi6lb+sIocS8Q1QZL4uM5Etg1Wskg==} + '@cloudflare/workerd-windows-64@1.20260317.1': + resolution: {integrity: sha512-MfZTz+7LfuIpMGTa3RLXHX8Z/pnycZLItn94WRdHr8LPVet+C5/1Nzei399w/jr3+kzT4pDKk26JF/tlI5elpQ==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -980,6 +974,17 @@ packages: resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} engines: {node: '>=20.19.0'} + '@e18e/eslint-plugin@0.3.0': + resolution: {integrity: sha512-hHgfpxsrZ2UYHcicA+tGZnmk19uJTaye9VH79O+XS8R4ona2Hx3xjhXghclNW58uXMk3xXlbYEOMr8thsoBmWg==} + peerDependencies: + eslint: ^9.0.0 || ^10.0.0 + oxlint: ^1.55.0 + peerDependenciesMeta: + eslint: + optional: true + oxlint: + optional: true + '@emnapi/core@1.8.1': resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} @@ -1544,6 +1549,9 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oxc-project/types@0.122.0': + resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} + '@oxc-resolver/binding-android-arm-eabi@11.19.1': resolution: {integrity: sha512-aUs47y+xyXHUKlbhqHUjBABjvycq6YSD7bpxSW7vplUmdzAlJ93yXY6ZR0c1o1x5A/QKbENCvs3+NlY8IpIVzg==} cpu: [arm] @@ -2215,8 +2223,106 @@ packages: resolution: {integrity: sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==} engines: {node: '>=14.0.0'} - '@rolldown/pluginutils@1.0.0-rc.3': - resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + '@rolldown/binding-android-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-rc.12': + resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': + resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-rc.12': + resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} + + '@rolldown/pluginutils@1.0.0-rc.7': + resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} '@rollup/plugin-babel@5.3.1': resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} @@ -3018,14 +3124,17 @@ packages: '@vanilla-extract/babel-plugin-debug-ids@1.2.2': resolution: {integrity: sha512-MeDWGICAF9zA/OZLOKwhoRlsUW+fiMwnfuOAqFVohL31Agj7Q/RBWAYweqjHLgFBCsdnr6XIfwjJnmb2znEWxw==} - '@vanilla-extract/compiler@0.3.4': - resolution: {integrity: sha512-W9HXf9EAccpE1vEIATvSoBVj/bQnmHfYHfDJjUN8dcOHW6oMcnoGTqweDM9I66BHqlNH4d0IsaeZKSViOv7K4w==} + '@vanilla-extract/compiler@0.6.0': + resolution: {integrity: sha512-FlZM8s/h1obGHdYSTo05iIXUr6hsNvoE/okv/e9Sq7GN+niofhUKyuZPSwZNVYMK49xxeWNH9mopOlGRRPV4mw==} '@vanilla-extract/css@1.18.0': resolution: {integrity: sha512-/p0dwOjr0o8gE5BRQ5O9P0u/2DjUd6Zfga2JGmE4KaY7ZITWMszTzk4x4CPlM5cKkRr2ZGzbE6XkuPNfp9shSQ==} - '@vanilla-extract/integration@8.0.7': - resolution: {integrity: sha512-ILob4F9cEHXpbWAVt3Y2iaQJpqYq/c/5TJC8Fz58C2XmX3QW2Y589krvViiyJhQfydCGK3EbwPQhVFjQaBeKfg==} + '@vanilla-extract/css@1.20.0': + resolution: {integrity: sha512-yKuajXFlghIjRZmEfy95z6MYj+mzJPoD3nbNLVAUB8Np6I1P9g5vBlznQPD+0A46osCn0za/wIvp/cg8HU3aig==} + + '@vanilla-extract/integration@8.0.9': + resolution: {integrity: sha512-NP+CSo5IYHDmkMMy5vAxY4R9i2+CAg4sxgvVaxuHiuY9q30i6dNUTujNNKZGW2urEkd4HVVI6NggeIyYjbGPwA==} '@vanilla-extract/private@1.0.9': resolution: {integrity: sha512-gT2jbfZuaaCLrAxwXbRgIhGhcXbRZCG3v4TTUnjw0EJ7ArdBRxkq4msNJkbuRkCgfIK5ATmprB5t9ljvLeFDEA==} @@ -3035,16 +3144,23 @@ packages: peerDependencies: '@vanilla-extract/css': ^1.0.0 - '@vanilla-extract/vite-plugin@5.1.4': - resolution: {integrity: sha512-fTYNKUK3n4ApkUf2FEcO7mpqNKEHf9kDGg8DXlkqHtPxgwPhjuaajmDfQCSBsNgnA2SLI+CB5EO6kLQuKsw2Rw==} + '@vanilla-extract/vite-plugin@5.2.1': + resolution: {integrity: sha512-1dmCgmTmls/c4G+t453vZIzZ+82ftr+JC2J48C1drVkiwtZ7DscYSIko9Ci0CyDptBLWz5EO9fWnqzfHnns8tg==} peerDependencies: - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - '@vitejs/plugin-react@5.1.4': - resolution: {integrity: sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==} + '@vitejs/plugin-react@6.0.1': + resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true '@vitest/coverage-v8@4.1.0': resolution: {integrity: sha512-nDWulKeik2bL2Va/Wl4x7DLuTKAXa906iRFooIRPR+huHkcvp9QDkPQ2RJdmjOFrqOqvNfoSQLF68deE3xC3CQ==} @@ -3547,6 +3663,10 @@ packages: emojibase@15.3.1: resolution: {integrity: sha512-GNsjHnG2J3Ktg684Fs/vZR/6XpOSkZPMAv85EHrr6br2RN2cJNwdS4am/3YSK3y+/gOv2kmoK3GGdahXdMxg2g==} + empathic@2.0.0: + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + engines: {node: '>=14'} + enhanced-resolve@5.20.0: resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==} engines: {node: '>=10.13.0'} @@ -3684,6 +3804,11 @@ packages: eslint-import-resolver-webpack: optional: true + eslint-plugin-depend@1.5.0: + resolution: {integrity: sha512-i3UeLYmclf1Icp35+6W7CR4Bp2PIpDgBuf/mpmXK5UeLkZlvYJ21VuQKKHHAIBKRTPivPGX/gZl5JGno1o9Y0A==} + peerDependencies: + eslint: '>=8.40.0' + eslint-plugin-es-x@7.8.0: resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -4436,6 +4561,80 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -4538,8 +4737,8 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - miniflare@4.20260310.0: - resolution: {integrity: sha512-uC5vNPenFpDSj5aUU3wGSABG6UUqMr+Xs1m4AkCrTHo37F4Z6xcQw5BXqViTfPDVT/zcYH1UgTVoXhr1l6ZMXw==} + miniflare@4.20260317.3: + resolution: {integrity: sha512-tK78D3X4q30/SXqVwMhWrUfH+ffRou9dJLC+jkhNy5zh1I7i7T4JH6xihOvYxdCSBavJ5fQXaaxDJz6orh09BA==} engines: {node: '>=18.0.0'} hasBin: true @@ -4560,6 +4759,9 @@ packages: modern-ahocorasick@1.1.0: resolution: {integrity: sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==} + module-replacements@2.11.0: + resolution: {integrity: sha512-j5sNQm3VCpQQ7nTqGeOZtoJtV3uKERgCBm9QRhmGRiXiqkf7iRFOkfxdJRZWLkqYY8PNf4cDQF/WfXUYLENrRA==} + motion-dom@12.35.2: resolution: {integrity: sha512-pWXFMTwvGDbx1Fe9YL5HZebv2NhvGBzRtiNUv58aoK7+XrsuaydQ0JGRKK2r+bTKlwgSWwWxHbP5249Qr/BNpg==} @@ -4739,6 +4941,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -4868,10 +5074,6 @@ packages: react: '*' react-dom: '*' - react-refresh@0.18.0: - resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} - engines: {node: '>=0.10.0'} - react-router-dom@6.30.3: resolution: {integrity: sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==} engines: {node: '>=14.0.0'} @@ -4951,6 +5153,11 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rolldown@1.0.0-rc.12: + resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.59.0: resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -5418,8 +5625,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite-plugin-compression2@2.5.0: - resolution: {integrity: sha512-bHxtBibPxxSn5eZSe0IAzvYucP/hg8Bz8ppjbH7lndU5kIHT+92qTkB4z9xWYfnyV0YHuir1SjOuyO0fzU4Vgg==} + vite-plugin-compression2@2.5.3: + resolution: {integrity: sha512-ItPgqQWkcnBbVw7is9OKwiZ8v6+ju9rYROl5Lp6QfQDEx/d55AwJQb/KLpsQqsU9HoigYBsZ8tK6I02UwJNvEw==} vite-plugin-pwa@1.2.0: resolution: {integrity: sha512-a2xld+SJshT9Lgcv8Ji4+srFJL4k/1bVbd1x06JIkvecpQkwkvCncD1+gSzcdm3s+owWLpMJerG3aN5jupJEVw==} @@ -5433,11 +5640,11 @@ packages: '@vite-pwa/assets-generator': optional: true - vite-plugin-static-copy@3.2.0: - resolution: {integrity: sha512-g2k9z8B/1Bx7D4wnFjPLx9dyYGrqWMLTpwTtPHhcU+ElNZP2O4+4OsyaficiDClus0dzVhdGvoGFYMJxoXZ12Q==} - engines: {node: ^18.0.0 || >=20.0.0} + vite-plugin-static-copy@4.0.0: + resolution: {integrity: sha512-TTf6cVTV4M2pH2Wfr3zhevdRsIQezfm2ltDkSfkjqvvdryJHYQyNoPISvuytX3r9jFZV0yVeMYyGTsAvAH2XLw==} + engines: {node: ^22.0.0 || >=24.0.0} peerDependencies: - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 vite-plugin-svgr@4.5.0: resolution: {integrity: sha512-W+uoSpmVkSmNOGPSsDCWVW/DDAyv+9fap9AZXBvWiQqrboJ08j2vh0tFxTD/LjwqwAd3yYSVJgm54S/1GhbdnA==} @@ -5489,6 +5696,49 @@ packages: yaml: optional: true + vite@8.0.3: + resolution: {integrity: sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.0 + esbuild: '>=0.25.0' + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@4.1.0: resolution: {integrity: sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -5639,17 +5889,17 @@ packages: workbox-window@7.4.0: resolution: {integrity: sha512-/bIYdBLAVsNR3v7gYGaV4pQW3M3kEPx5E8vDxGvxo6khTrGtSSCS7QiFKv9ogzBgZiy0OXLP9zO28U/1nF1mfw==} - workerd@1.20260310.1: - resolution: {integrity: sha512-yawXhypXXHtArikJj15HOMknNGikpBbSg2ZDe6lddUbqZnJXuCVSkgc/0ArUeVMG1jbbGvpst+REFtKwILvRTQ==} + workerd@1.20260317.1: + resolution: {integrity: sha512-ZuEq1OdrJBS+NV+L5HMYPCzVn49a2O60slQiiLpG44jqtlOo+S167fWC76kEXteXLLLydeuRrluRel7WdOUa4g==} engines: {node: '>=16'} hasBin: true - wrangler@4.72.0: - resolution: {integrity: sha512-bKkb8150JGzJZJWiNB2nu/33smVfawmfYiecA6rW4XH7xS23/jqMbgpdelM34W/7a1IhR66qeQGVqTRXROtAZg==} - engines: {node: '>=20.0.0'} + wrangler@4.78.0: + resolution: {integrity: sha512-He/vUhk4ih0D0eFmtNnlbT6Od8j+BEokaSR+oYjbVsH0SWIrIch+eHqfLRSBjBQaOoh6HCNxcafcIkBm2u0Hag==} + engines: {node: '>=20.3.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20260310.1 + '@cloudflare/workers-types': ^4.20260317.1 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -6229,16 +6479,6 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -6424,38 +6664,38 @@ snapshots: '@cloudflare/kv-asset-handler@0.4.2': {} - '@cloudflare/unenv-preset@2.15.0(unenv@2.0.0-rc.24)(workerd@1.20260310.1)': + '@cloudflare/unenv-preset@2.16.0(unenv@2.0.0-rc.24)(workerd@1.20260317.1)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: - workerd: 1.20260310.1 + workerd: 1.20260317.1 - '@cloudflare/vite-plugin@1.27.0(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(workerd@1.20260310.1)(wrangler@4.72.0)': + '@cloudflare/vite-plugin@1.30.2(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(workerd@1.20260317.1)(wrangler@4.78.0)': dependencies: - '@cloudflare/unenv-preset': 2.15.0(unenv@2.0.0-rc.24)(workerd@1.20260310.1) - miniflare: 4.20260310.0 + '@cloudflare/unenv-preset': 2.16.0(unenv@2.0.0-rc.24)(workerd@1.20260317.1) + miniflare: 4.20260317.3 unenv: 2.0.0-rc.24 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) - wrangler: 4.72.0 + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + wrangler: 4.78.0 ws: 8.18.0 transitivePeerDependencies: - bufferutil - utf-8-validate - workerd - '@cloudflare/workerd-darwin-64@1.20260310.1': + '@cloudflare/workerd-darwin-64@1.20260317.1': optional: true - '@cloudflare/workerd-darwin-arm64@1.20260310.1': + '@cloudflare/workerd-darwin-arm64@1.20260317.1': optional: true - '@cloudflare/workerd-linux-64@1.20260310.1': + '@cloudflare/workerd-linux-64@1.20260317.1': optional: true - '@cloudflare/workerd-linux-arm64@1.20260310.1': + '@cloudflare/workerd-linux-arm64@1.20260317.1': optional: true - '@cloudflare/workerd-windows-64@1.20260310.1': + '@cloudflare/workerd-windows-64@1.20260317.1': optional: true '@cspotcode/source-map-support@0.8.1': @@ -6486,6 +6726,12 @@ snapshots: '@csstools/css-tokenizer@4.0.0': {} + '@e18e/eslint-plugin@0.3.0(eslint@9.39.3(jiti@2.6.1))': + dependencies: + eslint-plugin-depend: 1.5.0(eslint@9.39.3(jiti@2.6.1)) + optionalDependencies: + eslint: 9.39.3(jiti@2.6.1) + '@emnapi/core@1.8.1': dependencies: '@emnapi/wasi-threads': 1.1.0 @@ -6911,6 +7157,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 + '@oxc-project/types@0.122.0': {} + '@oxc-resolver/binding-android-arm-eabi@11.19.1': optional: true @@ -7957,7 +8205,56 @@ snapshots: '@remix-run/router@1.23.2': {} - '@rolldown/pluginutils@1.0.0-rc.3': {} + '@rolldown/binding-android-arm64@1.0.0-rc.12': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-rc.12': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + optional: true + + '@rolldown/pluginutils@1.0.0-rc.12': {} + + '@rolldown/pluginutils@1.0.0-rc.7': {} '@rollup/plugin-babel@5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.59.0)': dependencies: @@ -8440,19 +8737,23 @@ snapshots: '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 + optional: true '@types/babel__generator@7.27.0': dependencies: '@babel/types': 7.29.0 + optional: true '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.29.0 '@babel/types': 7.29.0 + optional: true '@types/babel__traverse@7.28.0': dependencies: '@babel/types': 7.29.0 + optional: true '@types/chai@5.2.3': dependencies: @@ -8671,15 +8972,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@vanilla-extract/compiler@0.3.4(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)': + '@vanilla-extract/compiler@0.6.0(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(yaml@2.8.2)': dependencies: - '@vanilla-extract/css': 1.18.0 - '@vanilla-extract/integration': 8.0.7 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + '@vanilla-extract/css': 1.20.0 + '@vanilla-extract/integration': 8.0.9 + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite-node: 3.2.4(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' + - '@vitejs/devtools' - babel-plugin-macros + - esbuild - jiti - less - lightningcss @@ -8709,12 +9012,29 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - '@vanilla-extract/integration@8.0.7': + '@vanilla-extract/css@1.20.0': + dependencies: + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.9 + css-what: 6.2.2 + cssesc: 3.0.0 + csstype: 3.2.3 + dedent: 1.7.2 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@vanilla-extract/integration@8.0.9': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) '@vanilla-extract/babel-plugin-debug-ids': 1.2.2 - '@vanilla-extract/css': 1.18.0 + '@vanilla-extract/css': 1.20.0 dedent: 1.7.2 esbuild: 0.27.3 eval: 0.1.8 @@ -8731,14 +9051,16 @@ snapshots: dependencies: '@vanilla-extract/css': 1.18.0 - '@vanilla-extract/vite-plugin@5.1.4(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(yaml@2.8.2)': + '@vanilla-extract/vite-plugin@5.2.1(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(yaml@2.8.2)': dependencies: - '@vanilla-extract/compiler': 0.3.4(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) - '@vanilla-extract/integration': 8.0.7 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + '@vanilla-extract/compiler': 0.6.0(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(yaml@2.8.2) + '@vanilla-extract/integration': 8.0.9 + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' + - '@vitejs/devtools' - babel-plugin-macros + - esbuild - jiti - less - lightningcss @@ -8751,17 +9073,10 @@ snapshots: - tsx - yaml - '@vitejs/plugin-react@5.1.4(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))': + '@vitejs/plugin-react@6.0.1(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))': dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) - '@rolldown/pluginutils': 1.0.0-rc.3 - '@types/babel__core': 7.20.5 - react-refresh: 0.18.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color + '@rolldown/pluginutils': 1.0.0-rc.7 + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) '@vitest/coverage-v8@4.1.0(vitest@4.1.0)': dependencies: @@ -8775,7 +9090,7 @@ snapshots: obug: 2.1.1 std-env: 4.0.0 tinyrainbow: 3.1.0 - vitest: 4.1.0(@types/node@24.10.13)(@vitest/ui@4.1.0)(jsdom@29.0.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + vitest: 4.1.0(@types/node@24.10.13)(@vitest/ui@4.1.0)(jsdom@29.0.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) '@vitest/expect@4.1.0': dependencies: @@ -8786,13 +9101,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.0(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))': + '@vitest/mocker@4.1.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.1.0 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) '@vitest/pretty-format@4.1.0': dependencies: @@ -8821,7 +9136,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vitest: 4.1.0(@types/node@24.10.13)(@vitest/ui@4.1.0)(jsdom@29.0.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + vitest: 4.1.0(@types/node@24.10.13)(@vitest/ui@4.1.0)(jsdom@29.0.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) '@vitest/utils@4.1.0': dependencies: @@ -8868,7 +9183,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 argparse@2.0.1: {} @@ -9280,6 +9595,8 @@ snapshots: emojibase@15.3.1: {} + empathic@2.0.0: {} + enhanced-resolve@5.20.0: dependencies: graceful-fs: 4.2.11 @@ -9509,6 +9826,13 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-depend@1.5.0(eslint@9.39.3(jiti@2.6.1)): + dependencies: + empathic: 2.0.0 + eslint: 9.39.3(jiti@2.6.1) + module-replacements: 2.11.0 + semver: 7.7.4 + eslint-plugin-es-x@7.8.0(eslint@9.39.3(jiti@2.6.1)): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.3(jiti@2.6.1)) @@ -9762,9 +10086,9 @@ snapshots: dependencies: walk-up-path: 4.0.0 - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 fflate@0.8.2: {} @@ -10361,6 +10685,55 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + lines-and-columns@1.2.4: {} linkify-react@4.3.2(linkifyjs@4.3.2)(react@18.3.1): @@ -10463,12 +10836,12 @@ snapshots: min-indent@1.0.1: {} - miniflare@4.20260310.0: + miniflare@4.20260317.3: dependencies: '@cspotcode/source-map-support': 0.8.1 sharp: 0.34.5 undici: 7.24.3 - workerd: 1.20260310.1 + workerd: 1.20260317.1 ws: 8.18.0 youch: 4.1.0-beta.10 transitivePeerDependencies: @@ -10492,6 +10865,8 @@ snapshots: modern-ahocorasick@1.1.0: {} + module-replacements@2.11.0: {} + motion-dom@12.35.2: dependencies: motion-utils: 12.29.2 @@ -10680,6 +11055,8 @@ snapshots: picomatch@4.0.3: {} + picomatch@4.0.4: {} + pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -10832,8 +11209,6 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-refresh@0.18.0: {} - react-router-dom@6.30.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@remix-run/router': 1.23.2 @@ -10852,7 +11227,7 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 2.3.1 + picomatch: 2.3.2 redent@3.0.0: dependencies: @@ -10925,6 +11300,27 @@ snapshots: reusify@1.1.0: {} + rolldown@1.0.0-rc.12: + dependencies: + '@oxc-project/types': 0.122.0 + '@rolldown/pluginutils': 1.0.0-rc.12 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-x64': 1.0.0-rc.12 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.12 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.12 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 + rollup@4.59.0: dependencies: '@types/estree': 1.0.8 @@ -11293,8 +11689,8 @@ snapshots: tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinyrainbow@3.1.0: {} @@ -11481,13 +11877,13 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - vite-node@3.2.4(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2): + vite-node@3.2.4(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(yaml@2.8.2): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -11502,59 +11898,59 @@ snapshots: - tsx - yaml - vite-plugin-compression2@2.5.0(rollup@4.59.0): + vite-plugin-compression2@2.5.3(rollup@4.59.0): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.59.0) tar-mini: 0.2.0 transitivePeerDependencies: - rollup - vite-plugin-pwa@1.2.0(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0): + vite-plugin-pwa@1.2.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0): dependencies: debug: 4.4.3 pretty-bytes: 6.1.1 tinyglobby: 0.2.15 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) workbox-build: 7.4.0(@types/babel__core@7.20.5) workbox-window: 7.4.0 transitivePeerDependencies: - supports-color - vite-plugin-static-copy@3.2.0(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)): + vite-plugin-static-copy@4.0.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)): dependencies: chokidar: 3.6.0 p-map: 7.0.4 picocolors: 1.1.1 tinyglobby: 0.2.15 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) - vite-plugin-svgr@4.5.0(rollup@4.59.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)): + vite-plugin-svgr@4.5.0(rollup@4.59.0)(typescript@5.9.3)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.59.0) '@svgr/core': 8.1.0(typescript@5.9.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3)) - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) transitivePeerDependencies: - rollup - supports-color - typescript - vite-plugin-top-level-await@1.6.0(@swc/helpers@0.5.19)(rollup@4.59.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)): + vite-plugin-top-level-await@1.6.0(@swc/helpers@0.5.19)(rollup@4.59.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.59.0) '@swc/core': 1.15.18(@swc/helpers@0.5.19) '@swc/wasm': 1.15.18 uuid: 10.0.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) transitivePeerDependencies: - '@swc/helpers' - rollup - vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2): + vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(yaml@2.8.2): dependencies: esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.8 rollup: 4.59.0 tinyglobby: 0.2.15 @@ -11562,13 +11958,29 @@ snapshots: '@types/node': 24.10.13 fsevents: 2.3.3 jiti: 2.6.1 + lightningcss: 1.32.0 + terser: 5.46.1 + yaml: 2.8.2 + + vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.8 + rolldown: 1.0.0-rc.12 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.10.13 + esbuild: 0.27.3 + fsevents: 2.3.3 + jiti: 2.6.1 terser: 5.46.1 yaml: 2.8.2 - vitest@4.1.0(@types/node@24.10.13)(@vitest/ui@4.1.0)(jsdom@29.0.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)): + vitest@4.1.0(@types/node@24.10.13)(@vitest/ui@4.1.0)(jsdom@29.0.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)): dependencies: '@vitest/expect': 4.1.0 - '@vitest/mocker': 4.1.0(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + '@vitest/mocker': 4.1.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) '@vitest/pretty-format': 4.1.0 '@vitest/runner': 4.1.0 '@vitest/snapshot': 4.1.0 @@ -11585,7 +11997,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.13 @@ -11794,24 +12206,24 @@ snapshots: '@types/trusted-types': 2.0.7 workbox-core: 7.4.0 - workerd@1.20260310.1: + workerd@1.20260317.1: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20260310.1 - '@cloudflare/workerd-darwin-arm64': 1.20260310.1 - '@cloudflare/workerd-linux-64': 1.20260310.1 - '@cloudflare/workerd-linux-arm64': 1.20260310.1 - '@cloudflare/workerd-windows-64': 1.20260310.1 + '@cloudflare/workerd-darwin-64': 1.20260317.1 + '@cloudflare/workerd-darwin-arm64': 1.20260317.1 + '@cloudflare/workerd-linux-64': 1.20260317.1 + '@cloudflare/workerd-linux-arm64': 1.20260317.1 + '@cloudflare/workerd-windows-64': 1.20260317.1 - wrangler@4.72.0: + wrangler@4.78.0: dependencies: '@cloudflare/kv-asset-handler': 0.4.2 - '@cloudflare/unenv-preset': 2.15.0(unenv@2.0.0-rc.24)(workerd@1.20260310.1) + '@cloudflare/unenv-preset': 2.16.0(unenv@2.0.0-rc.24)(workerd@1.20260317.1) blake3-wasm: 2.1.5 esbuild: 0.27.3 - miniflare: 4.20260310.0 + miniflare: 4.20260317.3 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.24 - workerd: 1.20260310.1 + workerd: 1.20260317.1 optionalDependencies: fsevents: 2.3.3 transitivePeerDependencies: diff --git a/scripts/import-rewrites.test.js b/scripts/import-rewrites.test.js new file mode 100644 index 000000000..6b65f2c6d --- /dev/null +++ b/scripts/import-rewrites.test.js @@ -0,0 +1,73 @@ +import fs from 'node:fs/promises'; +import os from 'node:os'; +import path from 'node:path'; + +import { afterEach, describe, expect, it } from 'vitest'; + +import { + getMatrixModuleSpecifierFromDeclarationFile, + loadAliasMapFromTsconfig, + rewriteSourceImports, +} from './utils/import-rewrites.js'; + +const tempDirs = []; + +async function makeTempProject() { + const dir = await fs.mkdtemp(path.join(os.tmpdir(), 'sable-import-rewrites-')); + tempDirs.push(dir); + return dir; +} + +afterEach(async () => { + await Promise.all(tempDirs.splice(0).map((dir) => fs.rm(dir, { recursive: true, force: true }))); +}); + +describe('loadAliasMapFromTsconfig + rewriteSourceImports', () => { + it('rewrites relative imports using tsconfig path aliases', async () => { + const projectRoot = await makeTempProject(); + await fs.writeFile( + path.join(projectRoot, 'tsconfig.web.json'), + JSON.stringify( + { + compilerOptions: { + baseUrl: '.', + paths: { + '$components/*': ['src/app/components/*'], + '$types/*': ['src/types/*'], + }, + }, + }, + null, + 2 + ) + ); + + const aliases = await loadAliasMapFromTsconfig( + path.join(projectRoot, 'tsconfig.web.json'), + projectRoot + ); + + const filePath = path.join(projectRoot, 'src/app/pages/Home.tsx'); + const sourceCode = [ + "import { Header } from '../components/Header';", + "import { MatrixClient } from 'matrix-js-sdk/lib/client';", + '', + ].join('\n'); + + const result = rewriteSourceImports(filePath, sourceCode, aliases, projectRoot); + + expect(result.changed).toBe(true); + expect(result.updatedCode).toContain("from '$components/Header'"); + expect(result.updatedCode).toContain("from '$types/matrix-sdk'"); + }); +}); + +describe('getMatrixModuleSpecifierFromDeclarationFile', () => { + it('normalizes matrix-js-sdk declaration paths to bare module specifiers', () => { + const declarationFile = String.raw`C:\repo\node_modules\matrix-js-sdk\lib\models\room.d.ts`; + + expect(getMatrixModuleSpecifierFromDeclarationFile(declarationFile)).toBe( + 'matrix-js-sdk/lib/models/room' + ); + }); +}); diff --git a/scripts/migrate-matrix-sdk-imports.js b/scripts/migrate-matrix-sdk-imports.js new file mode 100644 index 000000000..d3417dd20 --- /dev/null +++ b/scripts/migrate-matrix-sdk-imports.js @@ -0,0 +1,234 @@ +#!/usr/bin/env node +/* eslint-disable no-console */ + +import fs from 'node:fs/promises'; +import path from 'node:path'; +import process from 'node:process'; + +import ts from 'typescript'; + +import { createTextHelpers } from './utils/console-style.js'; +import { + DEFAULT_ROOTS, + applyTextReplacements, + collectSourceFiles, + getMatrixModuleSpecifierFromDeclarationFile, + renderMatrixImportGroups, + toPosix, +} from './utils/import-rewrites.js'; + +const MATRIX_BOUNDARY_SPECIFIER = '$types/matrix-sdk'; + +function parseArgs(argv) { + let write = false; + const roots = []; + let index = 0; + + while (index < argv.length) { + const arg = argv[index]; + if (arg === '--write') { + write = true; + } else if (arg === '--root' && argv[index + 1]) { + roots.push(argv[index + 1]); + index += 1; + } else if (arg.startsWith('--root=')) { + roots.push(arg.slice('--root='.length)); + } else if (arg === '--help' || arg === '-h') { + console.log( + [ + 'Usage: node scripts/migrate-matrix-sdk-imports.js [--write] [--root ]', + '', + 'Default mode is dry-run.', + '--write Apply changes to files.', + '--root Root directory to scan (repeatable). Default: src', + ].join('\n') + ); + process.exit(0); + } + + index += 1; + } + + return { + write, + roots: roots.length > 0 ? roots : DEFAULT_ROOTS, + }; +} + +function loadProgram(projectRoot) { + const tsconfigPath = path.join(projectRoot, 'tsconfig.web.json'); + const configResult = ts.readConfigFile(tsconfigPath, ts.sys.readFile); + + if (configResult.error) { + const message = ts.flattenDiagnosticMessageText(configResult.error.messageText, '\n'); + throw new Error(`Failed to read tsconfig.web.json: ${message}`); + } + + const parsedConfig = ts.parseJsonConfigFileContent( + configResult.config, + ts.sys, + projectRoot, + undefined, + tsconfigPath + ); + + if (parsedConfig.errors.length > 0) { + const message = parsedConfig.errors + .map((error) => ts.flattenDiagnosticMessageText(error.messageText, '\n')) + .join('\n'); + throw new Error(`Failed to parse tsconfig.web.json:\n${message}`); + } + + return ts.createProgram({ + rootNames: parsedConfig.fileNames, + options: parsedConfig.options, + }); +} + +function isWithinRoots(filePath, rootPaths) { + return rootPaths.some((rootPath) => { + const relativePath = path.relative(rootPath, filePath); + return ( + relativePath === '' || (!relativePath.startsWith('..') && !path.isAbsolute(relativePath)) + ); + }); +} + +function getDeclarationModuleSpecifier(checker, specifier) { + const importedSymbol = checker.getSymbolAtLocation(specifier.name); + if (!importedSymbol) return null; + + const resolvedSymbol = + importedSymbol.flags & ts.SymbolFlags.Alias + ? checker.getAliasedSymbol(importedSymbol) + : importedSymbol; + const declaration = resolvedSymbol.declarations?.[0]; + if (!declaration) return null; + + return getMatrixModuleSpecifierFromDeclarationFile(declaration.getSourceFile().fileName); +} + +function getImportEntry(specifier) { + return { + importedName: specifier.propertyName?.text ?? specifier.name.text, + localName: specifier.name.text, + }; +} + +function buildReplacementText(checker, importDeclaration) { + const importClause = importDeclaration.importClause; + if ( + !importClause || + !importClause.namedBindings || + !ts.isNamedImports(importClause.namedBindings) + ) { + return null; + } + + const groups = new Map(); + + for (const specifier of importClause.namedBindings.elements) { + const moduleSpecifier = getDeclarationModuleSpecifier(checker, specifier); + if (!moduleSpecifier) { + return null; + } + + const group = groups.get(moduleSpecifier) ?? { values: [], types: [] }; + const bucket = importClause.isTypeOnly || specifier.isTypeOnly ? group.types : group.values; + bucket.push(getImportEntry(specifier)); + groups.set(moduleSpecifier, group); + } + + return renderMatrixImportGroups(groups).join('\n'); +} + +function collectReplacements(sourceFile, checker) { + const replacements = []; + + function visit(node) { + if ( + ts.isImportDeclaration(node) && + ts.isStringLiteral(node.moduleSpecifier) && + node.moduleSpecifier.text === MATRIX_BOUNDARY_SPECIFIER + ) { + const replacementText = buildReplacementText(checker, node); + if (replacementText) { + replacements.push({ + start: node.getStart(sourceFile), + end: node.getEnd(), + value: replacementText, + }); + } + } + + ts.forEachChild(node, visit); + } + + visit(sourceFile); + return replacements.sort((left, right) => right.start - left.start); +} + +async function main() { + const projectRoot = process.cwd(); + const { write, roots } = parseArgs(process.argv.slice(2)); + const targetRoots = roots.map((root) => path.resolve(projectRoot, root)); + const sourceFiles = ( + await Promise.all( + targetRoots.map(async (root) => { + try { + const stat = await fs.stat(root); + if (!stat.isDirectory()) return []; + return collectSourceFiles(root); + } catch { + return []; + } + }) + ) + ).flat(); + + const sourceFileSet = new Set(sourceFiles.map((filePath) => path.normalize(filePath))); + const program = loadProgram(projectRoot); + const checker = program.getTypeChecker(); + const { dim, green } = createTextHelpers(); + + const changes = []; + + for (const sourceFile of program.getSourceFiles()) { + const filePath = path.normalize(sourceFile.fileName); + if (!sourceFileSet.has(filePath) || !isWithinRoots(filePath, targetRoots)) continue; + + const replacements = collectReplacements(sourceFile, checker); + if (replacements.length === 0) continue; + + const originalCode = sourceFile.getFullText(); + const updatedCode = applyTextReplacements(originalCode, replacements); + + if (write) { + await fs.writeFile(filePath, updatedCode, 'utf8'); + } + + changes.push({ + file: toPosix(path.relative(projectRoot, filePath)), + replacements: replacements.length, + }); + } + + changes + .sort((left, right) => left.file.localeCompare(right.file)) + .forEach((change) => { + console.log( + `${dim(change.file)}: ${green(`${change.replacements} matrix import rewrite(s)`)}` + ); + }); + + const mode = write ? 'Applied' : 'Dry run'; + console.log(`${mode}: ${changes.length} files.`); + if (!write) { + console.log('Re-run with --write to apply changes.'); + } +} + +main().catch((error) => { + console.error(error instanceof Error ? error.message : String(error)); + process.exit(1); +}); diff --git a/scripts/normalize-imports.js b/scripts/normalize-imports.js index 74f9c4a91..98989a4b6 100644 --- a/scripts/normalize-imports.js +++ b/scripts/normalize-imports.js @@ -4,20 +4,14 @@ import fs from 'node:fs/promises'; import path from 'node:path'; import process from 'node:process'; -import ts from 'typescript'; import { createTextHelpers } from './utils/console-style.js'; - -const DEFAULT_ROOTS = ['src']; -const SKIP_DIRS = new Set(['.git', '.hg', '.svn', 'node_modules', 'dist', 'coverage']); -const SOURCE_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mts', '.cts', '.mjs', '.cjs']); -const MATRIX_IMPORT_BOUNDARY_FILES = new Set([ - path.normalize('src/types/matrix-sdk.ts'), - path.normalize('src/types/matrix-sdk-events.d.ts'), -]); - -function toPosix(inputPath) { - return inputPath.split(path.sep).join('/'); -} +import { + DEFAULT_ROOTS, + collectSourceFiles, + loadAliasMapFromTsconfig, + rewriteSourceImports, + toPosix, +} from './utils/import-rewrites.js'; function parseArgs(argv) { let write = false; @@ -55,190 +49,17 @@ function parseArgs(argv) { }; } -async function loadAliasMap(viteConfigPath, projectRoot) { - const viteConfig = await fs.readFile(viteConfigPath, 'utf8'); - const regex = /(\$[A-Za-z0-9_]+)\s*:\s*path\.resolve\(__dirname,\s*'([^']+)'\s*\)/g; - const aliasMap = []; - let match = regex.exec(viteConfig); - - while (match) { - const alias = match[1]; - const relativePath = match[2]; - aliasMap.push({ - alias, - absolutePath: path.resolve(projectRoot, relativePath), - }); - match = regex.exec(viteConfig); - } - - aliasMap.sort((a, b) => b.absolutePath.length - a.absolutePath.length); - return aliasMap; -} - -async function collectSourceFiles(rootDir) { - const files = []; - - async function walk(currentDir) { - const entries = await fs.readdir(currentDir, { withFileTypes: true }); - await Promise.all( - entries.map(async (entry) => { - if (entry.name.startsWith('.') && entry.name !== '.eslintrc') return; - if (entry.isDirectory()) { - if (SKIP_DIRS.has(entry.name)) return; - await walk(path.join(currentDir, entry.name)); - return; - } - - if (!entry.isFile()) return; - const filePath = path.join(currentDir, entry.name); - const ext = path.extname(entry.name); - if (!SOURCE_EXTENSIONS.has(ext)) return; - files.push(filePath); - }) - ); - } - - await walk(rootDir); - return files; -} - -function splitSpecifier(specifier) { - const match = specifier.match(/^([^?#]+)([?#].*)?$/); - if (!match) { - return { bare: specifier, suffix: '' }; - } - return { - bare: match[1], - suffix: match[2] ?? '', - }; -} - -function findMatchingAlias(absoluteTargetPath, aliases) { - return aliases.find(({ absolutePath }) => { - const rel = path.relative(absolutePath, absoluteTargetPath); - return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel)); - }); -} - -function getRewrittenSpecifier(filePath, specifier, aliases, projectRoot) { - const normalizedFilePath = path.normalize(path.relative(projectRoot, filePath)); - const { bare, suffix } = splitSpecifier(specifier); - - if ( - !MATRIX_IMPORT_BOUNDARY_FILES.has(normalizedFilePath) && - (bare === 'matrix-js-sdk' || bare.startsWith('matrix-js-sdk/')) - ) { - return `$types/matrix-sdk${suffix}`; - } - - if (!/^\.\.(?:\/|$)/.test(bare)) { - return null; - } - - const absoluteTargetPath = path.resolve(path.dirname(filePath), bare); - const matchedAlias = findMatchingAlias(absoluteTargetPath, aliases); - if (!matchedAlias) return null; - - const aliasRelativePath = toPosix(path.relative(matchedAlias.absolutePath, absoluteTargetPath)); - const aliasImport = aliasRelativePath - ? `${matchedAlias.alias}/${aliasRelativePath}` - : matchedAlias.alias; - return `${aliasImport}${suffix}`; -} - -function queueReplacement(sourceFile, literalNode, replacements, aliases, filePath, projectRoot) { - const specifier = literalNode.text; - const rewrittenSpecifier = getRewrittenSpecifier(filePath, specifier, aliases, projectRoot); - if (!rewrittenSpecifier || rewrittenSpecifier === specifier) return; - - replacements.push({ - start: literalNode.getStart(sourceFile) + 1, - end: literalNode.getEnd() - 1, - original: specifier, - value: rewrittenSpecifier, - }); -} - -function rewriteFileImports(filePath, sourceCode, aliases, projectRoot) { - const sourceFile = ts.createSourceFile(filePath, sourceCode, ts.ScriptTarget.Latest, true); - const replacements = []; - - function visit(node) { - if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) { - queueReplacement( - sourceFile, - node.moduleSpecifier, - replacements, - aliases, - filePath, - projectRoot - ); - } else if ( - ts.isExportDeclaration(node) && - node.moduleSpecifier && - ts.isStringLiteral(node.moduleSpecifier) - ) { - queueReplacement( - sourceFile, - node.moduleSpecifier, - replacements, - aliases, - filePath, - projectRoot - ); - } else if (ts.isImportTypeNode(node) && ts.isLiteralTypeNode(node.argument)) { - const { literal } = node.argument; - if (ts.isStringLiteral(literal)) { - queueReplacement(sourceFile, literal, replacements, aliases, filePath, projectRoot); - } - } else if (ts.isCallExpression(node) && node.arguments.length > 0) { - const firstArg = node.arguments[0]; - if (ts.isStringLiteral(firstArg)) { - const isDynamicImport = node.expression.kind === ts.SyntaxKind.ImportKeyword; - const isRequire = ts.isIdentifier(node.expression) && node.expression.text === 'require'; - if (isDynamicImport || isRequire) { - queueReplacement(sourceFile, firstArg, replacements, aliases, filePath, projectRoot); - } - } - } - - ts.forEachChild(node, visit); - } - - visit(sourceFile); - if (replacements.length === 0) { - return { changed: false, updatedCode: sourceCode, replacements: 0 }; - } - - const uniqueReplacements = Array.from( - new Map(replacements.map((r) => [`${r.start}:${r.end}`, r])).values() - ).sort((a, b) => b.start - a.start); - - const updatedCode = uniqueReplacements.reduce( - (code, replacement) => - code.slice(0, replacement.start) + replacement.value + code.slice(replacement.end), - sourceCode - ); - - return { - changed: updatedCode !== sourceCode, - updatedCode, - replacements: uniqueReplacements.length, - edits: uniqueReplacements.map((replacement) => ({ - from: replacement.original, - to: replacement.value, - })), - }; -} - async function main() { const projectRoot = process.cwd(); const { write, roots } = parseArgs(process.argv.slice(2)); - const aliases = await loadAliasMap(path.join(projectRoot, 'vite.config.ts'), projectRoot); + const aliases = await loadAliasMapFromTsconfig( + path.join(projectRoot, 'tsconfig.web.json'), + projectRoot + ); const { dim, red, green } = createTextHelpers(); if (aliases.length === 0) { - throw new Error('No aliases found in vite.config.ts'); + throw new Error('No aliases found in tsconfig.web.json'); } const targetRoots = roots.map((root) => path.resolve(projectRoot, root)); @@ -259,7 +80,7 @@ async function main() { const fileResults = await Promise.all( sourceFiles.map(async (filePath) => { const sourceCode = await fs.readFile(filePath, 'utf8'); - const { changed, updatedCode, replacements, edits } = rewriteFileImports( + const { changed, updatedCode, replacements, edits } = rewriteSourceImports( filePath, sourceCode, aliases, diff --git a/scripts/utils/import-rewrites.js b/scripts/utils/import-rewrites.js new file mode 100644 index 000000000..35ca000ba --- /dev/null +++ b/scripts/utils/import-rewrites.js @@ -0,0 +1,280 @@ +import fs from 'node:fs/promises'; +import path from 'node:path'; + +import ts from 'typescript'; + +export const DEFAULT_ROOTS = ['src']; +export const SKIP_DIRS = new Set(['.git', '.hg', '.svn', 'node_modules', 'dist', 'coverage']); +export const SOURCE_EXTENSIONS = new Set([ + '.ts', + '.tsx', + '.js', + '.jsx', + '.mts', + '.cts', + '.mjs', + '.cjs', +]); +export const MATRIX_IMPORT_BOUNDARY_FILES = new Set([ + path.normalize('src/types/matrix-sdk.ts'), + path.normalize('src/types/matrix-sdk-events.d.ts'), +]); + +export function toPosix(inputPath) { + return inputPath.split(path.sep).join('/'); +} + +function normalizeAliasPattern(pattern) { + return pattern.replace(/\/\*$/, ''); +} + +function getConfigErrorMessage(error) { + return ts.flattenDiagnosticMessageText(error.messageText, '\n'); +} + +export async function loadAliasMapFromTsconfig(tsconfigPath, projectRoot) { + const configResult = ts.readConfigFile(tsconfigPath, ts.sys.readFile); + if (configResult.error) { + throw new Error( + `Failed to read ${path.basename(tsconfigPath)}: ${getConfigErrorMessage(configResult.error)}` + ); + } + + const compilerOptions = configResult.config.compilerOptions ?? {}; + const baseUrl = compilerOptions.baseUrl ?? '.'; + const paths = compilerOptions.paths ?? {}; + + const aliasMap = [ + ...new Map( + Object.entries(paths) + .map(([aliasPattern, targets]) => { + if (!Array.isArray(targets) || targets.length === 0) return null; + + const alias = normalizeAliasPattern(aliasPattern); + const targetPattern = normalizeAliasPattern(targets[0]); + const absolutePath = path.resolve(projectRoot, baseUrl, targetPattern); + + return [`${alias}:${absolutePath}`, { alias, absolutePath }]; + }) + .filter(Boolean) + ).values(), + ]; + + aliasMap.sort((a, b) => b.absolutePath.length - a.absolutePath.length); + return aliasMap; +} + +export async function collectSourceFiles(rootDir) { + const files = []; + + async function walk(currentDir) { + const entries = await fs.readdir(currentDir, { withFileTypes: true }); + await Promise.all( + entries.map(async (entry) => { + if (entry.name.startsWith('.') && entry.name !== '.eslintrc') return; + if (entry.isDirectory()) { + if (SKIP_DIRS.has(entry.name)) return; + await walk(path.join(currentDir, entry.name)); + return; + } + + if (!entry.isFile()) return; + const filePath = path.join(currentDir, entry.name); + if (!SOURCE_EXTENSIONS.has(path.extname(entry.name))) return; + files.push(filePath); + }) + ); + } + + await walk(rootDir); + return files; +} + +function splitSpecifier(specifier) { + const match = specifier.match(/^([^?#]+)([?#].*)?$/); + if (!match) { + return { bare: specifier, suffix: '' }; + } + + return { + bare: match[1], + suffix: match[2] ?? '', + }; +} + +function findMatchingAlias(absoluteTargetPath, aliases) { + return aliases.find(({ absolutePath }) => { + const rel = path.relative(absolutePath, absoluteTargetPath); + return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel)); + }); +} + +function getRewrittenSpecifier(filePath, specifier, aliases, projectRoot) { + const normalizedFilePath = path.normalize(path.relative(projectRoot, filePath)); + const { bare, suffix } = splitSpecifier(specifier); + + if ( + !MATRIX_IMPORT_BOUNDARY_FILES.has(normalizedFilePath) && + (bare === 'matrix-js-sdk' || bare.startsWith('matrix-js-sdk/')) + ) { + return `$types/matrix-sdk${suffix}`; + } + + if (!/^\.\.(?:\/|$)/.test(bare)) { + return null; + } + + const absoluteTargetPath = path.resolve(path.dirname(filePath), bare); + const matchedAlias = findMatchingAlias(absoluteTargetPath, aliases); + if (!matchedAlias) return null; + + const aliasRelativePath = toPosix(path.relative(matchedAlias.absolutePath, absoluteTargetPath)); + const aliasImport = aliasRelativePath + ? `${matchedAlias.alias}/${aliasRelativePath}` + : matchedAlias.alias; + return `${aliasImport}${suffix}`; +} + +function queueReplacement(sourceFile, literalNode, replacements, aliases, filePath, projectRoot) { + const specifier = literalNode.text; + const rewrittenSpecifier = getRewrittenSpecifier(filePath, specifier, aliases, projectRoot); + if (!rewrittenSpecifier || rewrittenSpecifier === specifier) return; + + replacements.push({ + start: literalNode.getStart(sourceFile) + 1, + end: literalNode.getEnd() - 1, + original: specifier, + value: rewrittenSpecifier, + }); +} + +export function applyTextReplacements(sourceCode, replacements) { + return replacements.reduce( + (code, replacement) => + code.slice(0, replacement.start) + replacement.value + code.slice(replacement.end), + sourceCode + ); +} + +export function rewriteSourceImports(filePath, sourceCode, aliases, projectRoot) { + const sourceFile = ts.createSourceFile(filePath, sourceCode, ts.ScriptTarget.Latest, true); + const replacements = []; + + function visit(node) { + if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) { + queueReplacement( + sourceFile, + node.moduleSpecifier, + replacements, + aliases, + filePath, + projectRoot + ); + } else if ( + ts.isExportDeclaration(node) && + node.moduleSpecifier && + ts.isStringLiteral(node.moduleSpecifier) + ) { + queueReplacement( + sourceFile, + node.moduleSpecifier, + replacements, + aliases, + filePath, + projectRoot + ); + } else if (ts.isImportTypeNode(node) && ts.isLiteralTypeNode(node.argument)) { + const { literal } = node.argument; + if (ts.isStringLiteral(literal)) { + queueReplacement(sourceFile, literal, replacements, aliases, filePath, projectRoot); + } + } else if (ts.isCallExpression(node) && node.arguments.length > 0) { + const firstArg = node.arguments[0]; + if (ts.isStringLiteral(firstArg)) { + const isDynamicImport = node.expression.kind === ts.SyntaxKind.ImportKeyword; + const isRequire = ts.isIdentifier(node.expression) && node.expression.text === 'require'; + if (isDynamicImport || isRequire) { + queueReplacement(sourceFile, firstArg, replacements, aliases, filePath, projectRoot); + } + } + } + + ts.forEachChild(node, visit); + } + + visit(sourceFile); + if (replacements.length === 0) { + return { changed: false, updatedCode: sourceCode, replacements: 0, edits: [] }; + } + + const uniqueReplacements = [ + ...new Map( + replacements.map((replacement) => [`${replacement.start}:${replacement.end}`, replacement]) + ).values(), + ].toSorted((a, b) => b.start - a.start); + + const updatedCode = applyTextReplacements(sourceCode, uniqueReplacements); + + return { + changed: updatedCode !== sourceCode, + updatedCode, + replacements: uniqueReplacements.length, + edits: uniqueReplacements.map((replacement) => ({ + from: replacement.original, + to: replacement.value, + })), + }; +} + +function stripDeclarationExtension(relativePath) { + return relativePath + .replace(/\.d\.[cm]?ts$/i, '') + .replace(/\.[cm]?tsx?$/i, '') + .replace(/\.[cm]?js$/i, ''); +} + +export function getMatrixModuleSpecifierFromDeclarationFile(declarationFile) { + const normalizedFile = toPosix(declarationFile); + const marker = '/node_modules/matrix-js-sdk/'; + const markerIndex = normalizedFile.lastIndexOf(marker); + + if (markerIndex === -1) return null; + + const relativePath = normalizedFile.slice(markerIndex + marker.length); + return `matrix-js-sdk/${stripDeclarationExtension(relativePath)}`; +} + +function sortSpecifiers(specifiers) { + return [...specifiers].toSorted((left, right) => + left.importedName.localeCompare(right.importedName) + ); +} + +function formatSpecifier({ importedName, localName }) { + return importedName === localName ? importedName : `${importedName} as ${localName}`; +} + +export function renderMatrixImportGroups(groups) { + const lines = []; + + [...groups.entries()] + .toSorted(([left], [right]) => left.localeCompare(right)) + .forEach(([moduleSpecifier, group]) => { + const valueSpecifiers = sortSpecifiers(group.values); + const typeSpecifiers = sortSpecifiers(group.types); + + if (valueSpecifiers.length > 0) { + lines.push( + `import { ${valueSpecifiers.map(formatSpecifier).join(', ')} } from '${moduleSpecifier}';` + ); + } + + if (typeSpecifiers.length > 0) { + lines.push( + `import type { ${typeSpecifiers.map(formatSpecifier).join(', ')} } from '${moduleSpecifier}';` + ); + } + }); + + return lines; +} diff --git a/src/app/components/editor/output.ts b/src/app/components/editor/output.ts index 383678e1a..15ca5ea34 100644 --- a/src/app/components/editor/output.ts +++ b/src/app/components/editor/output.ts @@ -130,8 +130,9 @@ export const toMatrixCustomHTML = ( // strip nicknames if needed if (opts.stripNickname && opts.nickNameReplacement) { - opts.nickNameReplacement?.keys().forEach((key) => { - const replacement = opts.nickNameReplacement!.get(key) ?? ''; + const { nickNameReplacement } = opts; + [...nickNameReplacement.keys()].forEach((key) => { + const replacement = nickNameReplacement.get(key) ?? ''; line = line.replaceAll(key, replacement); }); } @@ -215,7 +216,7 @@ export const toPlainText = ( if (Text.isText(node)) { if (stripNickname && nickNameReplacement) { let { text } = node; - nickNameReplacement?.keys().forEach((key) => { + [...nickNameReplacement.keys()].forEach((key) => { const replacement = nickNameReplacement.get(key) ?? ''; text = text.replaceAll(key, replacement); }); diff --git a/src/app/pages/Router.tsx b/src/app/pages/Router.tsx index d81890da1..15fecbda9 100644 --- a/src/app/pages/Router.tsx +++ b/src/app/pages/Router.tsx @@ -95,7 +95,10 @@ const getFirstSession = () => { return getFallbackSession(); }; -export const createRouter = (clientConfig: ClientConfig, screenSize: ScreenSize) => { +export const createRouter = ( + clientConfig: ClientConfig, + screenSize: ScreenSize +): ReturnType => { const { hashRouter } = clientConfig; const mobile = screenSize === ScreenSize.Mobile; diff --git a/tsconfig.json b/tsconfig.json index a18b41f91..9535ab48c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,36 +1,15 @@ { - "compilerOptions": { - "sourceMap": true, - "jsx": "react-jsx", - "target": "ES2022", - "module": "ES2022", - "allowJs": true, - "strict": true, - "strictNullChecks": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "baseUrl": ".", - "paths": { - "$hooks/*": ["src/app/hooks/*"], - "$plugins/*": ["src/app/plugins/*"], - "$components/*": ["src/app/components/*"], - "$features/*": ["src/app/features/*"], - "$state/*": ["src/app/state/*"], - "$styles/*": ["src/app/styles/*"], - "$utils/*": ["src/app/utils/*"], - "$pages/*": ["src/app/pages/*"], - "$types/*": ["src/types/*"], - "$public/*": ["public/*"], - "$client/*": ["src/client/*"] - }, - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "noEmit": true, - "resolveJsonModule": true, - "outDir": "dist", - "skipLibCheck": true, - "lib": ["ES2022", "DOM"] + "typeAcquisition": { + "enable": false }, - "exclude": ["node_modules", "dist"], - "include": ["src", "vite.config.ts", "vitest.config.ts"] + "exclude": ["node_modules", "dist", "coverage", "public"], + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.web.json" + } + ] } diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 000000000..5f946f066 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "lib": ["ESNext"], + "types": ["node"], + "allowJs": true, + "checkJs": false, + "strict": true, + "strictNullChecks": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "composite": true, + "noEmit": true, + "tsBuildInfoFile": "./.tsbuildinfo/tsconfig.node.tsbuildinfo" + }, + "include": [ + "build.config.ts", + "eslint.config.js", + "vite.config.ts", + "vitest.config.ts", + "scripts/**/*.js" + ], + "exclude": ["node_modules", "dist", "coverage"] +} diff --git a/tsconfig.web.json b/tsconfig.web.json new file mode 100644 index 000000000..bf24cd67c --- /dev/null +++ b/tsconfig.web.json @@ -0,0 +1,52 @@ +{ + "compilerOptions": { + "jsx": "react-jsx", + "target": "ESNext", + "module": "ESNext", + "lib": ["ESNext", "DOM", "DOM.Iterable"], + "allowJs": true, + "checkJs": false, + "strict": true, + "strictNullChecks": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "composite": true, + "noEmit": true, + "noImplicitAny": true, + "alwaysStrict": true, + "tsBuildInfoFile": "./.tsbuildinfo/tsconfig.web.tsbuildinfo", + "baseUrl": ".", + "paths": { + "$hooks": ["src/app/hooks"], + "$hooks/*": ["src/app/hooks/*"], + "$plugins": ["src/app/plugins"], + "$plugins/*": ["src/app/plugins/*"], + "$components": ["src/app/components"], + "$components/*": ["src/app/components/*"], + "$features": ["src/app/features"], + "$features/*": ["src/app/features/*"], + "$state": ["src/app/state"], + "$state/*": ["src/app/state/*"], + "$styles": ["src/app/styles"], + "$styles/*": ["src/app/styles/*"], + "$utils": ["src/app/utils"], + "$utils/*": ["src/app/utils/*"], + "$pages": ["src/app/pages"], + "$pages/*": ["src/app/pages/*"], + "$generated": ["src/app/generated"], + "$generated/*": ["src/app/generated/*"], + "$types": ["src/types"], + "$types/*": ["src/types/*"], + "$public": ["public"], + "$public/*": ["public/*"], + "$client": ["src/client"], + "$client/*": ["src/client/*"] + } + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts", "src/**/*.js", "src/**/*.jsx"], + "exclude": ["node_modules", "dist", "coverage"] +} diff --git a/vite.config.ts b/vite.config.ts index a130df507..e42303bbc 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -133,19 +133,7 @@ export default defineConfig(({ command }) => ({ IS_RELEASE_TAG: JSON.stringify(isReleaseTag), }, resolve: { - alias: { - $hooks: path.resolve(__dirname, 'src/app/hooks'), - $plugins: path.resolve(__dirname, 'src/app/plugins'), - $components: path.resolve(__dirname, 'src/app/components'), - $features: path.resolve(__dirname, 'src/app/features'), - $state: path.resolve(__dirname, 'src/app/state'), - $styles: path.resolve(__dirname, 'src/app/styles'), - $utils: path.resolve(__dirname, 'src/app/utils'), - $pages: path.resolve(__dirname, 'src/app/pages'), - $types: path.resolve(__dirname, 'src/types'), - $public: path.resolve(__dirname, 'public'), - $client: path.resolve(__dirname, 'src/client'), - }, + tsconfigPaths: true, }, server: { port: 8080, diff --git a/vitest.config.ts b/vitest.config.ts index fedea1151..f5f2dabe6 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,26 +1,13 @@ import { defineConfig } from 'vitest/config'; import react from '@vitejs/plugin-react'; import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin'; -import path from 'path'; // Standalone Vitest config — intentionally excludes Cloudflare, PWA, compression, // and other production-only Vite plugins that don't apply to unit tests. export default defineConfig({ plugins: [react(), vanillaExtractPlugin()], resolve: { - alias: { - $hooks: path.resolve(__dirname, 'src/app/hooks'), - $plugins: path.resolve(__dirname, 'src/app/plugins'), - $components: path.resolve(__dirname, 'src/app/components'), - $features: path.resolve(__dirname, 'src/app/features'), - $state: path.resolve(__dirname, 'src/app/state'), - $styles: path.resolve(__dirname, 'src/app/styles'), - $utils: path.resolve(__dirname, 'src/app/utils'), - $pages: path.resolve(__dirname, 'src/app/pages'), - $types: path.resolve(__dirname, 'src/types'), - $public: path.resolve(__dirname, 'public'), - $client: path.resolve(__dirname, 'src/client'), - }, + tsconfigPaths: true, }, define: { APP_VERSION: JSON.stringify('test'), @@ -31,7 +18,7 @@ export default defineConfig({ environment: 'jsdom', globals: true, setupFiles: ['./src/test/setup.ts'], - include: ['src/**/*.{test,spec}.{ts,tsx}'], + include: ['src/**/*.{test,spec}.{ts,tsx}', 'scripts/**/*.{test,spec}.{js,ts}'], coverage: { provider: 'v8', reporter: ['text', 'html', 'lcov'], From 83119ad433d24f7950be0293ef44004099326dac Mon Sep 17 00:00:00 2001 From: hazre Date: Sat, 28 Mar 2026 17:29:14 +0100 Subject: [PATCH 02/23] fix: make root tsconfig editor-facing --- .github/workflows/cloudflare-web-preview.yml | 4 ++ .github/workflows/sentry-preview-issues.yml | 2 + eslint.config.js | 5 +- package.json | 2 +- scripts/migrate-matrix-sdk-imports.js | 6 +- scripts/normalize-imports.js | 4 +- tsconfig.build.json | 14 +++++ tsconfig.json | 60 ++++++++++++++++---- tsconfig.web.json | 52 ----------------- 9 files changed, 79 insertions(+), 70 deletions(-) create mode 100644 tsconfig.build.json delete mode 100644 tsconfig.web.json diff --git a/.github/workflows/cloudflare-web-preview.yml b/.github/workflows/cloudflare-web-preview.yml index 8b93a4bb9..db6611ff2 100644 --- a/.github/workflows/cloudflare-web-preview.yml +++ b/.github/workflows/cloudflare-web-preview.yml @@ -9,6 +9,8 @@ on: - 'package-lock.json' - 'vite.config.ts' - 'tsconfig.json' + - 'tsconfig.build.json' + - 'tsconfig.node.json' - '.github/workflows/cloudflare-web-preview.yml' - '.github/actions/setup/**' push: @@ -21,6 +23,8 @@ on: - 'package-lock.json' - 'vite.config.ts' - 'tsconfig.json' + - 'tsconfig.build.json' + - 'tsconfig.node.json' - '.github/workflows/cloudflare-web-preview.yml' - '.github/actions/setup/**' diff --git a/.github/workflows/sentry-preview-issues.yml b/.github/workflows/sentry-preview-issues.yml index c81787e74..31d748925 100644 --- a/.github/workflows/sentry-preview-issues.yml +++ b/.github/workflows/sentry-preview-issues.yml @@ -9,6 +9,8 @@ on: - 'package.json' - 'vite.config.ts' - 'tsconfig.json' + - 'tsconfig.build.json' + - 'tsconfig.node.json' workflow_dispatch: inputs: pr_number: diff --git a/eslint.config.js b/eslint.config.js index dc2a2ebc6..27f5642d9 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -111,7 +111,7 @@ const projectOverrides = defineConfig([ 'import-x/resolver-next': [ createTypeScriptImportResolver({ alwaysTryTypes: true, - project: ['tsconfig.web.json', 'tsconfig.node.json'], + project: ['tsconfig.json', 'tsconfig.node.json'], }), ], }, @@ -157,7 +157,8 @@ const projectOverrides = defineConfig([ files: tsFiles, languageOptions: { parserOptions: { - projectService: true, + projectService: false, + project: ['tsconfig.json', 'tsconfig.node.json'], tsconfigRootDir: import.meta.dirname, }, }, diff --git a/package.json b/package.json index 86ea3ff21..8074cbe1c 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "lint:fix": "eslint . --fix", "fmt": "prettier --write .", "fmt:check": "prettier --check .", - "typecheck": "tsc -b", + "typecheck": "tsc -b tsconfig.build.json", "test": "vitest", "test:ui": "vitest --ui", "test:run": "vitest run", diff --git a/scripts/migrate-matrix-sdk-imports.js b/scripts/migrate-matrix-sdk-imports.js index d3417dd20..4bbedacf2 100644 --- a/scripts/migrate-matrix-sdk-imports.js +++ b/scripts/migrate-matrix-sdk-imports.js @@ -56,12 +56,12 @@ function parseArgs(argv) { } function loadProgram(projectRoot) { - const tsconfigPath = path.join(projectRoot, 'tsconfig.web.json'); + const tsconfigPath = path.join(projectRoot, 'tsconfig.json'); const configResult = ts.readConfigFile(tsconfigPath, ts.sys.readFile); if (configResult.error) { const message = ts.flattenDiagnosticMessageText(configResult.error.messageText, '\n'); - throw new Error(`Failed to read tsconfig.web.json: ${message}`); + throw new Error(`Failed to read tsconfig.json: ${message}`); } const parsedConfig = ts.parseJsonConfigFileContent( @@ -76,7 +76,7 @@ function loadProgram(projectRoot) { const message = parsedConfig.errors .map((error) => ts.flattenDiagnosticMessageText(error.messageText, '\n')) .join('\n'); - throw new Error(`Failed to parse tsconfig.web.json:\n${message}`); + throw new Error(`Failed to parse tsconfig.json:\n${message}`); } return ts.createProgram({ diff --git a/scripts/normalize-imports.js b/scripts/normalize-imports.js index 98989a4b6..cd091748e 100644 --- a/scripts/normalize-imports.js +++ b/scripts/normalize-imports.js @@ -53,13 +53,13 @@ async function main() { const projectRoot = process.cwd(); const { write, roots } = parseArgs(process.argv.slice(2)); const aliases = await loadAliasMapFromTsconfig( - path.join(projectRoot, 'tsconfig.web.json'), + path.join(projectRoot, 'tsconfig.json'), projectRoot ); const { dim, red, green } = createTextHelpers(); if (aliases.length === 0) { - throw new Error('No aliases found in tsconfig.web.json'); + throw new Error('No aliases found in tsconfig.json'); } const targetRoots = roots.map((root) => path.resolve(projectRoot, root)); diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 000000000..b08da7b51 --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,14 @@ +{ + "typeAcquisition": { + "enable": false + }, + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.json" + } + ] +} diff --git a/tsconfig.json b/tsconfig.json index 9535ab48c..508446624 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,55 @@ { + "compilerOptions": { + "jsx": "react-jsx", + "target": "ESNext", + "module": "ESNext", + "lib": ["ESNext", "DOM", "DOM.Iterable"], + "allowJs": true, + "checkJs": false, + "strict": true, + "strictNullChecks": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "composite": true, + "noEmit": true, + "noImplicitAny": true, + "alwaysStrict": true, + "tsBuildInfoFile": "./.tsbuildinfo/tsconfig.tsbuildinfo", + "baseUrl": ".", + "paths": { + "$hooks": ["src/app/hooks"], + "$hooks/*": ["src/app/hooks/*"], + "$plugins": ["src/app/plugins"], + "$plugins/*": ["src/app/plugins/*"], + "$components": ["src/app/components"], + "$components/*": ["src/app/components/*"], + "$features": ["src/app/features"], + "$features/*": ["src/app/features/*"], + "$state": ["src/app/state"], + "$state/*": ["src/app/state/*"], + "$styles": ["src/app/styles"], + "$styles/*": ["src/app/styles/*"], + "$utils": ["src/app/utils"], + "$utils/*": ["src/app/utils/*"], + "$pages": ["src/app/pages"], + "$pages/*": ["src/app/pages/*"], + "$generated": ["src/app/generated"], + "$generated/*": ["src/app/generated/*"], + "$types": ["src/types"], + "$types/*": ["src/types/*"], + "$public": ["public"], + "$public/*": ["public/*"], + "$client": ["src/client"], + "$client/*": ["src/client/*"] + } + }, "typeAcquisition": { "enable": false }, - "exclude": ["node_modules", "dist", "coverage", "public"], - "files": [], - "references": [ - { - "path": "./tsconfig.node.json" - }, - { - "path": "./tsconfig.web.json" - } - ] + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts", "src/**/*.js", "src/**/*.jsx"], + "exclude": ["node_modules", "dist", "coverage"] } diff --git a/tsconfig.web.json b/tsconfig.web.json deleted file mode 100644 index bf24cd67c..000000000 --- a/tsconfig.web.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "compilerOptions": { - "jsx": "react-jsx", - "target": "ESNext", - "module": "ESNext", - "lib": ["ESNext", "DOM", "DOM.Iterable"], - "allowJs": true, - "checkJs": false, - "strict": true, - "strictNullChecks": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "composite": true, - "noEmit": true, - "noImplicitAny": true, - "alwaysStrict": true, - "tsBuildInfoFile": "./.tsbuildinfo/tsconfig.web.tsbuildinfo", - "baseUrl": ".", - "paths": { - "$hooks": ["src/app/hooks"], - "$hooks/*": ["src/app/hooks/*"], - "$plugins": ["src/app/plugins"], - "$plugins/*": ["src/app/plugins/*"], - "$components": ["src/app/components"], - "$components/*": ["src/app/components/*"], - "$features": ["src/app/features"], - "$features/*": ["src/app/features/*"], - "$state": ["src/app/state"], - "$state/*": ["src/app/state/*"], - "$styles": ["src/app/styles"], - "$styles/*": ["src/app/styles/*"], - "$utils": ["src/app/utils"], - "$utils/*": ["src/app/utils/*"], - "$pages": ["src/app/pages"], - "$pages/*": ["src/app/pages/*"], - "$generated": ["src/app/generated"], - "$generated/*": ["src/app/generated/*"], - "$types": ["src/types"], - "$types/*": ["src/types/*"], - "$public": ["public"], - "$public/*": ["public/*"], - "$client": ["src/client"], - "$client/*": ["src/client/*"] - } - }, - "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts", "src/**/*.js", "src/**/*.jsx"], - "exclude": ["node_modules", "dist", "coverage"] -} From 08f0234223366374fcf9f2375c05feeab0da762d Mon Sep 17 00:00:00 2001 From: hazre Date: Sun, 29 Mar 2026 15:12:07 +0200 Subject: [PATCH 03/23] chore: simplify tsconfig settings --- .vscode/settings.json | 6 +++++- tsconfig.build.json | 3 --- tsconfig.json | 12 ++++-------- tsconfig.node.json | 4 +--- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 29e56e92a..87d72b7ed 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,11 +1,15 @@ { "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", - "typescript.tsdk": "node_modules/typescript/lib", + "js/ts.tsdk.path": "node_modules/typescript/lib", "[jsonc]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.formatOnSaveMode": "file", + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit" } } diff --git a/tsconfig.build.json b/tsconfig.build.json index b08da7b51..1195be209 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -1,7 +1,4 @@ { - "typeAcquisition": { - "enable": false - }, "files": [], "references": [ { diff --git a/tsconfig.json b/tsconfig.json index 508446624..35f50caf8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,20 +4,19 @@ "target": "ESNext", "module": "ESNext", "lib": ["ESNext", "DOM", "DOM.Iterable"], - "allowJs": true, + "allowJs": false, "checkJs": false, "strict": true, - "strictNullChecks": true, "esModuleInterop": true, - "allowSyntheticDefaultImports": true, "resolveJsonModule": true, "skipLibCheck": true, "moduleResolution": "bundler", "allowImportingTsExtensions": true, "composite": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + // "verbatimModuleSyntax": true, "noEmit": true, - "noImplicitAny": true, - "alwaysStrict": true, "tsBuildInfoFile": "./.tsbuildinfo/tsconfig.tsbuildinfo", "baseUrl": ".", "paths": { @@ -47,9 +46,6 @@ "$client/*": ["src/client/*"] } }, - "typeAcquisition": { - "enable": false - }, "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts", "src/**/*.js", "src/**/*.jsx"], "exclude": ["node_modules", "dist", "coverage"] } diff --git a/tsconfig.node.json b/tsconfig.node.json index 5f946f066..bf9811ea3 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -5,11 +5,9 @@ "lib": ["ESNext"], "types": ["node"], "allowJs": true, - "checkJs": false, + "checkJs": true, "strict": true, - "strictNullChecks": true, "esModuleInterop": true, - "allowSyntheticDefaultImports": true, "resolveJsonModule": true, "skipLibCheck": true, "moduleResolution": "bundler", From a900bada22bdc2923d48b2fe9630ce4daf9eb733 Mon Sep 17 00:00:00 2001 From: hazre Date: Sun, 29 Mar 2026 15:39:54 +0200 Subject: [PATCH 04/23] fix: restore typecheck under nodenext --- scripts/import-rewrites.test.js | 1 + scripts/install-knope.js | 43 +++++++- scripts/migrate-matrix-sdk-imports.js | 68 +++++++++++++ scripts/normalize-imports.js | 20 ++++ scripts/utils/console-style.js | 38 +++++++ scripts/utils/import-rewrites.js | 140 +++++++++++++++++++++++--- src/app/utils/bgColorImg.d.ts | 3 + src/client/secretStorageKeys.d.ts | 8 ++ tsconfig.node.json | 8 +- vite.config.ts | 17 +++- 10 files changed, 325 insertions(+), 21 deletions(-) create mode 100644 src/app/utils/bgColorImg.d.ts create mode 100644 src/client/secretStorageKeys.d.ts diff --git a/scripts/import-rewrites.test.js b/scripts/import-rewrites.test.js index 6b65f2c6d..65348b81f 100644 --- a/scripts/import-rewrites.test.js +++ b/scripts/import-rewrites.test.js @@ -10,6 +10,7 @@ import { rewriteSourceImports, } from './utils/import-rewrites.js'; +/** @type {string[]} */ const tempDirs = []; async function makeTempProject() { diff --git a/scripts/install-knope.js b/scripts/install-knope.js index cbda39e57..4b8d0118a 100644 --- a/scripts/install-knope.js +++ b/scripts/install-knope.js @@ -11,6 +11,11 @@ import { PrefixedLogger, createTextHelpers } from './utils/console-style.js'; const __dirname = dirname(fileURLToPath(import.meta.url)); const VERSION = '0.22.3'; +/** + * @typedef {'linux-x64' | 'linux-arm64' | 'darwin-x64' | 'darwin-arm64' | 'win32-x64'} SupportedTargetKey + */ + +/** @type {Record} */ const TARGETS = { 'linux-x64': 'x86_64-unknown-linux-musl', 'linux-arm64': 'aarch64-unknown-linux-musl', @@ -19,11 +24,19 @@ const TARGETS = { 'win32-x64': 'x86_64-pc-windows-msvc', }; +/** + * @param {string | null | undefined} output + * @returns {string | null} + */ function parseKnopeVersion(output) { const version = output?.trim().replace(/^knope\s+/, ''); return version || null; } +/** + * @param {string} command + * @returns {string | null} + */ function getKnopeVersion(command) { const result = spawnSync(command, ['--version'], { encoding: 'utf8' }); if (result.status !== 0) { @@ -32,17 +45,30 @@ function getKnopeVersion(command) { return parseKnopeVersion(result.stdout); } +/** + * @param {Buffer} buffer + * @returns {string} + */ function readNullTerminatedString(buffer) { const nulIndex = buffer.indexOf(0); const end = nulIndex === -1 ? buffer.length : nulIndex; return buffer.toString('utf8', 0, end); } +/** + * @param {string} entryName + * @returns {string} + */ function getTarBasename(entryName) { const segments = entryName.split('/').filter(Boolean); return segments.at(-1) ?? ''; } +/** + * @param {Buffer} tarBuffer + * @param {string} expectedBasename + * @returns {Buffer} + */ function extractRegularFileFromTar(tarBuffer, expectedBasename) { let offset = 0; const regularEntries = []; @@ -87,6 +113,9 @@ function extractRegularFileFromTar(tarBuffer, expectedBasename) { ); } +/** + * @returns {string | null} + */ function getSystemKnopePath() { const which = spawnSync(process.platform === 'win32' ? 'where' : 'which', ['knope'], { encoding: 'utf8', @@ -102,7 +131,16 @@ function getSystemKnopePath() { ); } +/** + * @param {string} candidatePath + * @param {string} rootPath + * @returns {boolean} + */ function isPathWithin(candidatePath, rootPath) { + /** + * @param {string} value + * @returns {string} + */ const toComparablePath = (value) => { const resolved = resolve(value); return process.platform === 'win32' ? resolved.toLowerCase() : resolved; @@ -120,7 +158,10 @@ if (process.env.GITHUB_ACTIONS && process.env.CI) { process.exit(0); } -const target = TARGETS[`${process.platform}-${process.arch}`]; +const targetKey = `${process.platform}-${process.arch}`; +const target = Object.hasOwn(TARGETS, targetKey) + ? TARGETS[/** @type {SupportedTargetKey} */ (targetKey)] + : undefined; if (!target) { const supported = Object.keys(TARGETS).join(', '); logger.error( diff --git a/scripts/migrate-matrix-sdk-imports.js b/scripts/migrate-matrix-sdk-imports.js index 4bbedacf2..ab0934874 100644 --- a/scripts/migrate-matrix-sdk-imports.js +++ b/scripts/migrate-matrix-sdk-imports.js @@ -19,6 +19,40 @@ import { const MATRIX_BOUNDARY_SPECIFIER = '$types/matrix-sdk'; +/** + * @typedef {{ + * write: boolean; + * roots: string[]; + * }} CliArgs + */ + +/** + * @typedef {{ + * importedName: string; + * localName: string; + * }} ImportEntry + */ + +/** + * @typedef {{ + * values: ImportEntry[]; + * types: ImportEntry[]; + * }} MatrixImportGroup + */ + +/** + * @typedef {{ + * start: number; + * end: number; + * original: string; + * value: string; + * }} Replacement + */ + +/** + * @param {string[]} argv + * @returns {CliArgs} + */ function parseArgs(argv) { let write = false; const roots = []; @@ -55,6 +89,10 @@ function parseArgs(argv) { }; } +/** + * @param {string} projectRoot + * @returns {import('typescript').Program} + */ function loadProgram(projectRoot) { const tsconfigPath = path.join(projectRoot, 'tsconfig.json'); const configResult = ts.readConfigFile(tsconfigPath, ts.sys.readFile); @@ -85,6 +123,11 @@ function loadProgram(projectRoot) { }); } +/** + * @param {string} filePath + * @param {string[]} rootPaths + * @returns {boolean} + */ function isWithinRoots(filePath, rootPaths) { return rootPaths.some((rootPath) => { const relativePath = path.relative(rootPath, filePath); @@ -94,6 +137,11 @@ function isWithinRoots(filePath, rootPaths) { }); } +/** + * @param {import('typescript').TypeChecker} checker + * @param {import('typescript').ImportSpecifier} specifier + * @returns {string | null} + */ function getDeclarationModuleSpecifier(checker, specifier) { const importedSymbol = checker.getSymbolAtLocation(specifier.name); if (!importedSymbol) return null; @@ -108,6 +156,10 @@ function getDeclarationModuleSpecifier(checker, specifier) { return getMatrixModuleSpecifierFromDeclarationFile(declaration.getSourceFile().fileName); } +/** + * @param {import('typescript').ImportSpecifier} specifier + * @returns {ImportEntry} + */ function getImportEntry(specifier) { return { importedName: specifier.propertyName?.text ?? specifier.name.text, @@ -115,6 +167,11 @@ function getImportEntry(specifier) { }; } +/** + * @param {import('typescript').TypeChecker} checker + * @param {import('typescript').ImportDeclaration} importDeclaration + * @returns {string | null} + */ function buildReplacementText(checker, importDeclaration) { const importClause = importDeclaration.importClause; if ( @@ -125,6 +182,7 @@ function buildReplacementText(checker, importDeclaration) { return null; } + /** @type {Map} */ const groups = new Map(); for (const specifier of importClause.namedBindings.elements) { @@ -142,9 +200,18 @@ function buildReplacementText(checker, importDeclaration) { return renderMatrixImportGroups(groups).join('\n'); } +/** + * @param {import('typescript').SourceFile} sourceFile + * @param {import('typescript').TypeChecker} checker + * @returns {Replacement[]} + */ function collectReplacements(sourceFile, checker) { + /** @type {Replacement[]} */ const replacements = []; + /** + * @param {import('typescript').Node} node + */ function visit(node) { if ( ts.isImportDeclaration(node) && @@ -156,6 +223,7 @@ function collectReplacements(sourceFile, checker) { replacements.push({ start: node.getStart(sourceFile), end: node.getEnd(), + original: '', value: replacementText, }); } diff --git a/scripts/normalize-imports.js b/scripts/normalize-imports.js index cd091748e..a8dc36b1c 100644 --- a/scripts/normalize-imports.js +++ b/scripts/normalize-imports.js @@ -13,6 +13,25 @@ import { toPosix, } from './utils/import-rewrites.js'; +/** + * @typedef {{ + * write: boolean; + * roots: string[]; + * }} CliArgs + */ + +/** + * @typedef {{ + * file: string; + * replacements: number; + * edits: { from: string; to: string }[]; + * }} FileResult + */ + +/** + * @param {string[]} argv + * @returns {CliArgs} + */ function parseArgs(argv) { let write = false; const roots = []; @@ -101,6 +120,7 @@ async function main() { }) ); + /** @type {FileResult[]} */ const changedFiles = fileResults.filter((result) => result !== null); const filesChanged = changedFiles.length; const importRewrites = changedFiles.reduce((total, result) => total + result.replacements, 0); diff --git a/scripts/utils/console-style.js b/scripts/utils/console-style.js index 96ed5bf3e..7819168e7 100644 --- a/scripts/utils/console-style.js +++ b/scripts/utils/console-style.js @@ -1,6 +1,17 @@ /* eslint-disable no-console */ import process from 'node:process'; +/** + * @typedef {object} TextHelperOptions + * @property {boolean} [useColor] + */ + +/** + * @typedef {TextHelperOptions & { + * prefixColor?: string; + * }} LoggerOptions + */ + export const ANSI = { reset: '\x1b[0m', red: '\x1b[31m', @@ -14,16 +25,33 @@ export function shouldUseColor() { return Boolean(process.stdout.isTTY); } +/** + * @param {string} text + * @param {string} color + * @param {boolean} enabled + * @returns {string} + */ export function styleText(text, color, enabled) { if (!enabled) return text; return `${color}${text}${ANSI.reset}`; } +/** + * @param {TextHelperOptions} [options] + */ export function createTextHelpers(options = {}) { const useColor = options.useColor ?? shouldUseColor(); + /** + * @param {string} text + * @param {string} color + * @returns {string} + */ const style = (text, color) => styleText(text, color, useColor); + /** @param {string} text */ const dim = (text) => styleText(text, ANSI.dim, useColor); + /** @param {string} text */ const red = (text) => styleText(text, ANSI.red, useColor); + /** @param {string} text */ const green = (text) => styleText(text, ANSI.green, useColor); return { useColor, @@ -35,20 +63,30 @@ export function createTextHelpers(options = {}) { } export class PrefixedLogger { + /** + * @param {string} prefix + * @param {LoggerOptions} [options] + */ constructor(prefix, options = {}) { this.prefix = prefix; this.useColor = options.useColor ?? shouldUseColor(); this.prefixColor = options.prefixColor ?? ANSI.dim; } + /** + * @param {string} message + * @returns {string} + */ withPrefix(message) { return `${styleText(this.prefix, this.prefixColor, this.useColor)} ${message}`; } + /** @param {string} message */ info(message) { console.log(this.withPrefix(message)); } + /** @param {string} message */ error(message) { console.error(this.withPrefix(message)); } diff --git a/scripts/utils/import-rewrites.js b/scripts/utils/import-rewrites.js index 35ca000ba..5f4be69b0 100644 --- a/scripts/utils/import-rewrites.js +++ b/scripts/utils/import-rewrites.js @@ -3,6 +3,36 @@ import path from 'node:path'; import ts from 'typescript'; +/** + * @typedef {{ + * alias: string; + * absolutePath: string; + * }} AliasEntry + */ + +/** + * @typedef {{ + * start: number; + * end: number; + * original: string; + * value: string; + * }} TextReplacement + */ + +/** + * @typedef {{ + * importedName: string; + * localName: string; + * }} MatrixImportSpecifier + */ + +/** + * @typedef {{ + * values: MatrixImportSpecifier[]; + * types: MatrixImportSpecifier[]; + * }} MatrixImportGroup + */ + export const DEFAULT_ROOTS = ['src']; export const SKIP_DIRS = new Set(['.git', '.hg', '.svn', 'node_modules', 'dist', 'coverage']); export const SOURCE_EXTENSIONS = new Set([ @@ -20,18 +50,35 @@ export const MATRIX_IMPORT_BOUNDARY_FILES = new Set([ path.normalize('src/types/matrix-sdk-events.d.ts'), ]); +/** + * @param {string} inputPath + * @returns {string} + */ export function toPosix(inputPath) { return inputPath.split(path.sep).join('/'); } +/** + * @param {string} pattern + * @returns {string} + */ function normalizeAliasPattern(pattern) { return pattern.replace(/\/\*$/, ''); } +/** + * @param {import('typescript').Diagnostic} error + * @returns {string} + */ function getConfigErrorMessage(error) { return ts.flattenDiagnosticMessageText(error.messageText, '\n'); } +/** + * @param {string} tsconfigPath + * @param {string} projectRoot + * @returns {Promise} + */ export async function loadAliasMapFromTsconfig(tsconfigPath, projectRoot) { const configResult = ts.readConfigFile(tsconfigPath, ts.sys.readFile); if (configResult.error) { @@ -44,29 +91,35 @@ export async function loadAliasMapFromTsconfig(tsconfigPath, projectRoot) { const baseUrl = compilerOptions.baseUrl ?? '.'; const paths = compilerOptions.paths ?? {}; - const aliasMap = [ - ...new Map( - Object.entries(paths) - .map(([aliasPattern, targets]) => { - if (!Array.isArray(targets) || targets.length === 0) return null; + /** @type {Map} */ + const aliasEntries = new Map(); + for (const [aliasPattern, targets] of Object.entries(paths)) { + if (!Array.isArray(targets) || targets.length === 0) continue; - const alias = normalizeAliasPattern(aliasPattern); - const targetPattern = normalizeAliasPattern(targets[0]); - const absolutePath = path.resolve(projectRoot, baseUrl, targetPattern); + const alias = normalizeAliasPattern(aliasPattern); + const targetPattern = normalizeAliasPattern(targets[0]); + const absolutePath = path.resolve(projectRoot, baseUrl, targetPattern); + aliasEntries.set(`${alias}:${absolutePath}`, { alias, absolutePath }); + } - return [`${alias}:${absolutePath}`, { alias, absolutePath }]; - }) - .filter(Boolean) - ).values(), - ]; + const aliasMap = [...aliasEntries.values()]; aliasMap.sort((a, b) => b.absolutePath.length - a.absolutePath.length); return aliasMap; } +/** + * @param {string} rootDir + * @returns {Promise} + */ export async function collectSourceFiles(rootDir) { + /** @type {string[]} */ const files = []; + /** + * @param {string} currentDir + * @returns {Promise} + */ async function walk(currentDir) { const entries = await fs.readdir(currentDir, { withFileTypes: true }); await Promise.all( @@ -90,6 +143,10 @@ export async function collectSourceFiles(rootDir) { return files; } +/** + * @param {string} specifier + * @returns {{ bare: string; suffix: string }} + */ function splitSpecifier(specifier) { const match = specifier.match(/^([^?#]+)([?#].*)?$/); if (!match) { @@ -102,6 +159,11 @@ function splitSpecifier(specifier) { }; } +/** + * @param {string} absoluteTargetPath + * @param {AliasEntry[]} aliases + * @returns {AliasEntry | undefined} + */ function findMatchingAlias(absoluteTargetPath, aliases) { return aliases.find(({ absolutePath }) => { const rel = path.relative(absolutePath, absoluteTargetPath); @@ -109,6 +171,13 @@ function findMatchingAlias(absoluteTargetPath, aliases) { }); } +/** + * @param {string} filePath + * @param {string} specifier + * @param {AliasEntry[]} aliases + * @param {string} projectRoot + * @returns {string | null} + */ function getRewrittenSpecifier(filePath, specifier, aliases, projectRoot) { const normalizedFilePath = path.normalize(path.relative(projectRoot, filePath)); const { bare, suffix } = splitSpecifier(specifier); @@ -135,6 +204,14 @@ function getRewrittenSpecifier(filePath, specifier, aliases, projectRoot) { return `${aliasImport}${suffix}`; } +/** + * @param {import('typescript').SourceFile} sourceFile + * @param {import('typescript').StringLiteral} literalNode + * @param {TextReplacement[]} replacements + * @param {AliasEntry[]} aliases + * @param {string} filePath + * @param {string} projectRoot + */ function queueReplacement(sourceFile, literalNode, replacements, aliases, filePath, projectRoot) { const specifier = literalNode.text; const rewrittenSpecifier = getRewrittenSpecifier(filePath, specifier, aliases, projectRoot); @@ -148,6 +225,11 @@ function queueReplacement(sourceFile, literalNode, replacements, aliases, filePa }); } +/** + * @param {string} sourceCode + * @param {TextReplacement[]} replacements + * @returns {string} + */ export function applyTextReplacements(sourceCode, replacements) { return replacements.reduce( (code, replacement) => @@ -156,10 +238,20 @@ export function applyTextReplacements(sourceCode, replacements) { ); } +/** + * @param {string} filePath + * @param {string} sourceCode + * @param {AliasEntry[]} aliases + * @param {string} projectRoot + */ export function rewriteSourceImports(filePath, sourceCode, aliases, projectRoot) { const sourceFile = ts.createSourceFile(filePath, sourceCode, ts.ScriptTarget.Latest, true); + /** @type {TextReplacement[]} */ const replacements = []; + /** + * @param {import('typescript').Node} node + */ function visit(node) { if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) { queueReplacement( @@ -207,6 +299,7 @@ export function rewriteSourceImports(filePath, sourceCode, aliases, projectRoot) return { changed: false, updatedCode: sourceCode, replacements: 0, edits: [] }; } + /** @type {TextReplacement[]} */ const uniqueReplacements = [ ...new Map( replacements.map((replacement) => [`${replacement.start}:${replacement.end}`, replacement]) @@ -226,6 +319,10 @@ export function rewriteSourceImports(filePath, sourceCode, aliases, projectRoot) }; } +/** + * @param {string} relativePath + * @returns {string} + */ function stripDeclarationExtension(relativePath) { return relativePath .replace(/\.d\.[cm]?ts$/i, '') @@ -233,6 +330,10 @@ function stripDeclarationExtension(relativePath) { .replace(/\.[cm]?js$/i, ''); } +/** + * @param {string} declarationFile + * @returns {string | null} + */ export function getMatrixModuleSpecifierFromDeclarationFile(declarationFile) { const normalizedFile = toPosix(declarationFile); const marker = '/node_modules/matrix-js-sdk/'; @@ -244,17 +345,30 @@ export function getMatrixModuleSpecifierFromDeclarationFile(declarationFile) { return `matrix-js-sdk/${stripDeclarationExtension(relativePath)}`; } +/** + * @param {MatrixImportSpecifier[]} specifiers + * @returns {MatrixImportSpecifier[]} + */ function sortSpecifiers(specifiers) { return [...specifiers].toSorted((left, right) => left.importedName.localeCompare(right.importedName) ); } +/** + * @param {MatrixImportSpecifier} specifier + * @returns {string} + */ function formatSpecifier({ importedName, localName }) { return importedName === localName ? importedName : `${importedName} as ${localName}`; } +/** + * @param {Map} groups + * @returns {string[]} + */ export function renderMatrixImportGroups(groups) { + /** @type {string[]} */ const lines = []; [...groups.entries()] diff --git a/src/app/utils/bgColorImg.d.ts b/src/app/utils/bgColorImg.d.ts new file mode 100644 index 000000000..f38db24f9 --- /dev/null +++ b/src/app/utils/bgColorImg.d.ts @@ -0,0 +1,3 @@ +declare function bgColorImg(img: HTMLImageElement): string; + +export default bgColorImg; diff --git a/src/client/secretStorageKeys.d.ts b/src/client/secretStorageKeys.d.ts new file mode 100644 index 000000000..9b14490f6 --- /dev/null +++ b/src/client/secretStorageKeys.d.ts @@ -0,0 +1,8 @@ +import type { CryptoCallbacks } from '$types/matrix-sdk'; + +export function storePrivateKey(keyId: string, privateKey: Uint8Array): void; +export function clearSecretStorageKeys(): void; +export const cryptoCallbacks: Pick< + CryptoCallbacks, + 'getSecretStorageKey' | 'cacheSecretStorageKey' +>; diff --git a/tsconfig.node.json b/tsconfig.node.json index bf9811ea3..8278dad8d 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -1,17 +1,21 @@ { "compilerOptions": { "target": "ESNext", - "module": "ESNext", + "module": "NodeNext", "lib": ["ESNext"], "types": ["node"], "allowJs": true, "checkJs": true, "strict": true, "esModuleInterop": true, + "allowSyntheticDefaultImports": true, "resolveJsonModule": true, "skipLibCheck": true, - "moduleResolution": "bundler", + "moduleResolution": "NodeNext", "allowImportingTsExtensions": true, + "rewriteRelativeImportExtensions": true, + "erasableSyntaxOnly": true, + "verbatimModuleSyntax": true, "composite": true, "noEmit": true, "tsBuildInfoFile": "./.tsbuildinfo/tsconfig.node.tsbuildinfo" diff --git a/vite.config.ts b/vite.config.ts index e42303bbc..c59789218 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,14 +1,16 @@ import { defineConfig } from 'vite'; import type { ViteDevServer, PluginOption } from 'vite'; import { execSync } from 'child_process'; +import type { RollupInjectOptions } from '@rollup/plugin-inject'; import react from '@vitejs/plugin-react'; import svgr from 'vite-plugin-svgr'; import { wasm } from '@rollup/plugin-wasm'; import { viteStaticCopy } from 'vite-plugin-static-copy'; import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin'; import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill'; -import inject from '@rollup/plugin-inject'; -import topLevelAwait from 'vite-plugin-top-level-await'; +import * as injectModule from '@rollup/plugin-inject'; +import * as topLevelAwaitModule from 'vite-plugin-top-level-await'; +import type { Options as TopLevelAwaitOptions } from 'vite-plugin-top-level-await'; import { VitePWA } from 'vite-plugin-pwa'; import { compression, defineAlgorithm } from 'vite-plugin-compression2'; import { constants as zlibConstants } from 'zlib'; @@ -17,7 +19,12 @@ import path from 'path'; import { cloudflare } from '@cloudflare/vite-plugin'; import { createRequire } from 'module'; import { sentryVitePlugin } from '@sentry/vite-plugin'; -import buildConfig from './build.config'; +import buildConfig from './build.config.ts'; + +const inject = injectModule.default as unknown as (options?: RollupInjectOptions) => PluginOption; +const topLevelAwait = topLevelAwaitModule.default as unknown as ( + options?: TopLevelAwaitOptions +) => PluginOption; const packageJson = JSON.parse( fs.readFileSync(path.resolve(__dirname, 'package.json'), 'utf8') @@ -150,7 +157,7 @@ export default defineConfig(({ command }) => ({ // The export name of top-level await promise for each chunk module promiseExportName: '__tla', // The function to generate import names of top-level await promise in each chunk module - promiseImportName: (i) => `__tla_${i}`, + promiseImportName: (i: number) => `__tla_${i}`, }), viteStaticCopy(copyFiles), vanillaExtractPlugin({ identifiers: 'debug' }), @@ -237,7 +244,7 @@ export default defineConfig(({ command }) => ({ sourcemap: true, copyPublicDir: false, rollupOptions: { - plugins: [inject({ Buffer: ['buffer', 'Buffer'] }) as PluginOption], + plugins: [inject({ Buffer: ['buffer', 'Buffer'] })], }, }, })); From 3f6f637ba509cca4b9c44e2087aece07243d558f Mon Sep 17 00:00:00 2001 From: hazre Date: Sun, 29 Mar 2026 15:45:30 +0200 Subject: [PATCH 05/23] chore: enable verbatim module syntax --- src/app/components/AccountDataEditor.tsx | 4 +- src/app/components/ActionUIA.tsx | 4 +- src/app/components/AuthFlowsLoader.tsx | 8 ++-- src/app/components/BackRouteHandler.tsx | 2 +- src/app/components/BackupRestore.tsx | 6 +-- src/app/components/CallEmbedProvider.tsx | 4 +- src/app/components/ClientConfigLoader.tsx | 4 +- src/app/components/ConfirmPasswordMatch.tsx | 2 +- src/app/components/DeviceVerification.tsx | 8 ++-- .../components/DeviceVerificationSetup.tsx | 4 +- .../components/DeviceVerificationStatus.ts | 6 +-- .../components/GlobalKeyboardShortcuts.tsx | 2 +- src/app/components/HexColorPickerPopOut.tsx | 4 +- src/app/components/JoinRulesSwitcher.tsx | 6 +-- src/app/components/ManualVerification.tsx | 6 +-- src/app/components/Modal500.tsx | 2 +- src/app/components/Pdf-viewer/PdfViewer.tsx | 4 +- src/app/components/RenderMessageContent.tsx | 4 +- .../components/RoomNotificationSwitcher.tsx | 4 +- src/app/components/RoomSummaryLoader.tsx | 8 ++-- src/app/components/RoomUnreadProvider.tsx | 4 +- src/app/components/SecretStorage.tsx | 7 +++- src/app/components/ServerConfigsLoader.tsx | 10 +++-- src/app/components/SpecVersionsLoader.tsx | 4 +- .../components/SupportedUIAFlowsLoader.tsx | 4 +- src/app/components/SwipeableChatWrapper.tsx | 2 +- .../components/SwipeableMessageWrapper.tsx | 2 +- .../components/SwipeableOverlayWrapper.tsx | 2 +- src/app/components/UIAFlowOverlay.tsx | 2 +- src/app/components/UseStateProvider.tsx | 2 +- .../components/UserRoomProfileRenderer.tsx | 2 +- .../create-room/AdditionalCreatorInput.tsx | 10 ++--- .../create-room/CreateRoomAccessSelector.tsx | 2 +- .../create-room/CreateRoomAliasInput.tsx | 6 +-- .../create-room/CreateRoomTypeSelector.tsx | 2 +- .../create-room/RoomVersionSelector.tsx | 4 +- src/app/components/create-room/utils.ts | 10 ++--- src/app/components/cutout-card/CutoutCard.tsx | 2 +- src/app/components/editor/Editor.tsx | 16 ++++---- src/app/components/editor/Elements.tsx | 11 +++-- src/app/components/editor/Toolbar.tsx | 8 ++-- .../editor/autocomplete/AutocompleteMenu.tsx | 4 +- .../autocomplete/AutocompleteNotice.tsx | 2 +- .../autocomplete/BaseAutocompleteMenu.tsx | 2 +- .../autocomplete/EmoticonAutocomplete.tsx | 14 +++---- .../autocomplete/RoomMentionAutocomplete.tsx | 10 ++--- .../autocomplete/UserMentionAutocomplete.tsx | 14 ++++--- .../editor/autocomplete/autocompleteQuery.ts | 2 +- src/app/components/editor/input.ts | 30 +++++++------- src/app/components/editor/keyboard.ts | 2 +- src/app/components/editor/output.ts | 6 +-- src/app/components/editor/slate.d.ts | 8 ++-- src/app/components/editor/utils.ts | 23 +++++++---- src/app/components/emoji-board/EmojiBoard.tsx | 22 +++++----- .../emoji-board/components/Group.tsx | 2 +- .../emoji-board/components/Item.tsx | 8 ++-- .../emoji-board/components/Layout.tsx | 2 +- .../emoji-board/components/Preview.tsx | 2 +- .../emoji-board/components/SearchInput.tsx | 2 +- .../emoji-board/components/Sidebar.tsx | 4 +- .../emoji-board/components/Tabs.tsx | 2 +- .../emoji-board/useEmojiGroupIcons.ts | 2 +- .../components/event-history/EventHistory.tsx | 6 +-- .../components/event-readers/EventReaders.tsx | 2 +- .../image-pack-view/ImagePackContent.tsx | 12 +++--- .../image-pack-view/ImagePackView.tsx | 2 +- .../components/image-pack-view/ImageTile.tsx | 6 +-- .../components/image-pack-view/PackMeta.tsx | 4 +- .../image-pack-view/RoomImagePack.tsx | 4 +- .../image-pack-view/UsageSwitcher.tsx | 15 ++++++- .../image-pack-view/UserImagePack.tsx | 2 +- .../components/image-viewer/ImageViewer.tsx | 2 +- src/app/components/info-card/InfoCard.tsx | 4 +- .../invite-user-prompt/InviteUserPrompt.tsx | 10 ++--- .../join-address-prompt/JoinAddressPrompt.tsx | 2 +- .../knock-room-prompt/KnockRoomPrompt.tsx | 4 +- .../leave-room-prompt/LeaveRoomPrompt.tsx | 2 +- .../leave-space-prompt/LeaveSpacePrompt.tsx | 2 +- src/app/components/media/Image.tsx | 2 +- src/app/components/media/MediaControls.tsx | 2 +- src/app/components/media/Video.tsx | 2 +- src/app/components/member-tile/MemberTile.tsx | 4 +- src/app/components/message/FileHeader.tsx | 4 +- .../components/message/MsgTypeRenderers.tsx | 26 ++++++------ src/app/components/message/Reaction.tsx | 2 +- src/app/components/message/RenderBody.tsx | 8 ++-- src/app/components/message/Reply.tsx | 11 +++-- src/app/components/message/Time.tsx | 2 +- .../message/attachment/Attachment.css.ts | 2 +- .../message/content/AudioContent.tsx | 8 ++-- .../message/content/EventContent.tsx | 4 +- .../message/content/FileContent.tsx | 6 +-- .../message/content/ImageContent.tsx | 6 +-- .../message/content/ThumbnailContent.tsx | 4 +- .../message/content/VideoContent.tsx | 8 ++-- src/app/components/message/layout/Bubble.tsx | 4 +- src/app/components/message/layout/Compact.tsx | 2 +- src/app/components/message/layout/Modern.tsx | 2 +- .../components/message/layout/layout.css.ts | 2 +- .../message/modals/MessageDelete.tsx | 4 +- .../message/modals/MessageEditHistory.tsx | 4 +- .../message/modals/MessageForward.tsx | 2 +- .../message/modals/MessageReactions.tsx | 4 +- .../message/modals/MessageReadRecipts.tsx | 4 +- .../message/modals/MessageReport.tsx | 4 +- .../message/modals/MessageSource.tsx | 4 +- .../placeholder/CompactPlaceholder.tsx | 2 +- .../placeholder/DefaultPlaceholder.tsx | 4 +- .../placeholder/LinePlaceholder.css.ts | 6 +-- src/app/components/nav/NavCategory.tsx | 2 +- src/app/components/nav/NavCategoryHeader.tsx | 2 +- src/app/components/nav/NavEmptyLayout.tsx | 2 +- src/app/components/nav/NavItem.tsx | 2 +- src/app/components/nav/NavItemContent.tsx | 2 +- src/app/components/nav/NavItemOptions.tsx | 2 +- src/app/components/nav/styles.css.ts | 14 +++++-- .../NotificationBanner.tsx | 4 +- src/app/components/page/Page.tsx | 2 +- src/app/components/page/style.css.ts | 2 +- .../password-input/PasswordInput.tsx | 2 +- src/app/components/power/PowerSelector.tsx | 6 +-- src/app/components/power/style.css.ts | 2 +- src/app/components/presence/Presence.tsx | 6 +-- .../components/room-avatar/AvatarImage.tsx | 2 +- src/app/components/room-avatar/RoomAvatar.tsx | 4 +- src/app/components/room-card/RoomCard.tsx | 4 +- src/app/components/room-intro/RoomIntro.tsx | 4 +- .../ScrollTopContainer.tsx | 2 +- .../components/sequence-card/SequenceCard.tsx | 4 +- src/app/components/sequence-card/style.css.ts | 2 +- .../components/setting-tile/SettingTile.tsx | 2 +- src/app/components/sidebar/Sidebar.css.ts | 2 +- src/app/components/sidebar/SidebarContent.tsx | 2 +- src/app/components/sidebar/SidebarItem.tsx | 2 +- .../components/sidebar/SidebarUnreadBadge.tsx | 6 ++- .../components/splash-screen/SplashScreen.tsx | 2 +- .../components/stacked-avatar/styles.css.ts | 6 +-- src/app/components/text-viewer/TextViewer.tsx | 2 +- src/app/components/time-date/PickerColumn.tsx | 2 +- src/app/components/uia-stages/DummyStage.tsx | 2 +- src/app/components/uia-stages/EmailStage.tsx | 10 ++--- .../components/uia-stages/PasswordStage.tsx | 4 +- .../components/uia-stages/ReCaptchaStage.tsx | 2 +- .../uia-stages/RegistrationTokenStage.tsx | 4 +- src/app/components/uia-stages/SSOStage.tsx | 2 +- src/app/components/uia-stages/TermsStage.tsx | 2 +- src/app/components/uia-stages/types.ts | 4 +- .../components/unread-badge/UnreadBadge.tsx | 2 +- .../components/upload-board/UploadBoard.tsx | 9 +++- .../upload-card/CompactUploadCardRenderer.tsx | 9 +++- .../components/upload-card/UploadCard.css.ts | 2 +- src/app/components/upload-card/UploadCard.tsx | 2 +- .../upload-card/UploadCardRenderer.tsx | 16 +++++--- .../upload-card/UploadDescriptionEditor.tsx | 6 +-- .../components/url-preview/ClientPreview.tsx | 2 +- .../components/url-preview/UrlPreviewCard.tsx | 2 +- src/app/components/user-avatar/UserAvatar.tsx | 2 +- .../components/user-profile/CreatorChip.tsx | 4 +- src/app/components/user-profile/PowerChip.tsx | 4 +- src/app/components/user-profile/UserChips.tsx | 8 ++-- src/app/components/user-profile/UserHero.tsx | 2 +- .../user-profile/UserRoomProfile.tsx | 10 ++--- .../components/virtualizer/VirtualTile.tsx | 2 +- src/app/features/add-existing/AddExisting.tsx | 12 ++++-- src/app/features/call-status/CallControl.tsx | 2 +- src/app/features/call-status/CallRoomName.tsx | 2 +- src/app/features/call-status/CallStatus.tsx | 2 +- src/app/features/call-status/LiveChip.tsx | 8 ++-- src/app/features/call-status/MemberGlance.tsx | 4 +- .../features/call-status/MemberSpeaking.tsx | 2 +- src/app/features/call/CallControls.tsx | 6 +-- src/app/features/call/CallMemberCard.tsx | 5 ++- .../common-settings/cosmetics/Cosmetics.tsx | 14 +++---- .../developer-tools/DevelopTools.tsx | 4 +- .../developer-tools/SendRoomEvent.tsx | 4 +- .../developer-tools/StateEventEditor.tsx | 6 +-- .../emojis-stickers/EmojisStickers.tsx | 2 +- .../emojis-stickers/RoomPacks.tsx | 10 ++--- .../common-settings/general/RoomAddress.tsx | 6 +-- .../general/RoomEncryption.tsx | 4 +- .../general/RoomHistoryVisibility.tsx | 10 ++--- .../common-settings/general/RoomJoinRules.tsx | 8 ++-- .../common-settings/general/RoomProfile.tsx | 8 ++-- .../common-settings/general/RoomPublish.tsx | 6 +-- .../common-settings/general/RoomUpgrade.tsx | 6 +-- .../common-settings/members/Members.tsx | 14 ++++--- .../permissions/PermissionGroups.tsx | 6 +-- .../common-settings/permissions/Powers.tsx | 8 ++-- .../permissions/PowersEditor.tsx | 18 +++++--- .../common-settings/permissions/types.ts | 2 +- src/app/features/create-chat/CreateChat.tsx | 4 +- src/app/features/create-room/CreateRoom.tsx | 6 +-- .../features/create-room/CreateRoomModal.tsx | 2 +- src/app/features/create-space/CreateSpace.tsx | 6 +-- .../create-space/CreateSpaceModal.tsx | 2 +- src/app/features/lobby/DnD.tsx | 4 +- src/app/features/lobby/HierarchyItemMenu.tsx | 10 ++--- src/app/features/lobby/Lobby.tsx | 22 ++++++---- src/app/features/lobby/LobbyHeader.tsx | 6 +-- src/app/features/lobby/RoomItem.tsx | 6 +-- src/app/features/lobby/SpaceHierarchyItem.tsx | 14 +++---- .../features/lobby/SpaceHierarchyNavItem.tsx | 8 ++-- src/app/features/lobby/SpaceItem.tsx | 8 ++-- src/app/features/lobby/SpaceNavItem.tsx | 6 +-- .../features/message-search/MessageSearch.tsx | 6 +-- .../features/message-search/SearchFilters.tsx | 14 ++++--- .../features/message-search/SearchInput.tsx | 2 +- .../message-search/SearchResultGroup.tsx | 12 +++--- .../message-search/useMessageSearch.ts | 12 +++--- src/app/features/room-nav/RoomNavItem.tsx | 6 +-- src/app/features/room-nav/RoomNavUser.tsx | 4 +- .../features/room-settings/RoomSettings.tsx | 2 +- .../room-settings/RoomSettingsRenderer.tsx | 2 +- .../abbreviations/RoomAbbreviations.tsx | 6 +-- .../permissions/usePermissionItems.ts | 2 +- src/app/features/room/CommandAutocomplete.tsx | 12 +++--- src/app/features/room/MembersDrawer.tsx | 14 ++++--- src/app/features/room/RoomCallButton.tsx | 2 +- src/app/features/room/RoomInput.tsx | 41 +++++++++++-------- .../features/room/RoomInputPlaceholder.tsx | 2 +- src/app/features/room/RoomTimeline.css.ts | 2 +- src/app/features/room/RoomTimeline.tsx | 12 +++--- src/app/features/room/RoomViewFollowing.tsx | 2 +- src/app/features/room/RoomViewHeader.tsx | 8 ++-- src/app/features/room/RoomViewTyping.tsx | 2 +- src/app/features/room/ThreadBrowser.tsx | 12 +++--- src/app/features/room/ThreadDrawer.tsx | 16 ++++---- .../features/room/jump-to-time/JumpToTime.tsx | 6 +-- .../room/message/EncryptedContent.tsx | 4 +- src/app/features/room/message/Message.tsx | 26 ++++++------ .../features/room/message/MessageEditor.tsx | 26 ++++++------ src/app/features/room/message/Reactions.tsx | 5 +-- src/app/features/room/msgContent.ts | 6 +-- .../room/reaction-viewer/ReactionViewer.tsx | 2 +- .../room/room-pin-menu/RoomPinMenu.tsx | 21 ++++++---- .../schedule-send/SchedulePickerDialog.tsx | 4 +- .../schedule-send/ScheduledMessagesList.tsx | 2 +- src/app/features/search/Search.tsx | 14 ++++--- .../Persona/PerMessageProfileEditor.tsx | 4 +- .../Persona/PerMessageProfileOverview.tsx | 2 +- src/app/features/settings/Settings.tsx | 2 +- .../settings/account/AnimalCosmetics.tsx | 2 +- .../features/settings/account/BioEditor.tsx | 6 +-- .../settings/account/IgnoredUserList.tsx | 2 +- src/app/features/settings/account/Profile.tsx | 10 ++--- .../settings/account/PronounEditor.tsx | 4 +- .../settings/account/StatusEditor.tsx | 2 +- .../settings/account/TimezoneEditor.tsx | 2 +- .../features/settings/cosmetics/Cosmetics.tsx | 6 +-- .../features/settings/cosmetics/Themes.tsx | 11 +++-- .../developer-tools/DebugLogViewer.tsx | 17 ++++++-- .../settings/developer-tools/DevelopTools.tsx | 2 +- .../developer-tools/SentrySettings.tsx | 2 +- .../developer-tools/SyncDiagnostics.tsx | 2 +- .../features/settings/devices/DeviceTile.tsx | 4 +- .../features/settings/devices/LocalBackup.tsx | 2 +- .../settings/devices/OtherDevices.tsx | 4 +- .../settings/devices/Verification.tsx | 10 ++--- .../emojis-stickers/EmojisStickers.tsx | 2 +- .../settings/emojis-stickers/GlobalPacks.tsx | 12 +++--- src/app/features/settings/general/General.tsx | 16 ++++---- .../settings/notifications/AllMessages.tsx | 6 +-- .../notifications/KeywordMessages.tsx | 12 ++++-- .../notifications/NotificationLevelsHint.tsx | 15 ++++++- .../NotificationModeSwitcher.tsx | 6 +-- .../notifications/PushNotifications.tsx | 4 +- .../notifications/SpecialMessages.tsx | 6 +-- .../notifications/SystemNotification.tsx | 2 +- src/app/features/space-nav/SpaceNavItem.tsx | 6 +-- .../features/space-settings/SpaceSettings.tsx | 2 +- .../space-settings/SpaceSettingsRenderer.tsx | 2 +- .../permissions/usePermissionItems.ts | 2 +- .../features/widgets/GenericWidgetDriver.ts | 10 ++--- .../features/widgets/IntegrationManager.tsx | 2 +- src/app/features/widgets/WidgetIframe.tsx | 16 +++++--- src/app/features/widgets/WidgetsDrawer.tsx | 6 +-- .../hooks/timeline/useProcessedTimeline.ts | 2 +- src/app/hooks/timeline/useTimelineActions.ts | 12 ++++-- .../timeline/useTimelineEventRenderer.tsx | 28 ++++++------- .../hooks/timeline/useTimelineSync.test.tsx | 2 +- src/app/hooks/timeline/useTimelineSync.ts | 24 +++++++---- src/app/hooks/types.ts | 2 +- src/app/hooks/useAccountData.ts | 2 +- src/app/hooks/useAccountDataCallback.ts | 2 +- src/app/hooks/useAppVisibility.ts | 2 +- src/app/hooks/useAsyncCallback.ts | 9 +++- src/app/hooks/useAsyncSearch.ts | 12 +++--- src/app/hooks/useAuthFlows.ts | 2 +- src/app/hooks/useAuthMetadata.ts | 2 +- src/app/hooks/useAutoDiscoveryInfo.ts | 2 +- src/app/hooks/useCall.ts | 4 +- src/app/hooks/useCallEmbed.ts | 8 ++-- src/app/hooks/useCallSpeakers.ts | 2 +- src/app/hooks/useCapabilities.ts | 2 +- src/app/hooks/useCategoryHandler.ts | 2 +- src/app/hooks/useCommands.ts | 12 +++--- src/app/hooks/useCrossSigning.ts | 2 +- src/app/hooks/useDateFormat.ts | 2 +- src/app/hooks/useDeviceList.ts | 2 +- src/app/hooks/useDeviceVerificationStatus.ts | 2 +- src/app/hooks/useDirectUsers.ts | 2 +- src/app/hooks/useFileDrop.ts | 9 +++- src/app/hooks/useFilePasteHandler.ts | 2 +- src/app/hooks/useGetRoom.ts | 2 +- src/app/hooks/useGroupDMMembers.ts | 2 +- src/app/hooks/useImagePackRooms.ts | 2 +- src/app/hooks/useImagePacks.ts | 6 +-- src/app/hooks/useIntegrationManager.ts | 2 +- src/app/hooks/useKeyBackup.ts | 8 ++-- src/app/hooks/useLivekitSupport.ts | 2 +- src/app/hooks/useLocalRoomSummary.ts | 2 +- src/app/hooks/useMatrixClient.ts | 2 +- src/app/hooks/useMatrixEventRenderer.ts | 2 +- src/app/hooks/useMemberEventParser.tsx | 8 ++-- src/app/hooks/useMemberFilter.ts | 2 +- src/app/hooks/useMemberPowerCompare.ts | 2 +- src/app/hooks/useMemberPowerTag.ts | 10 ++--- src/app/hooks/useMemberSort.ts | 2 +- src/app/hooks/useMembership.ts | 2 +- src/app/hooks/useMentionClickHandler.ts | 4 +- src/app/hooks/useMessageSpacing.ts | 2 +- src/app/hooks/useMutualRooms.ts | 2 +- src/app/hooks/useNickname.ts | 2 +- src/app/hooks/useNotificationMode.ts | 2 +- src/app/hooks/useParsedLoginFlows.ts | 7 +++- src/app/hooks/usePasswordEmail.ts | 6 +-- src/app/hooks/usePerMessageProfile.ts | 4 +- src/app/hooks/usePowerLevelTags.ts | 6 +-- src/app/hooks/usePowerLevels.ts | 2 +- src/app/hooks/usePushRule.ts | 10 ++--- src/app/hooks/useRecentEmoji.ts | 4 +- src/app/hooks/useRegisterEmail.ts | 6 +-- src/app/hooks/useRoom.ts | 2 +- src/app/hooks/useRoomAbbreviations.ts | 4 +- src/app/hooks/useRoomAccountData.ts | 2 +- src/app/hooks/useRoomAliases.ts | 8 +++- src/app/hooks/useRoomCreators.ts | 4 +- src/app/hooks/useRoomCreatorsTag.ts | 2 +- src/app/hooks/useRoomEvent.ts | 6 +-- src/app/hooks/useRoomEventReaders.ts | 2 +- src/app/hooks/useRoomLatestRenderedEvent.ts | 7 +++- src/app/hooks/useRoomMembers.ts | 7 +++- src/app/hooks/useRoomMeta.ts | 7 +++- src/app/hooks/useRoomNavigate.ts | 2 +- src/app/hooks/useRoomPermissions.ts | 6 +-- src/app/hooks/useRoomPinnedEvents.ts | 2 +- src/app/hooks/useRoomState.ts | 6 +-- src/app/hooks/useRoomTypingMembers.ts | 4 +- src/app/hooks/useRoomWidgets.ts | 4 +- .../hooks/useRoomsNotificationPreferences.ts | 4 +- src/app/hooks/useSableCosmetics.ts | 2 +- src/app/hooks/useSecretStorage.ts | 4 +- src/app/hooks/useSessionProfiles.ts | 2 +- src/app/hooks/useSettingsSync.ts | 2 +- src/app/hooks/useSidebarItems.ts | 4 +- src/app/hooks/useSpace.ts | 2 +- src/app/hooks/useSpaceHierarchy.ts | 8 ++-- src/app/hooks/useSpecVersions.ts | 2 +- src/app/hooks/useSpoilerClickHandler.ts | 2 +- src/app/hooks/useStateEvent.ts | 4 +- src/app/hooks/useStateEventCallback.ts | 7 +++- src/app/hooks/useSyncState.ts | 2 +- src/app/hooks/useTextAreaCodeEditor.ts | 4 +- src/app/hooks/useTextAreaIntent.ts | 4 +- src/app/hooks/useTypingStatusUpdater.ts | 2 +- src/app/hooks/useUIAFlows.ts | 2 +- src/app/hooks/useUserPresence.ts | 2 +- src/app/hooks/useUserProfile.ts | 4 +- src/app/hooks/useVerificationRequest.ts | 12 +++--- src/app/i18n.ts | 2 +- src/app/pages/FeatureCheck.tsx | 2 +- src/app/pages/MobileFriendly.tsx | 2 +- src/app/pages/Router.tsx | 4 +- src/app/pages/ThemeManager.tsx | 2 +- src/app/pages/auth/SSOLogin.tsx | 2 +- src/app/pages/auth/ServerPicker.tsx | 10 ++--- src/app/pages/auth/login/Login.tsx | 2 +- .../pages/auth/login/PasswordLoginForm.tsx | 8 ++-- src/app/pages/auth/login/TokenLogin.tsx | 4 +- src/app/pages/auth/login/loginUtil.ts | 9 +++- .../auth/register/PasswordRegisterForm.tsx | 18 ++++---- src/app/pages/auth/register/Register.tsx | 2 +- src/app/pages/auth/register/registerUtil.ts | 10 ++--- .../auth/reset-password/PasswordResetForm.tsx | 8 ++-- .../auth/reset-password/ResetPassword.tsx | 2 +- .../auth/reset-password/resetPasswordUtil.ts | 7 +++- src/app/pages/client/AutoDiscovery.tsx | 4 +- .../pages/client/BackgroundNotifications.tsx | 8 ++-- src/app/pages/client/ClientBindAtoms.ts | 2 +- .../pages/client/ClientInitStorageAtom.tsx | 2 +- src/app/pages/client/ClientLayout.tsx | 2 +- src/app/pages/client/ClientNonUIFeatures.tsx | 4 +- .../ClientRoomsNotificationPreferences.tsx | 2 +- src/app/pages/client/ClientRoot.tsx | 13 ++++-- src/app/pages/client/SidebarNav.tsx | 2 +- src/app/pages/client/SpecVersions.tsx | 2 +- src/app/pages/client/SyncStatus.tsx | 2 +- src/app/pages/client/direct/Direct.tsx | 4 +- src/app/pages/client/direct/RoomProvider.tsx | 2 +- src/app/pages/client/explore/Explore.tsx | 2 +- src/app/pages/client/explore/Server.tsx | 12 +++--- src/app/pages/client/home/Home.tsx | 6 +-- src/app/pages/client/home/RoomProvider.tsx | 2 +- src/app/pages/client/inbox/Invites.tsx | 7 +++- src/app/pages/client/inbox/Notifications.tsx | 18 ++++---- .../client/sidebar/AccountSwitcherTab.tsx | 6 +-- src/app/pages/client/sidebar/CreateTab.tsx | 6 +-- .../pages/client/sidebar/DirectDMsList.tsx | 2 +- src/app/pages/client/sidebar/DirectTab.tsx | 15 ++++++- src/app/pages/client/sidebar/HomeTab.tsx | 15 ++++++- src/app/pages/client/sidebar/SpaceTabs.tsx | 18 ++++---- src/app/pages/client/space/RoomProvider.tsx | 2 +- src/app/pages/client/space/Space.tsx | 12 +++--- src/app/pages/client/space/SpaceProvider.tsx | 2 +- src/app/pages/pathSearchParam.ts | 2 +- src/app/pages/pathUtils.ts | 4 +- src/app/plugins/call/CallControl.ts | 8 +++- src/app/plugins/call/CallEmbed.ts | 16 ++++---- src/app/plugins/call/CallWidgetDriver.ts | 6 +-- src/app/plugins/call/hooks.ts | 10 ++--- src/app/plugins/custom-emoji/ImagePack.ts | 6 +-- .../plugins/custom-emoji/PackImageReader.ts | 4 +- .../plugins/custom-emoji/PackImagesReader.ts | 2 +- .../plugins/custom-emoji/PackMetaReader.ts | 2 +- .../plugins/custom-emoji/imagePackCache.ts | 2 +- src/app/plugins/custom-emoji/types.ts | 2 +- src/app/plugins/custom-emoji/utils.ts | 8 ++-- src/app/plugins/emoji.ts | 2 +- src/app/plugins/markdown/block/parser.ts | 2 +- src/app/plugins/markdown/block/rules.ts | 2 +- src/app/plugins/markdown/block/runner.ts | 2 +- src/app/plugins/markdown/block/type.ts | 2 +- src/app/plugins/markdown/inline/parser.ts | 2 +- src/app/plugins/markdown/inline/rules.ts | 2 +- src/app/plugins/markdown/inline/runner.ts | 4 +- src/app/plugins/markdown/inline/type.ts | 2 +- src/app/plugins/react-custom-html-parser.tsx | 16 ++++---- src/app/plugins/react-prism/ReactPrism.tsx | 2 +- src/app/plugins/recent-emoji.ts | 4 +- src/app/plugins/text-area/Operations.ts | 2 +- src/app/plugins/text-area/TextArea.ts | 2 +- .../plugins/text-area/TextAreaOperations.ts | 4 +- src/app/plugins/text-area/mods/Intent.ts | 4 +- src/app/plugins/utils.ts | 4 +- src/app/plugins/via-servers.ts | 6 +-- src/app/state/backupRestore.ts | 2 +- src/app/state/callEmbed.ts | 2 +- src/app/state/callPreferences.ts | 2 +- src/app/state/closedLobbyCategories.ts | 2 +- src/app/state/closedNavCategories.ts | 2 +- src/app/state/createRoomModal.ts | 2 +- src/app/state/hooks/callPreferences.ts | 2 +- src/app/state/hooks/closedLobbyCategories.ts | 2 +- src/app/state/hooks/closedNavCategories.ts | 2 +- src/app/state/hooks/createRoomModal.ts | 4 +- src/app/state/hooks/createSpaceModal.ts | 2 +- src/app/state/hooks/navToActivePath.ts | 2 +- src/app/state/hooks/openedSidebarFolder.ts | 2 +- src/app/state/hooks/roomList.ts | 6 +-- src/app/state/hooks/roomSettings.ts | 6 ++- src/app/state/hooks/settings.ts | 2 +- src/app/state/hooks/spaceSettings.ts | 6 ++- src/app/state/hooks/unread.ts | 4 +- src/app/state/hooks/useBindAtoms.ts | 2 +- src/app/state/hooks/userRoomProfile.ts | 6 +-- src/app/state/mDirectList.ts | 2 +- src/app/state/modal.ts | 2 +- src/app/state/navToActivePath.ts | 4 +- src/app/state/nicknames.ts | 2 +- src/app/state/openedSidebarFolder.ts | 2 +- src/app/state/room-list/inviteList.ts | 6 +-- src/app/state/room-list/roomList.ts | 4 +- src/app/state/room-list/utils.ts | 6 +-- src/app/state/room/roomInputDrafts.ts | 8 ++-- src/app/state/room/roomToParents.ts | 8 ++-- src/app/state/room/roomToUnread.ts | 18 ++++---- src/app/state/sessions.ts | 2 +- src/app/state/typingMembers.ts | 6 ++- src/app/state/upload.ts | 9 +++- src/app/state/userRoomProfile.ts | 2 +- src/app/styles/ContainerColor.css.ts | 6 +-- .../utils/addStickerToDefaultStickerPack.ts | 6 +-- src/app/utils/common.ts | 2 +- src/app/utils/delayedEvents.ts | 9 ++-- src/app/utils/keyboard.ts | 2 +- src/app/utils/matrix-crypto.ts | 2 +- src/app/utils/matrix-uia.ts | 2 +- src/app/utils/matrix.ts | 18 ++++---- src/app/utils/notifications.ts | 2 +- src/app/utils/room.ts | 30 +++++++------- src/app/utils/sanitize.ts | 2 +- src/app/utils/sendFeedbackToUser.ts | 2 +- src/app/utils/settingsSync.ts | 2 +- src/app/utils/sort.ts | 2 +- src/app/utils/timeline.ts | 2 +- src/client/initMatrix.ts | 16 +++++--- src/client/slidingSync.ts | 10 ++--- src/index.tsx | 2 +- src/types/matrix/common.ts | 4 +- src/types/matrix/room.ts | 2 +- tsconfig.json | 2 +- 501 files changed, 1492 insertions(+), 1215 deletions(-) diff --git a/src/app/components/AccountDataEditor.tsx b/src/app/components/AccountDataEditor.tsx index f8fd8445f..4639bcb73 100644 --- a/src/app/components/AccountDataEditor.tsx +++ b/src/app/components/AccountDataEditor.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { type FormEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Box, Text, @@ -14,7 +14,7 @@ import { Scroll, config, } from 'folds'; -import { MatrixError } from '$types/matrix-sdk'; +import { type MatrixError } from '$types/matrix-sdk'; import { Cursor } from '$plugins/text-area'; import { syntaxErrorPosition } from '$utils/dom'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; diff --git a/src/app/components/ActionUIA.tsx b/src/app/components/ActionUIA.tsx index caffb0329..16d30d73b 100644 --- a/src/app/components/ActionUIA.tsx +++ b/src/app/components/ActionUIA.tsx @@ -1,5 +1,5 @@ -import { ReactNode } from 'react'; -import { AuthDict, AuthType, IAuthData, UIAFlow } from '$types/matrix-sdk'; +import { type ReactNode } from 'react'; +import { type AuthDict, AuthType, type IAuthData, type UIAFlow } from '$types/matrix-sdk'; import { getUIAFlowForStages } from '$utils/matrix-uia'; import { useSupportedUIAFlows, useUIACompleted, useUIAFlow } from '$hooks/useUIAFlows'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/components/AuthFlowsLoader.tsx b/src/app/components/AuthFlowsLoader.tsx index 4ea21b92c..a4af0dd9b 100644 --- a/src/app/components/AuthFlowsLoader.tsx +++ b/src/app/components/AuthFlowsLoader.tsx @@ -1,12 +1,12 @@ -import { ReactNode, useCallback, useEffect, useMemo } from 'react'; -import { MatrixError, createClient } from '$types/matrix-sdk'; +import { type ReactNode, useCallback, useEffect, useMemo } from 'react'; +import { type MatrixError, createClient } from '$types/matrix-sdk'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useAutoDiscoveryInfo } from '$hooks/useAutoDiscoveryInfo'; import { promiseFulfilledResult, promiseRejectedResult } from '$utils/common'; import { - AuthFlows, + type AuthFlows, RegisterFlowStatus, - RegisterFlowsResponse, + type RegisterFlowsResponse, parseRegisterErrResp, } from '$hooks/useAuthFlows'; diff --git a/src/app/components/BackRouteHandler.tsx b/src/app/components/BackRouteHandler.tsx index a6e91bcd1..6ce06352f 100644 --- a/src/app/components/BackRouteHandler.tsx +++ b/src/app/components/BackRouteHandler.tsx @@ -1,4 +1,4 @@ -import { ReactNode, useCallback } from 'react'; +import { type ReactNode, useCallback } from 'react'; import { useSetAtom } from 'jotai'; import { matchPath, useLocation, useNavigate } from 'react-router-dom'; import { diff --git a/src/app/components/BackupRestore.tsx b/src/app/components/BackupRestore.tsx index 78d65dff4..f19a8f298 100644 --- a/src/app/components/BackupRestore.tsx +++ b/src/app/components/BackupRestore.tsx @@ -1,6 +1,6 @@ -import { MouseEventHandler, useCallback, useState } from 'react'; +import { type MouseEventHandler, useCallback, useState } from 'react'; import { useAtom } from 'jotai'; -import { CryptoApi, KeyBackupInfo } from '$types/matrix-sdk'; +import { type CryptoApi, type KeyBackupInfo } from '$types/matrix-sdk'; import { Badge, Box, @@ -14,7 +14,7 @@ import { percent, PopOut, ProgressBar, - RectCords, + type RectCords, Spinner, Text, } from 'folds'; diff --git a/src/app/components/CallEmbedProvider.tsx b/src/app/components/CallEmbedProvider.tsx index fe2f84468..4e88b0217 100644 --- a/src/app/components/CallEmbedProvider.tsx +++ b/src/app/components/CallEmbedProvider.tsx @@ -1,4 +1,4 @@ -import { ReactNode, useCallback, useRef } from 'react'; +import { type ReactNode, useCallback, useRef } from 'react'; import { useAtomValue, useSetAtom } from 'jotai'; import { useAutoJoinCall } from '$hooks/useAutoJoinCall'; import { @@ -9,7 +9,7 @@ import { useCallThemeSync, useCallMemberSoundSync, } from '$hooks/useCallEmbed'; -import { CallEmbed, useClientWidgetApiEvent, ElementWidgetActions } from '$plugins/call'; +import { type CallEmbed, useClientWidgetApiEvent, ElementWidgetActions } from '$plugins/call'; import { callChatAtom, callEmbedAtom } from '$state/callEmbed'; import { useSelectedRoom } from '$hooks/router/useSelectedRoom'; import { ScreenSize, useScreenSizeContext } from '$hooks/useScreenSize'; diff --git a/src/app/components/ClientConfigLoader.tsx b/src/app/components/ClientConfigLoader.tsx index 92af0c149..4c04f1560 100644 --- a/src/app/components/ClientConfigLoader.tsx +++ b/src/app/components/ClientConfigLoader.tsx @@ -1,6 +1,6 @@ -import { ReactNode, useCallback, useEffect, useState } from 'react'; +import { type ReactNode, useCallback, useEffect, useState } from 'react'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; -import { ClientConfig } from '$hooks/useClientConfig'; +import { type ClientConfig } from '$hooks/useClientConfig'; import { trimTrailingSlash } from '$utils/common'; const getClientConfig = async (): Promise => { diff --git a/src/app/components/ConfirmPasswordMatch.tsx b/src/app/components/ConfirmPasswordMatch.tsx index dea228924..a1ea3a5a6 100644 --- a/src/app/components/ConfirmPasswordMatch.tsx +++ b/src/app/components/ConfirmPasswordMatch.tsx @@ -1,4 +1,4 @@ -import { ReactNode, RefObject, useCallback, useRef, useState } from 'react'; +import { type ReactNode, type RefObject, useCallback, useRef, useState } from 'react'; import { useDebounce } from '$hooks/useDebounce'; type ConfirmPasswordMatchProps = { diff --git a/src/app/components/DeviceVerification.tsx b/src/app/components/DeviceVerification.tsx index fa29ae11e..4c718d66e 100644 --- a/src/app/components/DeviceVerification.tsx +++ b/src/app/components/DeviceVerification.tsx @@ -1,11 +1,11 @@ import { - ShowSasCallbacks, + type ShowSasCallbacks, VerificationPhase, - VerificationRequest, - Verifier, + type VerificationRequest, + type Verifier, VerificationMethod, } from '$types/matrix-sdk'; -import { CSSProperties, useCallback, useEffect, useState } from 'react'; +import { type CSSProperties, useCallback, useEffect, useState } from 'react'; import { Box, Button, diff --git a/src/app/components/DeviceVerificationSetup.tsx b/src/app/components/DeviceVerificationSetup.tsx index 78fe8ded2..c020eea50 100644 --- a/src/app/components/DeviceVerificationSetup.tsx +++ b/src/app/components/DeviceVerificationSetup.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, forwardRef, useCallback, useState } from 'react'; +import { type FormEventHandler, forwardRef, useCallback, useState } from 'react'; import { Dialog, Header, @@ -15,7 +15,7 @@ import { } from 'folds'; import FileSaver from 'file-saver'; import to from 'await-to-js'; -import { AuthDict, IAuthData, MatrixError, UIAuthCallback } from '$types/matrix-sdk'; +import { type AuthDict, type IAuthData, MatrixError, type UIAuthCallback } from '$types/matrix-sdk'; import { clearSecretStorageKeys } from '$client/secretStorageKeys'; import { ContainerColor } from '$styles/ContainerColor.css'; import { copyToClipboard } from '$utils/dom'; diff --git a/src/app/components/DeviceVerificationStatus.ts b/src/app/components/DeviceVerificationStatus.ts index f69c64ac9..6a5868125 100644 --- a/src/app/components/DeviceVerificationStatus.ts +++ b/src/app/components/DeviceVerificationStatus.ts @@ -1,8 +1,8 @@ -import { ReactNode } from 'react'; -import { CryptoApi } from '$types/matrix-sdk'; +import { type ReactNode } from 'react'; +import { type CryptoApi } from '$types/matrix-sdk'; import { useDeviceVerificationStatus, - VerificationStatus, + type VerificationStatus, } from '$hooks/useDeviceVerificationStatus'; type DeviceVerificationStatusProps = { diff --git a/src/app/components/GlobalKeyboardShortcuts.tsx b/src/app/components/GlobalKeyboardShortcuts.tsx index 0571e54a4..44daf7fd6 100644 --- a/src/app/components/GlobalKeyboardShortcuts.tsx +++ b/src/app/components/GlobalKeyboardShortcuts.tsx @@ -21,7 +21,7 @@ import { HOME_ROOM_PATH, DIRECT_ROOM_PATH, SPACE_ROOM_PATH } from '$pages/paths' import { getCanonicalAliasOrRoomId } from '$utils/matrix'; import { announce } from '$utils/announce'; import { roomIdToReplyDraftAtomFamily } from '$state/room/roomInputDrafts'; -import { Room } from 'matrix-js-sdk'; +import { type Room } from 'matrix-js-sdk'; export function GlobalKeyboardShortcuts() { const navigate = useNavigate(); diff --git a/src/app/components/HexColorPickerPopOut.tsx b/src/app/components/HexColorPickerPopOut.tsx index 25c5d661b..c111d90dd 100644 --- a/src/app/components/HexColorPickerPopOut.tsx +++ b/src/app/components/HexColorPickerPopOut.tsx @@ -1,6 +1,6 @@ import FocusTrap from 'focus-trap-react'; -import { Box, Button, config, Menu, PopOut, RectCords, Text } from 'folds'; -import { MouseEventHandler, ReactNode, useState } from 'react'; +import { Box, Button, config, Menu, PopOut, type RectCords, Text } from 'folds'; +import { type MouseEventHandler, type ReactNode, useState } from 'react'; import { stopPropagation } from '$utils/keyboard'; type HexColorPickerPopOutProps = { diff --git a/src/app/components/JoinRulesSwitcher.tsx b/src/app/components/JoinRulesSwitcher.tsx index 5b33b397d..e1c1eb05f 100644 --- a/src/app/components/JoinRulesSwitcher.tsx +++ b/src/app/components/JoinRulesSwitcher.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useCallback, useMemo, useState } from 'react'; +import { type MouseEventHandler, useCallback, useMemo, useState } from 'react'; import { config, Box, @@ -6,8 +6,8 @@ import { Text, Icon, Icons, - IconSrc, - RectCords, + type IconSrc, + type RectCords, PopOut, Menu, Button, diff --git a/src/app/components/ManualVerification.tsx b/src/app/components/ManualVerification.tsx index 31903f957..cd087a3f6 100644 --- a/src/app/components/ManualVerification.tsx +++ b/src/app/components/ManualVerification.tsx @@ -1,11 +1,11 @@ -import { MouseEventHandler, ReactNode, useCallback, useState } from 'react'; +import { type MouseEventHandler, type ReactNode, useCallback, useState } from 'react'; import { Box, Text, Chip, Icon, Icons, - RectCords, + type RectCords, PopOut, Menu, config, @@ -13,7 +13,7 @@ import { color, } from 'folds'; import FocusTrap from 'focus-trap-react'; -import { SecretStorageKeyContent } from '$types/matrix/accountData'; +import { type SecretStorageKeyContent } from '$types/matrix/accountData'; import { storePrivateKey } from '$client/secretStorageKeys'; import { stopPropagation } from '$utils/keyboard'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/components/Modal500.tsx b/src/app/components/Modal500.tsx index 260baa6d8..32dcc2c3a 100644 --- a/src/app/components/Modal500.tsx +++ b/src/app/components/Modal500.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import FocusTrap from 'focus-trap-react'; import { Modal, Overlay, OverlayBackdrop, OverlayCenter } from 'folds'; import { stopPropagation } from '$utils/keyboard'; diff --git a/src/app/components/Pdf-viewer/PdfViewer.tsx b/src/app/components/Pdf-viewer/PdfViewer.tsx index 71ab77efb..1667319a9 100644 --- a/src/app/components/Pdf-viewer/PdfViewer.tsx +++ b/src/app/components/Pdf-viewer/PdfViewer.tsx @@ -1,6 +1,6 @@ /* eslint-disable no-param-reassign */ -import { FormEventHandler, MouseEventHandler, useEffect, useRef, useState } from 'react'; +import { type FormEventHandler, type MouseEventHandler, useEffect, useRef, useState } from 'react'; import classNames from 'classnames'; import { Box, @@ -13,7 +13,7 @@ import { Input, Menu, PopOut, - RectCords, + type RectCords, Scroll, Spinner, Text, diff --git a/src/app/components/RenderMessageContent.tsx b/src/app/components/RenderMessageContent.tsx index 6f3617858..5cbbed6fc 100644 --- a/src/app/components/RenderMessageContent.tsx +++ b/src/app/components/RenderMessageContent.tsx @@ -3,8 +3,8 @@ import { MsgType } from '$types/matrix-sdk'; import { testMatrixTo } from '$plugins/matrix-to'; import { useSetting } from '$state/hooks/settings'; import { settingsAtom, CaptionPosition } from '$state/settings'; -import { HTMLReactParserOptions } from 'html-react-parser'; -import { Opts } from 'linkifyjs'; +import { type HTMLReactParserOptions } from 'html-react-parser'; +import { type Opts } from 'linkifyjs'; import { Box, config } from 'folds'; import { AudioContent, diff --git a/src/app/components/RoomNotificationSwitcher.tsx b/src/app/components/RoomNotificationSwitcher.tsx index 0b5c9e383..708373c52 100644 --- a/src/app/components/RoomNotificationSwitcher.tsx +++ b/src/app/components/RoomNotificationSwitcher.tsx @@ -1,5 +1,5 @@ -import { Box, config, Icon, Menu, MenuItem, PopOut, RectCords, Text, toRem } from 'folds'; -import { MouseEventHandler, ReactNode, useMemo, useState } from 'react'; +import { Box, config, Icon, Menu, MenuItem, PopOut, type RectCords, Text, toRem } from 'folds'; +import { type MouseEventHandler, type ReactNode, useMemo, useState } from 'react'; import FocusTrap from 'focus-trap-react'; import { stopPropagation } from '$utils/keyboard'; import { diff --git a/src/app/components/RoomSummaryLoader.tsx b/src/app/components/RoomSummaryLoader.tsx index 93baa5721..0a8fb135e 100644 --- a/src/app/components/RoomSummaryLoader.tsx +++ b/src/app/components/RoomSummaryLoader.tsx @@ -1,9 +1,9 @@ -import { ReactNode, useCallback, useState } from 'react'; -import { MatrixClient, Room, IHierarchyRoom } from '$types/matrix-sdk'; +import { type ReactNode, useCallback, useState } from 'react'; +import { type MatrixClient, type Room, type IHierarchyRoom } from '$types/matrix-sdk'; import { useQuery } from '@tanstack/react-query'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { LocalRoomSummary, useLocalRoomSummary } from '$hooks/useLocalRoomSummary'; -import { AsyncState, AsyncStatus } from '$hooks/useAsyncCallback'; +import { type LocalRoomSummary, useLocalRoomSummary } from '$hooks/useLocalRoomSummary'; +import { type AsyncState, AsyncStatus } from '$hooks/useAsyncCallback'; export type IRoomSummary = Awaited>; diff --git a/src/app/components/RoomUnreadProvider.tsx b/src/app/components/RoomUnreadProvider.tsx index 5a1fc13a6..cfa4d8f66 100644 --- a/src/app/components/RoomUnreadProvider.tsx +++ b/src/app/components/RoomUnreadProvider.tsx @@ -1,5 +1,5 @@ -import { ReactElement } from 'react'; -import { Unread } from '$types/matrix/room'; +import { type ReactElement } from 'react'; +import { type Unread } from '$types/matrix/room'; import { useRoomUnread, useRoomsUnread } from '$state/hooks/unread'; import { roomToUnreadAtom } from '$state/room/roomToUnread'; diff --git a/src/app/components/SecretStorage.tsx b/src/app/components/SecretStorage.tsx index 07b2e15d5..3f8849247 100644 --- a/src/app/components/SecretStorage.tsx +++ b/src/app/components/SecretStorage.tsx @@ -1,7 +1,10 @@ -import { FormEventHandler, useCallback } from 'react'; +import { type FormEventHandler, useCallback } from 'react'; import { Box, Text, Button, Spinner, color } from 'folds'; import { decodeRecoveryKey, deriveRecoveryKeyFromPassphrase } from '$types/matrix-sdk'; -import { SecretStorageKeyContent, SecretStoragePassphraseContent } from '$types/matrix/accountData'; +import { + type SecretStorageKeyContent, + type SecretStoragePassphraseContent, +} from '$types/matrix/accountData'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useAlive } from '$hooks/useAlive'; diff --git a/src/app/components/ServerConfigsLoader.tsx b/src/app/components/ServerConfigsLoader.tsx index 3f7b395e5..7c212d1fd 100644 --- a/src/app/components/ServerConfigsLoader.tsx +++ b/src/app/components/ServerConfigsLoader.tsx @@ -1,8 +1,12 @@ -import { ReactNode, useCallback, useMemo } from 'react'; -import { Capabilities, validateAuthMetadata, ValidatedAuthMetadata } from '$types/matrix-sdk'; +import { type ReactNode, useCallback, useMemo } from 'react'; +import { + type Capabilities, + validateAuthMetadata, + type ValidatedAuthMetadata, +} from '$types/matrix-sdk'; import { AsyncStatus, useAsyncCallbackValue } from '$hooks/useAsyncCallback'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { MediaConfig } from '$hooks/useMediaConfig'; +import { type MediaConfig } from '$hooks/useMediaConfig'; import { promiseFulfilledResult } from '$utils/common'; import { createLogger } from '$utils/debug'; diff --git a/src/app/components/SpecVersionsLoader.tsx b/src/app/components/SpecVersionsLoader.tsx index 2bbbff272..2ac87f5d3 100644 --- a/src/app/components/SpecVersionsLoader.tsx +++ b/src/app/components/SpecVersionsLoader.tsx @@ -1,6 +1,6 @@ -import { ReactNode, useCallback, useEffect, useState } from 'react'; +import { type ReactNode, useCallback, useEffect, useState } from 'react'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; -import { SpecVersions, specVersions } from '../cs-api'; +import { type SpecVersions, specVersions } from '../cs-api'; type SpecVersionsLoaderProps = { baseUrl: string; diff --git a/src/app/components/SupportedUIAFlowsLoader.tsx b/src/app/components/SupportedUIAFlowsLoader.tsx index cd3f81499..4c839600f 100644 --- a/src/app/components/SupportedUIAFlowsLoader.tsx +++ b/src/app/components/SupportedUIAFlowsLoader.tsx @@ -1,5 +1,5 @@ -import { ReactNode } from 'react'; -import { UIAFlow } from '$types/matrix-sdk'; +import { type ReactNode } from 'react'; +import { type UIAFlow } from '$types/matrix-sdk'; import { useSupportedUIAFlows } from '$hooks/useUIAFlows'; export function SupportedUIAFlowsLoader({ diff --git a/src/app/components/SwipeableChatWrapper.tsx b/src/app/components/SwipeableChatWrapper.tsx index 2eba0d011..050fa440c 100644 --- a/src/app/components/SwipeableChatWrapper.tsx +++ b/src/app/components/SwipeableChatWrapper.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { motion, useMotionValue, useSpring } from 'framer-motion'; import { useDrag } from '@use-gesture/react'; import { useAtomValue } from 'jotai'; diff --git a/src/app/components/SwipeableMessageWrapper.tsx b/src/app/components/SwipeableMessageWrapper.tsx index 4b219355c..e697fc24b 100644 --- a/src/app/components/SwipeableMessageWrapper.tsx +++ b/src/app/components/SwipeableMessageWrapper.tsx @@ -1,6 +1,6 @@ import { useMotionValue, useSpring, useTransform, motion } from 'framer-motion'; import { useDrag } from '@use-gesture/react'; -import { ReactNode, useMemo, useState } from 'react'; +import { type ReactNode, useMemo, useState } from 'react'; import { useAtomValue } from 'jotai'; import { config, Icon, Icons } from 'folds'; import { mobileOrTablet } from '$utils/user-agent'; diff --git a/src/app/components/SwipeableOverlayWrapper.tsx b/src/app/components/SwipeableOverlayWrapper.tsx index 15521bb12..0c06de91c 100644 --- a/src/app/components/SwipeableOverlayWrapper.tsx +++ b/src/app/components/SwipeableOverlayWrapper.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { motion, useMotionValue, useSpring } from 'framer-motion'; import { useDrag } from '@use-gesture/react'; import { useAtomValue } from 'jotai'; diff --git a/src/app/components/UIAFlowOverlay.tsx b/src/app/components/UIAFlowOverlay.tsx index 85211a0f0..57ea24be9 100644 --- a/src/app/components/UIAFlowOverlay.tsx +++ b/src/app/components/UIAFlowOverlay.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { Overlay, OverlayBackdrop, diff --git a/src/app/components/UseStateProvider.tsx b/src/app/components/UseStateProvider.tsx index 21e5b3cad..cb62b7903 100644 --- a/src/app/components/UseStateProvider.tsx +++ b/src/app/components/UseStateProvider.tsx @@ -1,4 +1,4 @@ -import { Dispatch, ReactElement, SetStateAction, useState } from 'react'; +import { type Dispatch, type ReactElement, type SetStateAction, useState } from 'react'; type UseStateProviderProps = { initial: T | (() => T); diff --git a/src/app/components/UserRoomProfileRenderer.tsx b/src/app/components/UserRoomProfileRenderer.tsx index 97489d277..f2e0780ae 100644 --- a/src/app/components/UserRoomProfileRenderer.tsx +++ b/src/app/components/UserRoomProfileRenderer.tsx @@ -1,7 +1,7 @@ import { Menu, PopOut, toRem } from 'folds'; import FocusTrap from 'focus-trap-react'; import { useCloseUserRoomProfile, useUserRoomProfileState } from '$state/hooks/userRoomProfile'; -import { UserRoomProfileState } from '$state/userRoomProfile'; +import { type UserRoomProfileState } from '$state/userRoomProfile'; import { useAllJoinedRoomsSet, useGetRoom } from '$hooks/useGetRoom'; import { stopPropagation } from '$utils/keyboard'; import { SpaceProvider } from '$hooks/useSpace'; diff --git a/src/app/components/create-room/AdditionalCreatorInput.tsx b/src/app/components/create-room/AdditionalCreatorInput.tsx index f362122a0..4ef005125 100644 --- a/src/app/components/create-room/AdditionalCreatorInput.tsx +++ b/src/app/components/create-room/AdditionalCreatorInput.tsx @@ -10,7 +10,7 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Scroll, Text, toRem, @@ -18,9 +18,9 @@ import { import { isKeyHotkey } from 'is-hotkey'; import FocusTrap from 'focus-trap-react'; import { - ChangeEventHandler, - KeyboardEventHandler, - MouseEventHandler, + type ChangeEventHandler, + type KeyboardEventHandler, + type MouseEventHandler, useMemo, useState, } from 'react'; @@ -28,7 +28,7 @@ import { getMxIdLocalPart, getMxIdServer, isUserId } from '$utils/matrix'; import { useDirectUsers } from '$hooks/useDirectUsers'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { stopPropagation } from '$utils/keyboard'; -import { useAsyncSearch, UseAsyncSearchOptions } from '$hooks/useAsyncSearch'; +import { useAsyncSearch, type UseAsyncSearchOptions } from '$hooks/useAsyncSearch'; import { highlightText, makeHighlightRegex } from '$plugins/react-custom-html-parser'; import { SettingTile } from '$components/setting-tile'; diff --git a/src/app/components/create-room/CreateRoomAccessSelector.tsx b/src/app/components/create-room/CreateRoomAccessSelector.tsx index 6dd049835..f20c03955 100644 --- a/src/app/components/create-room/CreateRoomAccessSelector.tsx +++ b/src/app/components/create-room/CreateRoomAccessSelector.tsx @@ -1,4 +1,4 @@ -import { Box, Text, Icon, Icons, config, IconSrc } from 'folds'; +import { Box, Text, Icon, Icons, config, type IconSrc } from 'folds'; import { SequenceCard } from '$components/sequence-card'; import { SettingTile } from '$components/setting-tile'; import { CreateRoomAccess } from './types'; diff --git a/src/app/components/create-room/CreateRoomAliasInput.tsx b/src/app/components/create-room/CreateRoomAliasInput.tsx index 0460717a5..570edb0bb 100644 --- a/src/app/components/create-room/CreateRoomAliasInput.tsx +++ b/src/app/components/create-room/CreateRoomAliasInput.tsx @@ -1,6 +1,6 @@ import { - FormEventHandler, - KeyboardEventHandler, + type FormEventHandler, + type KeyboardEventHandler, useCallback, useEffect, useRef, @@ -12,7 +12,7 @@ import { isKeyHotkey } from 'is-hotkey'; import { getMxIdServer } from '$utils/matrix'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { replaceSpaceWithDash } from '$utils/common'; -import { AsyncState, AsyncStatus, useAsync } from '$hooks/useAsyncCallback'; +import { type AsyncState, AsyncStatus, useAsync } from '$hooks/useAsyncCallback'; import { useDebounce } from '$hooks/useDebounce'; export function CreateRoomAliasInput({ disabled }: { disabled?: boolean }) { diff --git a/src/app/components/create-room/CreateRoomTypeSelector.tsx b/src/app/components/create-room/CreateRoomTypeSelector.tsx index 42468a03d..c47bb4f0c 100644 --- a/src/app/components/create-room/CreateRoomTypeSelector.tsx +++ b/src/app/components/create-room/CreateRoomTypeSelector.tsx @@ -1,4 +1,4 @@ -import { Box, Text, Icon, Icons, config, IconSrc } from 'folds'; +import { Box, Text, Icon, Icons, config, type IconSrc } from 'folds'; import { SequenceCard } from '$components/sequence-card'; import { SettingTile } from '$components/setting-tile'; import { BetaNoticeBadge } from '$components/BetaNoticeBadge'; diff --git a/src/app/components/create-room/RoomVersionSelector.tsx b/src/app/components/create-room/RoomVersionSelector.tsx index a86b1d2df..c3d7fe3af 100644 --- a/src/app/components/create-room/RoomVersionSelector.tsx +++ b/src/app/components/create-room/RoomVersionSelector.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useState } from 'react'; +import { type MouseEventHandler, useState } from 'react'; import { Box, Button, @@ -8,7 +8,7 @@ import { Icons, Menu, PopOut, - RectCords, + type RectCords, Text, toRem, } from 'folds'; diff --git a/src/app/components/create-room/utils.ts b/src/app/components/create-room/utils.ts index d03226823..2a47a1b13 100644 --- a/src/app/components/create-room/utils.ts +++ b/src/app/components/create-room/utils.ts @@ -1,11 +1,11 @@ import { - ICreateRoomOpts, - ICreateRoomStateEvent, + type ICreateRoomOpts, + type ICreateRoomStateEvent, JoinRule, - MatrixClient, + type MatrixClient, RestrictedAllowType, - Room, - RoomJoinRulesEventContent, + type Room, + type RoomJoinRulesEventContent, } from '$types/matrix-sdk'; import { RoomType, StateEvent } from '$types/matrix/room'; import { getViaServers } from '$plugins/via-servers'; diff --git a/src/app/components/cutout-card/CutoutCard.tsx b/src/app/components/cutout-card/CutoutCard.tsx index 5a6c2ae3d..24860264f 100644 --- a/src/app/components/cutout-card/CutoutCard.tsx +++ b/src/app/components/cutout-card/CutoutCard.tsx @@ -1,4 +1,4 @@ -import { as, ContainerColor as TContainerColor } from 'folds'; +import { as, type ContainerColor as TContainerColor } from 'folds'; import classNames from 'classnames'; import { ContainerColor } from '$styles/ContainerColor.css'; import * as css from './CutoutCard.css'; diff --git a/src/app/components/editor/Editor.tsx b/src/app/components/editor/Editor.tsx index 7595fd46d..2b6c902b6 100644 --- a/src/app/components/editor/Editor.tsx +++ b/src/app/components/editor/Editor.tsx @@ -1,8 +1,8 @@ /* eslint-disable no-param-reassign */ import { - ClipboardEventHandler, - KeyboardEventHandler, - ReactNode, + type ClipboardEventHandler, + type KeyboardEventHandler, + type ReactNode, forwardRef, useCallback, useEffect, @@ -11,21 +11,21 @@ import { useState, } from 'react'; import { Box, Scroll, Text } from 'folds'; -import { Descendant, Editor, Node, createEditor } from 'slate'; +import { type Descendant, type Editor, Node, createEditor } from 'slate'; import { Slate, Editable, withReact, - RenderLeafProps, - RenderElementProps, - RenderPlaceholderProps, + type RenderLeafProps, + type RenderElementProps, + type RenderPlaceholderProps, ReactEditor, } from 'slate-react'; import { withHistory } from 'slate-history'; import { mobileOrTablet } from '$utils/user-agent'; import { BlockType } from './types'; import { RenderElement, RenderLeaf } from './Elements'; -import { CustomElement } from './slate'; +import { type CustomElement } from './slate'; import * as css from './Editor.css'; import { toggleKeyboardShortcut } from './keyboard'; diff --git a/src/app/components/editor/Elements.tsx b/src/app/components/editor/Elements.tsx index 7e3500810..bdf361788 100644 --- a/src/app/components/editor/Elements.tsx +++ b/src/app/components/editor/Elements.tsx @@ -1,7 +1,7 @@ import { Scroll, Text } from 'folds'; import { - RenderElementProps, - RenderLeafProps, + type RenderElementProps, + type RenderLeafProps, useFocused, useSelected, useSlate, @@ -15,7 +15,12 @@ import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { nicknamesAtom } from '$state/nicknames'; import { BlockType } from './types'; import { getBeginCommand } from './utils'; -import { CommandElement, EmoticonElement, LinkElement, MentionElement } from './slate'; +import { + type CommandElement, + type EmoticonElement, + type LinkElement, + type MentionElement, +} from './slate'; // Put this at the start and end of an inline component to work around this Chromium bug: // https://bugs.chromium.org/p/chromium/issues/detail?id=1249405 diff --git a/src/app/components/editor/Toolbar.tsx b/src/app/components/editor/Toolbar.tsx index 62cd9356a..10c7c21d9 100644 --- a/src/app/components/editor/Toolbar.tsx +++ b/src/app/components/editor/Toolbar.tsx @@ -6,18 +6,18 @@ import { Icon, IconButton, Icons, - IconSrc, + type IconSrc, Line, Menu, PopOut, - RectCords, + type RectCords, Scroll, Text, Tooltip, TooltipProvider, toRem, } from 'folds'; -import { MouseEventHandler, ReactNode, useState } from 'react'; +import { type MouseEventHandler, type ReactNode, useState } from 'react'; import { ReactEditor, useSlate } from 'slate-react'; import { isMacOS } from '$utils/user-agent'; import { KeySymbol } from '$utils/key-symbol'; @@ -25,7 +25,7 @@ import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; import { stopPropagation } from '$utils/keyboard'; import { floatingToolbar } from '$styles/overrides/Composer.css'; -import { HeadingLevel } from './slate'; +import { type HeadingLevel } from './slate'; import { BlockType, MarkType } from './types'; import * as css from './Editor.css'; import { diff --git a/src/app/components/editor/autocomplete/AutocompleteMenu.tsx b/src/app/components/editor/autocomplete/AutocompleteMenu.tsx index fdb4b570d..63091cb29 100644 --- a/src/app/components/editor/autocomplete/AutocompleteMenu.tsx +++ b/src/app/components/editor/autocomplete/AutocompleteMenu.tsx @@ -1,11 +1,11 @@ -import { ReactNode, useEffect, useRef, useState } from 'react'; +import { type ReactNode, useEffect, useRef, useState } from 'react'; import FocusTrap from 'focus-trap-react'; import { isKeyHotkey } from 'is-hotkey'; import { Header, Menu, Scroll, config } from 'folds'; import { preventScrollWithArrowKey, stopPropagation } from '$utils/keyboard'; import { useAlive } from '$hooks/useAlive'; -import { Editor } from 'slate'; +import { type Editor } from 'slate'; import { ReactEditor } from 'slate-react'; import * as css from './AutocompleteMenu.css'; import { BaseAutocompleteMenu } from './BaseAutocompleteMenu'; diff --git a/src/app/components/editor/autocomplete/AutocompleteNotice.tsx b/src/app/components/editor/autocomplete/AutocompleteNotice.tsx index a9b21e8cf..859d8048f 100644 --- a/src/app/components/editor/autocomplete/AutocompleteNotice.tsx +++ b/src/app/components/editor/autocomplete/AutocompleteNotice.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { Header, Menu } from 'folds'; import { BaseAutocompleteMenu } from './BaseAutocompleteMenu'; import * as css from './AutocompleteMenu.css'; diff --git a/src/app/components/editor/autocomplete/BaseAutocompleteMenu.tsx b/src/app/components/editor/autocomplete/BaseAutocompleteMenu.tsx index 9f1bf316f..9d6de8d03 100644 --- a/src/app/components/editor/autocomplete/BaseAutocompleteMenu.tsx +++ b/src/app/components/editor/autocomplete/BaseAutocompleteMenu.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import * as css from './AutocompleteMenu.css'; type BaseAutocompleteMenuProps = { diff --git a/src/app/components/editor/autocomplete/EmoticonAutocomplete.tsx b/src/app/components/editor/autocomplete/EmoticonAutocomplete.tsx index b4c8e8f46..e6317e040 100644 --- a/src/app/components/editor/autocomplete/EmoticonAutocomplete.tsx +++ b/src/app/components/editor/autocomplete/EmoticonAutocomplete.tsx @@ -1,25 +1,25 @@ -import { KeyboardEvent as ReactKeyboardEvent, useEffect, useMemo } from 'react'; -import { Editor } from 'slate'; +import { type KeyboardEvent as ReactKeyboardEvent, useEffect, useMemo } from 'react'; +import { type Editor } from 'slate'; import { ReactEditor } from 'slate-react'; import { Box, MenuItem, Text, toRem } from 'folds'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { UseAsyncSearchOptions, useAsyncSearch } from '$hooks/useAsyncSearch'; +import { type UseAsyncSearchOptions, useAsyncSearch } from '$hooks/useAsyncSearch'; import { onTabPress } from '$utils/keyboard'; import { useRecentEmoji } from '$hooks/useRecentEmoji'; import { useRelevantImagePacks } from '$hooks/useImagePacks'; -import { IEmoji, emojis } from '$plugins/emoji'; +import { type IEmoji, emojis } from '$plugins/emoji'; import { useKeyDown } from '$hooks/useKeyDown'; import { mxcUrlToHttp } from '$utils/matrix'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; -import { ImageUsage, PackImageReader } from '$plugins/custom-emoji'; +import { ImageUsage, type PackImageReader } from '$plugins/custom-emoji'; import { getEmoticonSearchStr } from '$plugins/utils'; import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; import { createEmoticonElement, moveCursor, replaceWithElement } from '$components/editor/utils'; import { AutocompleteMenu } from './AutocompleteMenu'; -import { AutocompleteQuery } from './autocompleteQuery'; +import { type AutocompleteQuery } from './autocompleteQuery'; type EmoticonCompleteHandler = (key: string, shortcode: string) => void; diff --git a/src/app/components/editor/autocomplete/RoomMentionAutocomplete.tsx b/src/app/components/editor/autocomplete/RoomMentionAutocomplete.tsx index 9ad67aad4..d7799d0b9 100644 --- a/src/app/components/editor/autocomplete/RoomMentionAutocomplete.tsx +++ b/src/app/components/editor/autocomplete/RoomMentionAutocomplete.tsx @@ -1,14 +1,14 @@ -import { KeyboardEvent as ReactKeyboardEvent, useCallback, useEffect } from 'react'; -import { Editor } from 'slate'; +import { type KeyboardEvent as ReactKeyboardEvent, useCallback, useEffect } from 'react'; +import { type Editor } from 'slate'; import { ReactEditor } from 'slate-react'; import { Avatar, Icon, Icons, MenuItem, Text } from 'folds'; -import { JoinRule, MatrixClient } from '$types/matrix-sdk'; +import { JoinRule, type MatrixClient } from '$types/matrix-sdk'; import { useAtomValue } from 'jotai'; import { getDirectRoomAvatarUrl } from '$utils/room'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { getMxIdServer, isRoomAlias } from '$utils/matrix'; -import { UseAsyncSearchOptions, useAsyncSearch } from '$hooks/useAsyncSearch'; +import { type UseAsyncSearchOptions, useAsyncSearch } from '$hooks/useAsyncSearch'; import { onTabPress } from '$utils/keyboard'; import { useKeyDown } from '$hooks/useKeyDown'; import { mDirectAtom } from '$state/mDirectList'; @@ -18,7 +18,7 @@ import { RoomAvatar, RoomIcon } from '$components/room-avatar'; import { getViaServers } from '$plugins/via-servers'; import { createMentionElement, moveCursor, replaceWithElement } from '$components/editor/utils'; import { AutocompleteMenu } from './AutocompleteMenu'; -import { AutocompleteQuery } from './autocompleteQuery'; +import { type AutocompleteQuery } from './autocompleteQuery'; type MentionAutoCompleteHandler = (roomAliasOrId: string, name: string) => void; diff --git a/src/app/components/editor/autocomplete/UserMentionAutocomplete.tsx b/src/app/components/editor/autocomplete/UserMentionAutocomplete.tsx index e38838070..afd1c909d 100644 --- a/src/app/components/editor/autocomplete/UserMentionAutocomplete.tsx +++ b/src/app/components/editor/autocomplete/UserMentionAutocomplete.tsx @@ -1,12 +1,16 @@ -import { useEffect, KeyboardEvent as ReactKeyboardEvent } from 'react'; -import { Editor } from 'slate'; +import { useEffect, type KeyboardEvent as ReactKeyboardEvent } from 'react'; +import { type Editor } from 'slate'; import { ReactEditor } from 'slate-react'; import { Avatar, Icon, Icons, MenuItem, Text } from 'folds'; -import { MatrixClient, Room, RoomMember } from '$types/matrix-sdk'; +import { type MatrixClient, type Room, type RoomMember } from '$types/matrix-sdk'; import { useRoomMembers } from '$hooks/useRoomMembers'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { SearchItemStrGetter, UseAsyncSearchOptions, useAsyncSearch } from '$hooks/useAsyncSearch'; +import { + type SearchItemStrGetter, + type UseAsyncSearchOptions, + useAsyncSearch, +} from '$hooks/useAsyncSearch'; import { onTabPress } from '$utils/keyboard'; import { useKeyDown } from '$hooks/useKeyDown'; import { getMxIdLocalPart, getMxIdServer, isUserId } from '$utils/matrix'; @@ -18,7 +22,7 @@ import { useAtomValue } from 'jotai'; import { nicknamesAtom } from '$state/nicknames'; import { createMentionElement, moveCursor, replaceWithElement } from '$components/editor/utils'; import { AutocompleteMenu } from './AutocompleteMenu'; -import { AutocompleteQuery } from './autocompleteQuery'; +import { type AutocompleteQuery } from './autocompleteQuery'; type MentionAutoCompleteHandler = (userId: string, name: string) => void; diff --git a/src/app/components/editor/autocomplete/autocompleteQuery.ts b/src/app/components/editor/autocomplete/autocompleteQuery.ts index 5b8294afb..b1c86df9c 100644 --- a/src/app/components/editor/autocomplete/autocompleteQuery.ts +++ b/src/app/components/editor/autocomplete/autocompleteQuery.ts @@ -1,4 +1,4 @@ -import { BaseRange, Editor } from 'slate'; +import { type BaseRange, Editor } from 'slate'; export enum AutocompletePrefix { RoomMention = '#', diff --git a/src/app/components/editor/input.ts b/src/app/components/editor/input.ts index 27a6b68fc..8a919ab84 100644 --- a/src/app/components/editor/input.ts +++ b/src/app/components/editor/input.ts @@ -1,6 +1,6 @@ -import { Descendant, Text } from 'slate'; +import { type Descendant, Text } from 'slate'; import parse from 'html-dom-parser'; -import { ChildNode, Element, isText, isTag } from 'domhandler'; +import { type ChildNode, type Element, isText, isTag } from 'domhandler'; import { sanitizeCustomHtml } from '$utils/sanitize'; import { @@ -12,19 +12,19 @@ import { import { escapeMarkdownInlineSequences, escapeMarkdownBlockSequences } from '$plugins/markdown'; import { BlockType, MarkType } from './types'; import { - BlockQuoteElement, - CodeBlockElement, - CodeLineElement, - EmoticonElement, - HeadingElement, - HeadingLevel, - HorizontalRuleElement, - InlineElement, - MentionElement, - OrderedListElement, - ParagraphElement, - SmallElement, - UnorderedListElement, + type BlockQuoteElement, + type CodeBlockElement, + type CodeLineElement, + type EmoticonElement, + type HeadingElement, + type HeadingLevel, + type HorizontalRuleElement, + type InlineElement, + type MentionElement, + type OrderedListElement, + type ParagraphElement, + type SmallElement, + type UnorderedListElement, } from './slate'; import { createEmoticonElement, createMentionElement } from './utils'; diff --git a/src/app/components/editor/keyboard.ts b/src/app/components/editor/keyboard.ts index a920a9050..ff9c796ed 100644 --- a/src/app/components/editor/keyboard.ts +++ b/src/app/components/editor/keyboard.ts @@ -1,5 +1,5 @@ import { isKeyHotkey } from 'is-hotkey'; -import { KeyboardEvent } from 'react'; +import { type KeyboardEvent } from 'react'; import { Editor, Element as SlateElement, Range, Transforms } from 'slate'; import { isAnyMarkActive, isBlockActive, removeAllMark, toggleBlock, toggleMark } from './utils'; import { BlockType, MarkType } from './types'; diff --git a/src/app/components/editor/output.ts b/src/app/components/editor/output.ts index 15ca5ea34..2e21b4b61 100644 --- a/src/app/components/editor/output.ts +++ b/src/app/components/editor/output.ts @@ -1,5 +1,5 @@ -import { Descendant, Editor, Text } from 'slate'; -import { MatrixClient } from '$types/matrix-sdk'; +import { type Descendant, type Editor, Text } from 'slate'; +import { type MatrixClient } from '$types/matrix-sdk'; import { sanitizeText } from '$utils/sanitize'; import { parseBlockMD, @@ -10,7 +10,7 @@ import { import { findAndReplace } from '$utils/findAndReplace'; import { sanitizeForRegex } from '$utils/regex'; import { isUserId } from '$utils/matrix'; -import { CustomElement } from './slate'; +import { type CustomElement } from './slate'; import { BlockType } from './types'; export type OutputOptions = { diff --git a/src/app/components/editor/slate.d.ts b/src/app/components/editor/slate.d.ts index 81d690fbc..255c459ae 100644 --- a/src/app/components/editor/slate.d.ts +++ b/src/app/components/editor/slate.d.ts @@ -1,7 +1,7 @@ -import { BaseEditor } from 'slate'; -import { ReactEditor } from 'slate-react'; -import { HistoryEditor } from 'slate-history'; -import { BlockType } from './types'; +import { type BaseEditor } from 'slate'; +import { type ReactEditor } from 'slate-react'; +import { type HistoryEditor } from 'slate-history'; +import { type BlockType } from './types'; export type HeadingLevel = 1 | 2 | 3; diff --git a/src/app/components/editor/utils.ts b/src/app/components/editor/utils.ts index 85ff437a1..de3928e89 100644 --- a/src/app/components/editor/utils.ts +++ b/src/app/components/editor/utils.ts @@ -1,12 +1,21 @@ -import { BasePoint, BaseRange, Editor, Element, Point, Range, Text, Transforms } from 'slate'; +import { + type BasePoint, + type BaseRange, + Editor, + Element, + Point, + Range, + Text, + Transforms, +} from 'slate'; import { BlockType, MarkType } from './types'; import { - CommandElement, - EmoticonElement, - FormattedText, - HeadingLevel, - LinkElement, - MentionElement, + type CommandElement, + type EmoticonElement, + type FormattedText, + type HeadingLevel, + type LinkElement, + type MentionElement, } from './slate'; const ALL_MARK_TYPE: MarkType[] = [ diff --git a/src/app/components/emoji-board/EmojiBoard.tsx b/src/app/components/emoji-board/EmojiBoard.tsx index 193caf71d..ce43c387c 100644 --- a/src/app/components/emoji-board/EmojiBoard.tsx +++ b/src/app/components/emoji-board/EmojiBoard.tsx @@ -1,9 +1,9 @@ import { - ChangeEventHandler, - FocusEventHandler, - MouseEventHandler, - ReactNode, - RefObject, + type ChangeEventHandler, + type FocusEventHandler, + type MouseEventHandler, + type ReactNode, + type RefObject, useCallback, useEffect, useMemo, @@ -12,22 +12,22 @@ import { import { Box, config, Icons, Scroll } from 'folds'; import FocusTrap from 'focus-trap-react'; import { isKeyHotkey } from 'is-hotkey'; -import { Room } from '$types/matrix-sdk'; -import { atom, PrimitiveAtom, useAtom, useSetAtom } from 'jotai'; +import { type Room } from '$types/matrix-sdk'; +import { atom, type PrimitiveAtom, useAtom, useSetAtom } from 'jotai'; import { useVirtualizer } from '@tanstack/react-virtual'; -import { IEmoji, emojiGroups, emojis } from '$plugins/emoji'; +import { type IEmoji, emojiGroups, emojis } from '$plugins/emoji'; import { preventScrollWithArrowKey, stopPropagation } from '$utils/keyboard'; import { useRelevantImagePacks } from '$hooks/useImagePacks'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useRecentEmoji } from '$hooks/useRecentEmoji'; import { isUserId, mxcUrlToHttp } from '$utils/matrix'; import { editableActiveElement, targetFromEvent } from '$utils/dom'; -import { useAsyncSearch, UseAsyncSearchOptions } from '$hooks/useAsyncSearch'; +import { useAsyncSearch, type UseAsyncSearchOptions } from '$hooks/useAsyncSearch'; import { useDebounce } from '$hooks/useDebounce'; import { useThrottle } from '$hooks/useThrottle'; import { addRecentEmoji } from '$plugins/recent-emoji'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; -import { ImagePack, ImageUsage, PackImageReader } from '$plugins/custom-emoji'; +import { type ImagePack, ImageUsage, type PackImageReader } from '$plugins/custom-emoji'; import { getEmoticonSearchStr } from '$plugins/utils'; import { VirtualTile } from '$components/virtualizer'; import { useSetting } from '$state/hooks/settings'; @@ -43,7 +43,7 @@ import { NoStickerPacks, createPreviewDataAtom, Preview, - PreviewData, + type PreviewData, EmojiItem, StickerItem, CustomEmojiItem, diff --git a/src/app/components/emoji-board/components/Group.tsx b/src/app/components/emoji-board/components/Group.tsx index 293ac6145..97836e9d7 100644 --- a/src/app/components/emoji-board/components/Group.tsx +++ b/src/app/components/emoji-board/components/Group.tsx @@ -1,5 +1,5 @@ import { as, Box, Text } from 'folds'; -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import classNames from 'classnames'; import * as css from './styles.css'; diff --git a/src/app/components/emoji-board/components/Item.tsx b/src/app/components/emoji-board/components/Item.tsx index c593b5db0..895316d18 100644 --- a/src/app/components/emoji-board/components/Item.tsx +++ b/src/app/components/emoji-board/components/Item.tsx @@ -1,9 +1,9 @@ import { Box } from 'folds'; -import { MatrixClient } from '$types/matrix-sdk'; -import { PackImageReader } from '$plugins/custom-emoji'; -import { IEmoji } from '$plugins/emoji'; +import { type MatrixClient } from '$types/matrix-sdk'; +import { type PackImageReader } from '$plugins/custom-emoji'; +import { type IEmoji } from '$plugins/emoji'; import { mxcUrlToHttp } from '$utils/matrix'; -import { EmojiItemInfo, EmojiType } from '$components/emoji-board/types'; +import { type EmojiItemInfo, EmojiType } from '$components/emoji-board/types'; import * as css from './styles.css'; const ANIMATED_MIME_TYPES = new Set(['image/gif', 'image/apng']); diff --git a/src/app/components/emoji-board/components/Layout.tsx b/src/app/components/emoji-board/components/Layout.tsx index 286006896..8453f494b 100644 --- a/src/app/components/emoji-board/components/Layout.tsx +++ b/src/app/components/emoji-board/components/Layout.tsx @@ -1,5 +1,5 @@ import { as, Box, Line } from 'folds'; -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import classNames from 'classnames'; import * as css from './styles.css'; diff --git a/src/app/components/emoji-board/components/Preview.tsx b/src/app/components/emoji-board/components/Preview.tsx index 1f7cef289..65444a1cf 100644 --- a/src/app/components/emoji-board/components/Preview.tsx +++ b/src/app/components/emoji-board/components/Preview.tsx @@ -1,5 +1,5 @@ import { Box, Text } from 'folds'; -import { Atom, atom, useAtomValue } from 'jotai'; +import { type Atom, atom, useAtomValue } from 'jotai'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { mxcUrlToHttp } from '$utils/matrix'; diff --git a/src/app/components/emoji-board/components/SearchInput.tsx b/src/app/components/emoji-board/components/SearchInput.tsx index c3c80e939..8896d8ad9 100644 --- a/src/app/components/emoji-board/components/SearchInput.tsx +++ b/src/app/components/emoji-board/components/SearchInput.tsx @@ -1,4 +1,4 @@ -import { ChangeEventHandler, useRef } from 'react'; +import { type ChangeEventHandler, useRef } from 'react'; import { Input, Chip, Icon, Icons, Text } from 'folds'; import { mobileOrTablet } from '$utils/user-agent'; diff --git a/src/app/components/emoji-board/components/Sidebar.tsx b/src/app/components/emoji-board/components/Sidebar.tsx index 70bf87902..d03c9a4a4 100644 --- a/src/app/components/emoji-board/components/Sidebar.tsx +++ b/src/app/components/emoji-board/components/Sidebar.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { Box, Scroll, @@ -9,7 +9,7 @@ import { Text, IconButton, Icon, - IconSrc, + type IconSrc, Icons, } from 'folds'; import classNames from 'classnames'; diff --git a/src/app/components/emoji-board/components/Tabs.tsx b/src/app/components/emoji-board/components/Tabs.tsx index bef95c145..63546d651 100644 --- a/src/app/components/emoji-board/components/Tabs.tsx +++ b/src/app/components/emoji-board/components/Tabs.tsx @@ -1,4 +1,4 @@ -import { CSSProperties } from 'react'; +import { type CSSProperties } from 'react'; import { Badge, Box, Text } from 'folds'; import { EmojiBoardTab } from '$components/emoji-board/types'; diff --git a/src/app/components/emoji-board/useEmojiGroupIcons.ts b/src/app/components/emoji-board/useEmojiGroupIcons.ts index 0b59fbcd9..623885149 100644 --- a/src/app/components/emoji-board/useEmojiGroupIcons.ts +++ b/src/app/components/emoji-board/useEmojiGroupIcons.ts @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { IconSrc, Icons } from 'folds'; +import { type IconSrc, Icons } from 'folds'; import { EmojiGroupId } from '$plugins/emoji'; diff --git a/src/app/components/event-history/EventHistory.tsx b/src/app/components/event-history/EventHistory.tsx index 955a2846f..a36d5c036 100644 --- a/src/app/components/event-history/EventHistory.tsx +++ b/src/app/components/event-history/EventHistory.tsx @@ -14,7 +14,7 @@ import { color, config, } from 'folds'; -import { IContent, MatrixEvent, Room } from '$types/matrix-sdk'; +import { type IContent, type MatrixEvent, type Room } from '$types/matrix-sdk'; import { getMemberDisplayName } from '$utils/room'; import { getMxIdLocalPart } from '$utils/matrix'; import { useMatrixClient } from '$hooks/useMatrixClient'; @@ -30,8 +30,8 @@ import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; import { useCallback, useMemo, useState } from 'react'; import { getReactCustomHtmlParser, LINKIFY_OPTS } from '$plugins/react-custom-html-parser'; -import { Opts as LinkifyOpts } from 'linkifyjs'; -import { HTMLReactParserOptions } from 'html-react-parser'; +import { type Opts as LinkifyOpts } from 'linkifyjs'; +import { type HTMLReactParserOptions } from 'html-react-parser'; import { useSpoilerClickHandler } from '$hooks/useSpoilerClickHandler'; import { modalAtom, ModalType } from '$state/modal'; import { roomIdToReplyDraftAtomFamily } from '$state/room/roomInputDrafts'; diff --git a/src/app/components/event-readers/EventReaders.tsx b/src/app/components/event-readers/EventReaders.tsx index 6bb1737b4..b94efbb3e 100644 --- a/src/app/components/event-readers/EventReaders.tsx +++ b/src/app/components/event-readers/EventReaders.tsx @@ -12,7 +12,7 @@ import { as, config, } from 'folds'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useRoomEventReaders } from '$hooks/useRoomEventReaders'; import { getMemberDisplayName } from '$utils/room'; import { getMxIdLocalPart } from '$utils/matrix'; diff --git a/src/app/components/image-pack-view/ImagePackContent.tsx b/src/app/components/image-pack-view/ImagePackContent.tsx index 6f56d70f3..e89108254 100644 --- a/src/app/components/image-pack-view/ImagePackContent.tsx +++ b/src/app/components/image-pack-view/ImagePackContent.tsx @@ -1,18 +1,18 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; import { as, Box, Text, config, Button, Menu, Spinner } from 'folds'; import { - ImagePack, - ImageUsage, - PackContent, - PackImage, + type ImagePack, + type ImageUsage, + type PackContent, + type PackImage, PackImageReader, packMetaEqual, PackMetaReader, } from '$plugins/custom-emoji'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { useFilePicker } from '$hooks/useFilePicker'; -import { UploadSuccess } from '$state/upload'; -import { getImageInfo, TUploadContent } from '$utils/matrix'; +import { type UploadSuccess } from '$state/upload'; +import { getImageInfo, type TUploadContent } from '$utils/matrix'; import { getImageFileUrl, loadImageElement, renameFile } from '$utils/dom'; import { replaceSpaceWithDash, suffixRename } from '$utils/common'; import { getFileNameWithoutExt } from '$utils/mimeTypes'; diff --git a/src/app/components/image-pack-view/ImagePackView.tsx b/src/app/components/image-pack-view/ImagePackView.tsx index 304275e54..b79fd7b3b 100644 --- a/src/app/components/image-pack-view/ImagePackView.tsx +++ b/src/app/components/image-pack-view/ImagePackView.tsx @@ -1,5 +1,5 @@ import { Box, IconButton, Text, Icon, Icons, Scroll, Chip } from 'folds'; -import { PackAddress } from '$plugins/custom-emoji'; +import { type PackAddress } from '$plugins/custom-emoji'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { Page, PageHeader, PageContent } from '$components/page'; import { RoomImagePack } from './RoomImagePack'; diff --git a/src/app/components/image-pack-view/ImageTile.tsx b/src/app/components/image-pack-view/ImageTile.tsx index 2070f00e4..ee7e74fbe 100644 --- a/src/app/components/image-pack-view/ImageTile.tsx +++ b/src/app/components/image-pack-view/ImageTile.tsx @@ -1,10 +1,10 @@ -import { FormEventHandler, ReactNode, useMemo, useState } from 'react'; +import { type FormEventHandler, type ReactNode, useMemo, useState } from 'react'; import { Badge, Box, Button, Chip, Icon, Icons, Input, Text } from 'folds'; import { mxcUrlToHttp } from '$utils/matrix'; -import { ImageUsage, imageUsageEqual, PackImageReader } from '$plugins/custom-emoji'; +import { type ImageUsage, imageUsageEqual, PackImageReader } from '$plugins/custom-emoji'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useObjectURL } from '$hooks/useObjectURL'; -import { createUploadAtom, TUploadAtom } from '$state/upload'; +import { createUploadAtom, type TUploadAtom } from '$state/upload'; import { replaceSpaceWithDash } from '$utils/common'; import { SettingTile } from '$components/setting-tile'; import * as css from './style.css'; diff --git a/src/app/components/image-pack-view/PackMeta.tsx b/src/app/components/image-pack-view/PackMeta.tsx index 77e8a42f5..a45f75b49 100644 --- a/src/app/components/image-pack-view/PackMeta.tsx +++ b/src/app/components/image-pack-view/PackMeta.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, useCallback, useMemo, useState } from 'react'; +import { type FormEventHandler, useCallback, useMemo, useState } from 'react'; import { Box, Text, @@ -21,7 +21,7 @@ import { LINKIFY_OPTS } from '$plugins/react-custom-html-parser'; import { ContainerColor } from '$styles/ContainerColor.css'; import { useFilePicker } from '$hooks/useFilePicker'; import { useObjectURL } from '$hooks/useObjectURL'; -import { createUploadAtom, UploadSuccess } from '$state/upload'; +import { createUploadAtom, type UploadSuccess } from '$state/upload'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { PackMetaReader } from '$plugins/custom-emoji'; import { CompactUploadCardRenderer } from '$components/upload-card'; diff --git a/src/app/components/image-pack-view/RoomImagePack.tsx b/src/app/components/image-pack-view/RoomImagePack.tsx index 01f0f7dd7..1feb08e62 100644 --- a/src/app/components/image-pack-view/RoomImagePack.tsx +++ b/src/app/components/image-pack-view/RoomImagePack.tsx @@ -1,8 +1,8 @@ import { useCallback, useMemo } from 'react'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { usePowerLevels } from '$hooks/usePowerLevels'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { ImagePack, PackContent } from '$plugins/custom-emoji'; +import { ImagePack, type PackContent } from '$plugins/custom-emoji'; import { StateEvent } from '$types/matrix/room'; import { useRoomImagePack } from '$hooks/useImagePacks'; import { randomStr } from '$utils/common'; diff --git a/src/app/components/image-pack-view/UsageSwitcher.tsx b/src/app/components/image-pack-view/UsageSwitcher.tsx index 201a40aaa..4b022dc69 100644 --- a/src/app/components/image-pack-view/UsageSwitcher.tsx +++ b/src/app/components/image-pack-view/UsageSwitcher.tsx @@ -1,5 +1,16 @@ -import { MouseEventHandler, useMemo, useState } from 'react'; -import { Box, Button, config, Icon, Icons, Menu, MenuItem, PopOut, RectCords, Text } from 'folds'; +import { type MouseEventHandler, useMemo, useState } from 'react'; +import { + Box, + Button, + config, + Icon, + Icons, + Menu, + MenuItem, + PopOut, + type RectCords, + Text, +} from 'folds'; import FocusTrap from 'focus-trap-react'; import { ImageUsage } from '$plugins/custom-emoji'; import { stopPropagation } from '$utils/keyboard'; diff --git a/src/app/components/image-pack-view/UserImagePack.tsx b/src/app/components/image-pack-view/UserImagePack.tsx index a723b83ab..f16b34d1d 100644 --- a/src/app/components/image-pack-view/UserImagePack.tsx +++ b/src/app/components/image-pack-view/UserImagePack.tsx @@ -1,5 +1,5 @@ import { useCallback, useMemo } from 'react'; -import { ImagePack, PackContent } from '$plugins/custom-emoji'; +import { ImagePack, type PackContent } from '$plugins/custom-emoji'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { AccountDataEvent } from '$types/matrix/accountData'; import { useUserImagePack } from '$hooks/useImagePacks'; diff --git a/src/app/components/image-viewer/ImageViewer.tsx b/src/app/components/image-viewer/ImageViewer.tsx index 569b61df1..934f1ca57 100644 --- a/src/app/components/image-viewer/ImageViewer.tsx +++ b/src/app/components/image-viewer/ImageViewer.tsx @@ -1,4 +1,4 @@ -import { WheelEvent } from 'react'; +import { type WheelEvent } from 'react'; import FileSaver from 'file-saver'; import classNames from 'classnames'; import { Box, Chip, Header, Icon, IconButton, Icons, Text, as } from 'folds'; diff --git a/src/app/components/info-card/InfoCard.tsx b/src/app/components/info-card/InfoCard.tsx index 6070479ca..44761abba 100644 --- a/src/app/components/info-card/InfoCard.tsx +++ b/src/app/components/info-card/InfoCard.tsx @@ -1,5 +1,5 @@ -import { Box, ContainerColor, Text } from 'folds'; -import { ReactNode } from 'react'; +import { Box, type ContainerColor, Text } from 'folds'; +import { type ReactNode } from 'react'; import classNames from 'classnames'; import { BreakWord } from '$styles/Text.css'; import { ContainerColor as ContainerClr } from '$styles/ContainerColor.css'; diff --git a/src/app/components/invite-user-prompt/InviteUserPrompt.tsx b/src/app/components/invite-user-prompt/InviteUserPrompt.tsx index c8fbabef5..ef7bf65e5 100644 --- a/src/app/components/invite-user-prompt/InviteUserPrompt.tsx +++ b/src/app/components/invite-user-prompt/InviteUserPrompt.tsx @@ -1,7 +1,7 @@ import { - ChangeEventHandler, - FormEventHandler, - KeyboardEventHandler, + type ChangeEventHandler, + type FormEventHandler, + type KeyboardEventHandler, useCallback, useMemo, useRef, @@ -29,14 +29,14 @@ import { Scroll, MenuItem, } from 'folds'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { isKeyHotkey } from 'is-hotkey'; import FocusTrap from 'focus-trap-react'; import { stopPropagation } from '$utils/keyboard'; import { useDirectUsers } from '$hooks/useDirectUsers'; import { getMxIdLocalPart, getMxIdServer, isUserId } from '$utils/matrix'; import { Membership } from '$types/matrix/room'; -import { useAsyncSearch, UseAsyncSearchOptions } from '$hooks/useAsyncSearch'; +import { useAsyncSearch, type UseAsyncSearchOptions } from '$hooks/useAsyncSearch'; import { highlightText, makeHighlightRegex } from '$plugins/react-custom-html-parser'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/components/join-address-prompt/JoinAddressPrompt.tsx b/src/app/components/join-address-prompt/JoinAddressPrompt.tsx index d6a6478d2..956bf669b 100644 --- a/src/app/components/join-address-prompt/JoinAddressPrompt.tsx +++ b/src/app/components/join-address-prompt/JoinAddressPrompt.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, useState } from 'react'; +import { type FormEventHandler, useState } from 'react'; import FocusTrap from 'focus-trap-react'; import { Dialog, diff --git a/src/app/components/knock-room-prompt/KnockRoomPrompt.tsx b/src/app/components/knock-room-prompt/KnockRoomPrompt.tsx index a7948e9ab..1d0e8b4cf 100644 --- a/src/app/components/knock-room-prompt/KnockRoomPrompt.tsx +++ b/src/app/components/knock-room-prompt/KnockRoomPrompt.tsx @@ -1,4 +1,4 @@ -import { useCallback, useEffect, FormEventHandler } from 'react'; +import { useCallback, useEffect, type FormEventHandler } from 'react'; import FocusTrap from 'focus-trap-react'; import { Dialog, @@ -17,7 +17,7 @@ import { Button, Spinner, } from 'folds'; -import { MatrixError } from '$types/matrix-sdk'; +import { type MatrixError } from '$types/matrix-sdk'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; diff --git a/src/app/components/leave-room-prompt/LeaveRoomPrompt.tsx b/src/app/components/leave-room-prompt/LeaveRoomPrompt.tsx index 36cdd89de..de80ab323 100644 --- a/src/app/components/leave-room-prompt/LeaveRoomPrompt.tsx +++ b/src/app/components/leave-room-prompt/LeaveRoomPrompt.tsx @@ -16,7 +16,7 @@ import { Button, Spinner, } from 'folds'; -import { MatrixError } from '$types/matrix-sdk'; +import { type MatrixError } from '$types/matrix-sdk'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { stopPropagation } from '$utils/keyboard'; diff --git a/src/app/components/leave-space-prompt/LeaveSpacePrompt.tsx b/src/app/components/leave-space-prompt/LeaveSpacePrompt.tsx index 5bee7af26..96345bc0c 100644 --- a/src/app/components/leave-space-prompt/LeaveSpacePrompt.tsx +++ b/src/app/components/leave-space-prompt/LeaveSpacePrompt.tsx @@ -16,7 +16,7 @@ import { Button, Spinner, } from 'folds'; -import { MatrixError } from '$types/matrix-sdk'; +import { type MatrixError } from '$types/matrix-sdk'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { stopPropagation } from '$utils/keyboard'; diff --git a/src/app/components/media/Image.tsx b/src/app/components/media/Image.tsx index 29990e99e..0fc4e5f33 100644 --- a/src/app/components/media/Image.tsx +++ b/src/app/components/media/Image.tsx @@ -1,4 +1,4 @@ -import { ImgHTMLAttributes, forwardRef } from 'react'; +import { type ImgHTMLAttributes, forwardRef } from 'react'; import classNames from 'classnames'; import * as css from './media.css'; diff --git a/src/app/components/media/MediaControls.tsx b/src/app/components/media/MediaControls.tsx index 2360b9f96..ceb7d6c04 100644 --- a/src/app/components/media/MediaControls.tsx +++ b/src/app/components/media/MediaControls.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { Box, as } from 'folds'; export type MediaControlProps = { diff --git a/src/app/components/media/Video.tsx b/src/app/components/media/Video.tsx index c28efcaa3..073b6b0d6 100644 --- a/src/app/components/media/Video.tsx +++ b/src/app/components/media/Video.tsx @@ -1,4 +1,4 @@ -import { VideoHTMLAttributes, forwardRef, useEffect, useRef } from 'react'; +import { type VideoHTMLAttributes, forwardRef, useEffect, useRef } from 'react'; import classNames from 'classnames'; import * as css from './media.css'; diff --git a/src/app/components/member-tile/MemberTile.tsx b/src/app/components/member-tile/MemberTile.tsx index 9af782eef..a983ab9f7 100644 --- a/src/app/components/member-tile/MemberTile.tsx +++ b/src/app/components/member-tile/MemberTile.tsx @@ -1,6 +1,6 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { as, Avatar, Box, Icon, Icons, Text } from 'folds'; -import { MatrixClient, Room, RoomMember } from '$types/matrix-sdk'; +import { type MatrixClient, type Room, type RoomMember } from '$types/matrix-sdk'; import { getMemberDisplayName } from '$utils/room'; import { getMxIdLocalPart } from '$utils/matrix'; import { useSableCosmetics } from '$hooks/useSableCosmetics'; diff --git a/src/app/components/message/FileHeader.tsx b/src/app/components/message/FileHeader.tsx index 36d8adeb1..c800c4a08 100644 --- a/src/app/components/message/FileHeader.tsx +++ b/src/app/components/message/FileHeader.tsx @@ -1,6 +1,6 @@ import { Badge, Box, Icon, IconButton, Icons, Spinner, Text, as, toRem } from 'folds'; -import { ReactNode, useCallback } from 'react'; -import { EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; +import { type ReactNode, useCallback } from 'react'; +import { type EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; import FileSaver from 'file-saver'; import { mimeTypeToExt } from '$utils/mimeTypes'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/components/message/MsgTypeRenderers.tsx b/src/app/components/message/MsgTypeRenderers.tsx index 6d1a63cce..6d85a4bb7 100644 --- a/src/app/components/message/MsgTypeRenderers.tsx +++ b/src/app/components/message/MsgTypeRenderers.tsx @@ -1,19 +1,19 @@ -import { CSSProperties, ReactNode, useMemo } from 'react'; +import { type CSSProperties, type ReactNode, useMemo } from 'react'; import { Box, Chip, Icon, Icons, Text, toRem } from 'folds'; -import { IContent } from '$types/matrix-sdk'; +import { type IContent } from '$types/matrix-sdk'; import { JUMBO_EMOJI_REG, URL_REG } from '$utils/regex'; import { trimReplyFromBody } from '$utils/room'; import { - IAudioContent, - IAudioInfo, - IEncryptedFile, - IFileContent, - IFileInfo, - IImageContent, - IImageInfo, - IThumbnailContent, - IVideoContent, - IVideoInfo, + type IAudioContent, + type IAudioInfo, + type IEncryptedFile, + type IFileContent, + type IFileInfo, + type IImageContent, + type IImageInfo, + type IThumbnailContent, + type IVideoContent, + type IVideoInfo, MATRIX_SPOILER_PROPERTY_NAME, MATRIX_SPOILER_REASON_PROPERTY_NAME, } from '$types/matrix/common'; @@ -21,7 +21,7 @@ import { FALLBACK_MIMETYPE, getBlobSafeMimeType } from '$utils/mimeTypes'; import { parseGeoUri, scaleYDimension } from '$utils/common'; import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; -import { PerMessageProfileBeeperFormat } from '$hooks/usePerMessageProfile'; +import { type PerMessageProfileBeeperFormat } from '$hooks/usePerMessageProfile'; import { Attachment, AttachmentBox, AttachmentContent, AttachmentHeader } from './attachment'; import { FileHeader, FileDownloadButton } from './FileHeader'; import { diff --git a/src/app/components/message/Reaction.tsx b/src/app/components/message/Reaction.tsx index 155de11f4..f411adb24 100644 --- a/src/app/components/message/Reaction.tsx +++ b/src/app/components/message/Reaction.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; import { Box, Icon, Icons, Text, as } from 'folds'; import classNames from 'classnames'; -import { MatrixClient, MatrixEvent, Room } from '$types/matrix-sdk'; +import { type MatrixClient, type MatrixEvent, type Room } from '$types/matrix-sdk'; import { getHexcodeForEmoji, getShortcodeFor } from '$plugins/emoji'; import { getMemberDisplayName } from '$utils/room'; import { eventWithShortcode, getMxIdLocalPart, mxcUrlToHttp } from '$utils/matrix'; diff --git a/src/app/components/message/RenderBody.tsx b/src/app/components/message/RenderBody.tsx index e26b237b0..4873d74f9 100644 --- a/src/app/components/message/RenderBody.tsx +++ b/src/app/components/message/RenderBody.tsx @@ -1,8 +1,8 @@ -import { MouseEventHandler, useEffect, useState } from 'react'; -import parse, { HTMLReactParserOptions } from 'html-react-parser'; +import { type MouseEventHandler, useEffect, useState } from 'react'; +import parse, { type HTMLReactParserOptions } from 'html-react-parser'; import Linkify from 'linkify-react'; -import { Opts } from 'linkifyjs'; -import { PopOut, RectCords, Text, Tooltip, TooltipProvider, toRem } from 'folds'; +import { type Opts } from 'linkifyjs'; +import { PopOut, type RectCords, Text, Tooltip, TooltipProvider, toRem } from 'folds'; import { sanitizeCustomHtml } from '$utils/sanitize'; import { highlightText, scaleSystemEmoji } from '$plugins/react-custom-html-parser'; import { useRoomAbbreviationsContext } from '$hooks/useRoomAbbreviations'; diff --git a/src/app/components/message/Reply.tsx b/src/app/components/message/Reply.tsx index 3342b0d52..0ad20e216 100644 --- a/src/app/components/message/Reply.tsx +++ b/src/app/components/message/Reply.tsx @@ -1,6 +1,11 @@ -import { Box, Chip, Icon, IconSrc, Icons, Text, as, color, toRem } from 'folds'; -import { EventTimelineSet, IMentions, Room, SessionMembershipData } from '$types/matrix-sdk'; -import { MouseEventHandler, ReactNode, useCallback, useMemo } from 'react'; +import { Box, Chip, Icon, type IconSrc, Icons, Text, as, color, toRem } from 'folds'; +import { + type EventTimelineSet, + type IMentions, + type Room, + type SessionMembershipData, +} from '$types/matrix-sdk'; +import { type MouseEventHandler, type ReactNode, useCallback, useMemo } from 'react'; import { useQueryClient } from '@tanstack/react-query'; import classNames from 'classnames'; import parse from 'html-react-parser'; diff --git a/src/app/components/message/Time.tsx b/src/app/components/message/Time.tsx index dc190d93d..844a2f1b7 100644 --- a/src/app/components/message/Time.tsx +++ b/src/app/components/message/Time.tsx @@ -1,4 +1,4 @@ -import { ComponentProps } from 'react'; +import { type ComponentProps } from 'react'; import { Text, as, Tooltip, TooltipProvider } from 'folds'; import { timeDayMonYear, diff --git a/src/app/components/message/attachment/Attachment.css.ts b/src/app/components/message/attachment/Attachment.css.ts index dad95f616..213ac1066 100644 --- a/src/app/components/message/attachment/Attachment.css.ts +++ b/src/app/components/message/attachment/Attachment.css.ts @@ -1,5 +1,5 @@ import { style } from '@vanilla-extract/css'; -import { RecipeVariants, recipe } from '@vanilla-extract/recipes'; +import { type RecipeVariants, recipe } from '@vanilla-extract/recipes'; import { DefaultReset, color, config, toRem } from 'folds'; export const Attachment = recipe({ diff --git a/src/app/components/message/content/AudioContent.tsx b/src/app/components/message/content/AudioContent.tsx index fb0f2bef9..34fc1d3f3 100644 --- a/src/app/components/message/content/AudioContent.tsx +++ b/src/app/components/message/content/AudioContent.tsx @@ -1,13 +1,13 @@ /* eslint-disable jsx-a11y/media-has-caption */ -import { ReactNode, useCallback, useEffect, useRef, useState } from 'react'; +import { type ReactNode, useCallback, useEffect, useRef, useState } from 'react'; import { Badge, Chip, Icon, IconButton, Icons, ProgressBar, Spinner, Text, toRem } from 'folds'; -import { EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; +import { type EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; import { Range } from 'react-range'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; -import { IAudioInfo } from '$types/matrix/common'; +import { type IAudioInfo } from '$types/matrix/common'; import { - PlayTimeCallback, + type PlayTimeCallback, useMediaLoading, useMediaPlay, useMediaPlayTimeCallback, diff --git a/src/app/components/message/content/EventContent.tsx b/src/app/components/message/content/EventContent.tsx index 35449e1ba..bcdd8cb63 100644 --- a/src/app/components/message/content/EventContent.tsx +++ b/src/app/components/message/content/EventContent.tsx @@ -1,5 +1,5 @@ -import { Box, Icon, IconSrc } from 'folds'; -import { ReactNode } from 'react'; +import { Box, Icon, type IconSrc } from 'folds'; +import { type ReactNode } from 'react'; import { MessageLayout } from '$state/settings'; import { BubbleLayout, CompactLayout, ModernLayout } from '$components/message/layout'; diff --git a/src/app/components/message/content/FileContent.tsx b/src/app/components/message/content/FileContent.tsx index af802d46b..89c50ec52 100644 --- a/src/app/components/message/content/FileContent.tsx +++ b/src/app/components/message/content/FileContent.tsx @@ -1,4 +1,4 @@ -import { ReactNode, useCallback, useState } from 'react'; +import { type ReactNode, useCallback, useState } from 'react'; import { Box, Button, @@ -15,9 +15,9 @@ import { as, } from 'folds'; import FileSaver from 'file-saver'; -import { EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; +import { type EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; import FocusTrap from 'focus-trap-react'; -import { IFileInfo } from '$types/matrix/common'; +import { type IFileInfo } from '$types/matrix/common'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { bytesToSize } from '$utils/common'; diff --git a/src/app/components/message/content/ImageContent.tsx b/src/app/components/message/content/ImageContent.tsx index ad51d2a4f..ce53650c9 100644 --- a/src/app/components/message/content/ImageContent.tsx +++ b/src/app/components/message/content/ImageContent.tsx @@ -1,4 +1,4 @@ -import { ReactNode, useCallback, useEffect, useState } from 'react'; +import { type ReactNode, useCallback, useEffect, useState } from 'react'; import { Badge, Box, @@ -22,8 +22,8 @@ import { import classNames from 'classnames'; import { BlurhashCanvas } from 'react-blurhash'; import FocusTrap from 'focus-trap-react'; -import { EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; -import { IImageInfo, MATRIX_BLUR_HASH_PROPERTY_NAME } from '$types/matrix/common'; +import { type EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; +import { type IImageInfo, MATRIX_BLUR_HASH_PROPERTY_NAME } from '$types/matrix/common'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { bytesToSize } from '$utils/common'; diff --git a/src/app/components/message/content/ThumbnailContent.tsx b/src/app/components/message/content/ThumbnailContent.tsx index 2d0510bed..15ec34020 100644 --- a/src/app/components/message/content/ThumbnailContent.tsx +++ b/src/app/components/message/content/ThumbnailContent.tsx @@ -1,5 +1,5 @@ -import { ReactNode, useCallback, useEffect } from 'react'; -import { IThumbnailContent } from '$types/matrix/common'; +import { type ReactNode, useCallback, useEffect } from 'react'; +import { type IThumbnailContent } from '$types/matrix/common'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { decryptFile, downloadEncryptedMedia, mxcUrlToHttp } from '$utils/matrix'; diff --git a/src/app/components/message/content/VideoContent.tsx b/src/app/components/message/content/VideoContent.tsx index 71613c598..6fbb42a04 100644 --- a/src/app/components/message/content/VideoContent.tsx +++ b/src/app/components/message/content/VideoContent.tsx @@ -1,4 +1,4 @@ -import { ReactNode, useCallback, useEffect, useState } from 'react'; +import { type ReactNode, useCallback, useEffect, useState } from 'react'; import { Badge, Box, @@ -17,10 +17,10 @@ import { } from 'folds'; import classNames from 'classnames'; import { BlurhashCanvas } from 'react-blurhash'; -import { EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; +import { type EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; import { - IThumbnailContent, - IVideoInfo, + type IThumbnailContent, + type IVideoInfo, MATRIX_BLUR_HASH_PROPERTY_NAME, } from '$types/matrix/common'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/components/message/layout/Bubble.tsx b/src/app/components/message/layout/Bubble.tsx index 21120da47..9ffeabe2d 100644 --- a/src/app/components/message/layout/Bubble.tsx +++ b/src/app/components/message/layout/Bubble.tsx @@ -1,6 +1,6 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import classNames from 'classnames'; -import { Box, ContainerColor, as, color } from 'folds'; +import { Box, type ContainerColor, as, color } from 'folds'; import * as css from './layout.css'; type BubbleArrowProps = { diff --git a/src/app/components/message/layout/Compact.tsx b/src/app/components/message/layout/Compact.tsx index e9015ab96..5e4b7fece 100644 --- a/src/app/components/message/layout/Compact.tsx +++ b/src/app/components/message/layout/Compact.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { Box, as } from 'folds'; import * as css from './layout.css'; diff --git a/src/app/components/message/layout/Modern.tsx b/src/app/components/message/layout/Modern.tsx index e73e93013..a2c6273a6 100644 --- a/src/app/components/message/layout/Modern.tsx +++ b/src/app/components/message/layout/Modern.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { Box, as } from 'folds'; import * as css from './layout.css'; diff --git a/src/app/components/message/layout/layout.css.ts b/src/app/components/message/layout/layout.css.ts index 9928f15e6..ef391cf87 100644 --- a/src/app/components/message/layout/layout.css.ts +++ b/src/app/components/message/layout/layout.css.ts @@ -1,5 +1,5 @@ import { createVar, keyframes, style, styleVariants } from '@vanilla-extract/css'; -import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; +import { recipe, type RecipeVariants } from '@vanilla-extract/recipes'; import { DefaultReset, color, config, toRem } from 'folds'; export const StickySection = style({ diff --git a/src/app/components/message/modals/MessageDelete.tsx b/src/app/components/message/modals/MessageDelete.tsx index 666895102..12c3b3546 100644 --- a/src/app/components/message/modals/MessageDelete.tsx +++ b/src/app/components/message/modals/MessageDelete.tsx @@ -1,5 +1,5 @@ -import { FormEventHandler, MouseEvent, useCallback, useEffect } from 'react'; -import { Room, MatrixEvent } from '$types/matrix-sdk'; +import { type FormEventHandler, type MouseEvent, useCallback, useEffect } from 'react'; +import { type Room, type MatrixEvent } from '$types/matrix-sdk'; import { useSetAtom } from 'jotai'; import { Box, diff --git a/src/app/components/message/modals/MessageEditHistory.tsx b/src/app/components/message/modals/MessageEditHistory.tsx index 9581aa419..5057c82a2 100644 --- a/src/app/components/message/modals/MessageEditHistory.tsx +++ b/src/app/components/message/modals/MessageEditHistory.tsx @@ -1,5 +1,5 @@ -import { MouseEvent } from 'react'; -import { Room, MatrixEvent } from '$types/matrix-sdk'; +import { type MouseEvent } from 'react'; +import { type Room, type MatrixEvent } from '$types/matrix-sdk'; import { useSetAtom } from 'jotai'; import { MenuItem, Icon, Icons, Text } from 'folds'; import { getEventEdits } from '$utils/room'; diff --git a/src/app/components/message/modals/MessageForward.tsx b/src/app/components/message/modals/MessageForward.tsx index 7e29f3d49..b51e4869f 100644 --- a/src/app/components/message/modals/MessageForward.tsx +++ b/src/app/components/message/modals/MessageForward.tsx @@ -17,7 +17,7 @@ import { as, } from 'folds'; import { useAtomValue, useSetAtom } from 'jotai'; -import { JoinRule, MatrixEvent, Room } from '$types/matrix-sdk'; +import { JoinRule, type MatrixEvent, type Room } from '$types/matrix-sdk'; import { useEffect, useMemo, useState } from 'react'; import { allRoomsAtom } from '$state/room-list/roomList'; import { useAllJoinedRoomsSet, useGetRoom } from '$hooks/useGetRoom'; diff --git a/src/app/components/message/modals/MessageReactions.tsx b/src/app/components/message/modals/MessageReactions.tsx index f2fa7a5bd..04a32b511 100644 --- a/src/app/components/message/modals/MessageReactions.tsx +++ b/src/app/components/message/modals/MessageReactions.tsx @@ -1,5 +1,5 @@ -import { MouseEvent } from 'react'; -import { Room, Relations } from '$types/matrix-sdk'; +import { type MouseEvent } from 'react'; +import { type Room, type Relations } from '$types/matrix-sdk'; import { useSetAtom } from 'jotai'; import { Icon, Icons, Text, MenuItem } from 'folds'; import { modalAtom, ModalType } from '$state/modal'; diff --git a/src/app/components/message/modals/MessageReadRecipts.tsx b/src/app/components/message/modals/MessageReadRecipts.tsx index 6642627c0..7252e696d 100644 --- a/src/app/components/message/modals/MessageReadRecipts.tsx +++ b/src/app/components/message/modals/MessageReadRecipts.tsx @@ -1,5 +1,5 @@ -import { MouseEvent } from 'react'; -import { Room } from '$types/matrix-sdk'; +import { type MouseEvent } from 'react'; +import { type Room } from '$types/matrix-sdk'; import { useSetAtom } from 'jotai'; import { MenuItem, Icon, Icons, Text } from 'folds'; import { modalAtom, ModalType } from '$state/modal'; diff --git a/src/app/components/message/modals/MessageReport.tsx b/src/app/components/message/modals/MessageReport.tsx index 71cf03cc5..beae33e1e 100644 --- a/src/app/components/message/modals/MessageReport.tsx +++ b/src/app/components/message/modals/MessageReport.tsx @@ -1,5 +1,5 @@ -import { FormEventHandler, MouseEvent, useCallback, useEffect } from 'react'; -import { Room, MatrixEvent } from '$types/matrix-sdk'; +import { type FormEventHandler, type MouseEvent, useCallback, useEffect } from 'react'; +import { type Room, type MatrixEvent } from '$types/matrix-sdk'; import { useSetAtom } from 'jotai'; import { Box, diff --git a/src/app/components/message/modals/MessageSource.tsx b/src/app/components/message/modals/MessageSource.tsx index eff8e1e58..1deb28ebf 100644 --- a/src/app/components/message/modals/MessageSource.tsx +++ b/src/app/components/message/modals/MessageSource.tsx @@ -1,5 +1,5 @@ -import { MouseEvent } from 'react'; -import { Room, MatrixEvent } from '$types/matrix-sdk'; +import { type MouseEvent } from 'react'; +import { type Room, type MatrixEvent } from '$types/matrix-sdk'; import { useSetAtom } from 'jotai'; import { MenuItem, Icon, Icons, Text } from 'folds'; import { TextViewer } from '$components/text-viewer'; diff --git a/src/app/components/message/placeholder/CompactPlaceholder.tsx b/src/app/components/message/placeholder/CompactPlaceholder.tsx index c6e6dda00..961cf165e 100644 --- a/src/app/components/message/placeholder/CompactPlaceholder.tsx +++ b/src/app/components/message/placeholder/CompactPlaceholder.tsx @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { as, ContainerColor, toRem } from 'folds'; +import { as, type ContainerColor, toRem } from 'folds'; import { randomNumberBetween } from '$utils/common'; import { CompactLayout } from '$components/message/layout'; import { LinePlaceholder } from './LinePlaceholder'; diff --git a/src/app/components/message/placeholder/DefaultPlaceholder.tsx b/src/app/components/message/placeholder/DefaultPlaceholder.tsx index 444990ac6..d0a73733f 100644 --- a/src/app/components/message/placeholder/DefaultPlaceholder.tsx +++ b/src/app/components/message/placeholder/DefaultPlaceholder.tsx @@ -1,5 +1,5 @@ -import { CSSProperties, useMemo } from 'react'; -import { Avatar, Box, ContainerColor, as, color, toRem } from 'folds'; +import { type CSSProperties, useMemo } from 'react'; +import { Avatar, Box, type ContainerColor, as, color, toRem } from 'folds'; import { randomNumberBetween } from '$utils/common'; import { ModernLayout } from '$components/message/layout'; import { LinePlaceholder } from './LinePlaceholder'; diff --git a/src/app/components/message/placeholder/LinePlaceholder.css.ts b/src/app/components/message/placeholder/LinePlaceholder.css.ts index 34ad76a3e..bcf69b7e5 100644 --- a/src/app/components/message/placeholder/LinePlaceholder.css.ts +++ b/src/app/components/message/placeholder/LinePlaceholder.css.ts @@ -1,6 +1,6 @@ -import { ComplexStyleRule } from '@vanilla-extract/css'; -import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; -import { ContainerColor, DefaultReset, color, config, toRem } from 'folds'; +import { type ComplexStyleRule } from '@vanilla-extract/css'; +import { recipe, type RecipeVariants } from '@vanilla-extract/recipes'; +import { type ContainerColor, DefaultReset, color, config, toRem } from 'folds'; const getVariant = (variant: ContainerColor): ComplexStyleRule => ({ backgroundColor: color[variant].Container, diff --git a/src/app/components/nav/NavCategory.tsx b/src/app/components/nav/NavCategory.tsx index 7285330f0..b03c0916a 100644 --- a/src/app/components/nav/NavCategory.tsx +++ b/src/app/components/nav/NavCategory.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { as } from 'folds'; import classNames from 'classnames'; import * as css from './styles.css'; diff --git a/src/app/components/nav/NavCategoryHeader.tsx b/src/app/components/nav/NavCategoryHeader.tsx index 1d4152fc9..1cbea5b10 100644 --- a/src/app/components/nav/NavCategoryHeader.tsx +++ b/src/app/components/nav/NavCategoryHeader.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import classNames from 'classnames'; import { Header, as } from 'folds'; import * as css from './styles.css'; diff --git a/src/app/components/nav/NavEmptyLayout.tsx b/src/app/components/nav/NavEmptyLayout.tsx index 25b69380b..cf21d6699 100644 --- a/src/app/components/nav/NavEmptyLayout.tsx +++ b/src/app/components/nav/NavEmptyLayout.tsx @@ -1,5 +1,5 @@ import { Box, config } from 'folds'; -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; export function NavEmptyCenter({ children }: { children: ReactNode }) { return ( diff --git a/src/app/components/nav/NavItem.tsx b/src/app/components/nav/NavItem.tsx index 68a967f6f..f3eefa4f5 100644 --- a/src/app/components/nav/NavItem.tsx +++ b/src/app/components/nav/NavItem.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import { ComponentProps, forwardRef } from 'react'; +import { type ComponentProps, forwardRef } from 'react'; import { Link } from 'react-router-dom'; import { as } from 'folds'; import * as css from './styles.css'; diff --git a/src/app/components/nav/NavItemContent.tsx b/src/app/components/nav/NavItemContent.tsx index eaf8f113e..4ca35cc0c 100644 --- a/src/app/components/nav/NavItemContent.tsx +++ b/src/app/components/nav/NavItemContent.tsx @@ -1,4 +1,4 @@ -import { ComponentProps } from 'react'; +import { type ComponentProps } from 'react'; import { Text, as } from 'folds'; import classNames from 'classnames'; import * as css from './styles.css'; diff --git a/src/app/components/nav/NavItemOptions.tsx b/src/app/components/nav/NavItemOptions.tsx index a735781e5..d43fc7ab0 100644 --- a/src/app/components/nav/NavItemOptions.tsx +++ b/src/app/components/nav/NavItemOptions.tsx @@ -1,4 +1,4 @@ -import { ComponentProps } from 'react'; +import { type ComponentProps } from 'react'; import { Box, as } from 'folds'; import classNames from 'classnames'; import * as css from './styles.css'; diff --git a/src/app/components/nav/styles.css.ts b/src/app/components/nav/styles.css.ts index 48b2a4d34..cd02a25f4 100644 --- a/src/app/components/nav/styles.css.ts +++ b/src/app/components/nav/styles.css.ts @@ -1,6 +1,14 @@ -import { ComplexStyleRule, createVar, style } from '@vanilla-extract/css'; -import { RecipeVariants, recipe } from '@vanilla-extract/recipes'; -import { ContainerColor, DefaultReset, Disabled, RadiiVariant, color, config, toRem } from 'folds'; +import { type ComplexStyleRule, createVar, style } from '@vanilla-extract/css'; +import { type RecipeVariants, recipe } from '@vanilla-extract/recipes'; +import { + type ContainerColor, + DefaultReset, + Disabled, + RadiiVariant, + color, + config, + toRem, +} from 'folds'; export const NavCategory = style([ DefaultReset, diff --git a/src/app/components/notification-banner/NotificationBanner.tsx b/src/app/components/notification-banner/NotificationBanner.tsx index b574e3585..38b163863 100644 --- a/src/app/components/notification-banner/NotificationBanner.tsx +++ b/src/app/components/notification-banner/NotificationBanner.tsx @@ -1,8 +1,8 @@ import { useAtom } from 'jotai'; -import { ReactNode, useCallback, useEffect, useRef, useState } from 'react'; +import { type ReactNode, useCallback, useEffect, useRef, useState } from 'react'; import { Box, Icon, IconButton, Icons, Text } from 'folds'; import { createLogger } from '$utils/debug'; -import { inAppBannerAtom, InAppBannerNotification } from '$state/sessions'; +import { inAppBannerAtom, type InAppBannerNotification } from '$state/sessions'; import * as css from './NotificationBanner.css'; const log = createLogger('NotificationBanner'); diff --git a/src/app/components/page/Page.tsx b/src/app/components/page/Page.tsx index b481df637..87534b479 100644 --- a/src/app/components/page/Page.tsx +++ b/src/app/components/page/Page.tsx @@ -1,4 +1,4 @@ -import { ComponentProps, MutableRefObject, ReactNode } from 'react'; +import { type ComponentProps, type MutableRefObject, type ReactNode } from 'react'; import { Box, Header, Line, Scroll, Text, as } from 'folds'; import classNames from 'classnames'; import { ContainerColor } from '$styles/ContainerColor.css'; diff --git a/src/app/components/page/style.css.ts b/src/app/components/page/style.css.ts index bd14cd583..5241c11eb 100644 --- a/src/app/components/page/style.css.ts +++ b/src/app/components/page/style.css.ts @@ -1,5 +1,5 @@ import { style } from '@vanilla-extract/css'; -import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; +import { recipe, type RecipeVariants } from '@vanilla-extract/recipes'; import { DefaultReset, color, config, toRem } from 'folds'; export const PageNav = recipe({ diff --git a/src/app/components/password-input/PasswordInput.tsx b/src/app/components/password-input/PasswordInput.tsx index d1fdea246..0fce3feda 100644 --- a/src/app/components/password-input/PasswordInput.tsx +++ b/src/app/components/password-input/PasswordInput.tsx @@ -1,4 +1,4 @@ -import { ComponentProps, forwardRef } from 'react'; +import { type ComponentProps, forwardRef } from 'react'; import { Icon, IconButton, Input, config, Icons } from 'folds'; import { UseStateProvider } from '$components/UseStateProvider'; diff --git a/src/app/components/power/PowerSelector.tsx b/src/app/components/power/PowerSelector.tsx index 23188aeae..5d6aa9d51 100644 --- a/src/app/components/power/PowerSelector.tsx +++ b/src/app/components/power/PowerSelector.tsx @@ -1,7 +1,7 @@ -import { forwardRef, MouseEventHandler, ReactNode, useState } from 'react'; +import { forwardRef, type MouseEventHandler, type ReactNode, useState } from 'react'; import FocusTrap from 'focus-trap-react'; -import { Box, config, Menu, MenuItem, PopOut, Scroll, Text, toRem, RectCords } from 'folds'; -import { getPowers, PowerLevelTags } from '$hooks/usePowerLevelTags'; +import { Box, config, Menu, MenuItem, PopOut, Scroll, Text, toRem, type RectCords } from 'folds'; +import { getPowers, type PowerLevelTags } from '$hooks/usePowerLevelTags'; import { stopPropagation } from '$utils/keyboard'; import { PowerColorBadge } from './PowerColorBadge'; diff --git a/src/app/components/power/style.css.ts b/src/app/components/power/style.css.ts index 60737f8cb..7a076df3a 100644 --- a/src/app/components/power/style.css.ts +++ b/src/app/components/power/style.css.ts @@ -1,5 +1,5 @@ import { createVar, style } from '@vanilla-extract/css'; -import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; +import { recipe, type RecipeVariants } from '@vanilla-extract/recipes'; import { color, config, DefaultReset, toRem } from 'folds'; export const PowerColorBadge = style({ diff --git a/src/app/components/presence/Presence.tsx b/src/app/components/presence/Presence.tsx index e6ac463bb..8e3d3c7d1 100644 --- a/src/app/components/presence/Presence.tsx +++ b/src/app/components/presence/Presence.tsx @@ -3,14 +3,14 @@ import { Badge, Box, color, - ContainerColor, - MainColor, + type ContainerColor, + type MainColor, Text, Tooltip, TooltipProvider, toRem, } from 'folds'; -import { ReactNode, useId } from 'react'; +import { type ReactNode, useId } from 'react'; import { Presence, usePresenceLabel } from '$hooks/useUserPresence'; import * as css from './styles.css'; diff --git a/src/app/components/room-avatar/AvatarImage.tsx b/src/app/components/room-avatar/AvatarImage.tsx index 1e4cb0d0a..97c06bb48 100644 --- a/src/app/components/room-avatar/AvatarImage.tsx +++ b/src/app/components/room-avatar/AvatarImage.tsx @@ -1,5 +1,5 @@ import { AvatarImage as FoldsAvatarImage } from 'folds'; -import { ReactEventHandler, useState, useEffect } from 'react'; +import { type ReactEventHandler, useState, useEffect } from 'react'; import bgColorImg from '$utils/bgColorImg'; import { settingsAtom } from '$state/settings'; import { useSetting } from '$state/hooks/settings'; diff --git a/src/app/components/room-avatar/RoomAvatar.tsx b/src/app/components/room-avatar/RoomAvatar.tsx index 356d9dbc2..991000df4 100644 --- a/src/app/components/room-avatar/RoomAvatar.tsx +++ b/src/app/components/room-avatar/RoomAvatar.tsx @@ -1,6 +1,6 @@ -import { JoinRule } from '$types/matrix-sdk'; +import { type JoinRule } from '$types/matrix-sdk'; import { AvatarFallback, Icon, Icons, color } from 'folds'; -import { ComponentProps, ReactNode, forwardRef, useState } from 'react'; +import { type ComponentProps, type ReactNode, forwardRef, useState } from 'react'; import { getRoomIconSrc } from '$utils/room'; import colorMXID from '$utils/colorMXID'; import * as css from './RoomAvatar.css'; diff --git a/src/app/components/room-card/RoomCard.tsx b/src/app/components/room-card/RoomCard.tsx index 7f9046d77..a507b684c 100644 --- a/src/app/components/room-card/RoomCard.tsx +++ b/src/app/components/room-card/RoomCard.tsx @@ -1,5 +1,5 @@ -import { ReactNode, useCallback, useRef, useState } from 'react'; -import { JoinRule, MatrixError, Room } from '$types/matrix-sdk'; +import { type ReactNode, useCallback, useRef, useState } from 'react'; +import { JoinRule, type MatrixError, type Room } from '$types/matrix-sdk'; import { Avatar, Badge, diff --git a/src/app/components/room-intro/RoomIntro.tsx b/src/app/components/room-intro/RoomIntro.tsx index 3ad39546f..aaf0698f6 100644 --- a/src/app/components/room-intro/RoomIntro.tsx +++ b/src/app/components/room-intro/RoomIntro.tsx @@ -1,8 +1,8 @@ import { useCallback, useEffect, useState } from 'react'; import { Avatar, Box, Button, Icon, Icons, Spinner, Text, as } from 'folds'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useAtomValue } from 'jotai'; -import { IRoomCreateContent, Membership, StateEvent } from '$types/matrix/room'; +import { type IRoomCreateContent, Membership, StateEvent } from '$types/matrix/room'; import { getMemberDisplayName, getStateEvent } from '$utils/room'; import { nicknamesAtom } from '$state/nicknames'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/components/scroll-top-container/ScrollTopContainer.tsx b/src/app/components/scroll-top-container/ScrollTopContainer.tsx index 4681e7baf..ecb204017 100644 --- a/src/app/components/scroll-top-container/ScrollTopContainer.tsx +++ b/src/app/components/scroll-top-container/ScrollTopContainer.tsx @@ -1,4 +1,4 @@ -import { RefObject, useCallback, useState } from 'react'; +import { type RefObject, useCallback, useState } from 'react'; import { Box, as } from 'folds'; import classNames from 'classnames'; import { diff --git a/src/app/components/sequence-card/SequenceCard.tsx b/src/app/components/sequence-card/SequenceCard.tsx index 7738d93fb..8d3ebbcc9 100644 --- a/src/app/components/sequence-card/SequenceCard.tsx +++ b/src/app/components/sequence-card/SequenceCard.tsx @@ -1,7 +1,7 @@ -import { ComponentProps } from 'react'; +import { type ComponentProps } from 'react'; import { Box, as } from 'folds'; import classNames from 'classnames'; -import { ContainerColor, ContainerColorVariants } from '$styles/ContainerColor.css'; +import { ContainerColor, type ContainerColorVariants } from '$styles/ContainerColor.css'; import * as css from './style.css'; export const SequenceCard = as< diff --git a/src/app/components/sequence-card/style.css.ts b/src/app/components/sequence-card/style.css.ts index 2665b46e7..17f02dcc3 100644 --- a/src/app/components/sequence-card/style.css.ts +++ b/src/app/components/sequence-card/style.css.ts @@ -1,5 +1,5 @@ import { createVar } from '@vanilla-extract/css'; -import { RecipeVariants, recipe } from '@vanilla-extract/recipes'; +import { type RecipeVariants, recipe } from '@vanilla-extract/recipes'; import { config } from 'folds'; const outlinedWidth = createVar('0'); diff --git a/src/app/components/setting-tile/SettingTile.tsx b/src/app/components/setting-tile/SettingTile.tsx index e57dccd55..d0280b9fa 100644 --- a/src/app/components/setting-tile/SettingTile.tsx +++ b/src/app/components/setting-tile/SettingTile.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { Box, Text } from 'folds'; import { BreakWord } from '$styles/Text.css'; diff --git a/src/app/components/sidebar/Sidebar.css.ts b/src/app/components/sidebar/Sidebar.css.ts index 2952a0f7d..063b83c4d 100644 --- a/src/app/components/sidebar/Sidebar.css.ts +++ b/src/app/components/sidebar/Sidebar.css.ts @@ -1,5 +1,5 @@ import { createVar, style } from '@vanilla-extract/css'; -import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; +import { recipe, type RecipeVariants } from '@vanilla-extract/recipes'; import { color, config, DefaultReset, Disabled, FocusOutline, toRem } from 'folds'; import { ContainerColor } from '$styles/ContainerColor.css'; diff --git a/src/app/components/sidebar/SidebarContent.tsx b/src/app/components/sidebar/SidebarContent.tsx index a4546b196..6e7f62fc2 100644 --- a/src/app/components/sidebar/SidebarContent.tsx +++ b/src/app/components/sidebar/SidebarContent.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { Box } from 'folds'; type SidebarContentProps = { diff --git a/src/app/components/sidebar/SidebarItem.tsx b/src/app/components/sidebar/SidebarItem.tsx index b624bf0c9..b0af1ec13 100644 --- a/src/app/components/sidebar/SidebarItem.tsx +++ b/src/app/components/sidebar/SidebarItem.tsx @@ -1,6 +1,6 @@ import classNames from 'classnames'; import { as, Avatar, Text, Tooltip, TooltipProvider, toRem } from 'folds'; -import { ComponentProps, ReactNode, RefCallback } from 'react'; +import { type ComponentProps, type ReactNode, type RefCallback } from 'react'; import * as css from './Sidebar.css'; export const SidebarItem = as<'div', css.SidebarItemVariants>( diff --git a/src/app/components/sidebar/SidebarUnreadBadge.tsx b/src/app/components/sidebar/SidebarUnreadBadge.tsx index df1f5b7ee..4ed6ef639 100644 --- a/src/app/components/sidebar/SidebarUnreadBadge.tsx +++ b/src/app/components/sidebar/SidebarUnreadBadge.tsx @@ -1,4 +1,8 @@ -import { UnreadBadge, UnreadBadgeMode, resolveUnreadBadgeMode } from '$components/unread-badge'; +import { + UnreadBadge, + type UnreadBadgeMode, + resolveUnreadBadgeMode, +} from '$components/unread-badge'; import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; import { SidebarItemBadge } from './SidebarItem'; diff --git a/src/app/components/splash-screen/SplashScreen.tsx b/src/app/components/splash-screen/SplashScreen.tsx index 463fd66d6..71cada585 100644 --- a/src/app/components/splash-screen/SplashScreen.tsx +++ b/src/app/components/splash-screen/SplashScreen.tsx @@ -1,5 +1,5 @@ import { Box, Text } from 'folds'; -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import classNames from 'classnames'; import * as patternsCSS from '$styles/Patterns.css'; import * as css from './SplashScreen.css'; diff --git a/src/app/components/stacked-avatar/styles.css.ts b/src/app/components/stacked-avatar/styles.css.ts index 3bbf7271a..b7f279e2e 100644 --- a/src/app/components/stacked-avatar/styles.css.ts +++ b/src/app/components/stacked-avatar/styles.css.ts @@ -1,6 +1,6 @@ -import { ComplexStyleRule } from '@vanilla-extract/css'; -import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; -import { color, config, ContainerColor, toRem } from 'folds'; +import { type ComplexStyleRule } from '@vanilla-extract/css'; +import { recipe, type RecipeVariants } from '@vanilla-extract/recipes'; +import { color, config, type ContainerColor, toRem } from 'folds'; const getVariant = (variant: ContainerColor): ComplexStyleRule => ({ outlineColor: color[variant].Container, diff --git a/src/app/components/text-viewer/TextViewer.tsx b/src/app/components/text-viewer/TextViewer.tsx index 8c6957ec8..a21672434 100644 --- a/src/app/components/text-viewer/TextViewer.tsx +++ b/src/app/components/text-viewer/TextViewer.tsx @@ -1,4 +1,4 @@ -import { ComponentProps, HTMLAttributes, Suspense, forwardRef, lazy } from 'react'; +import { type ComponentProps, type HTMLAttributes, Suspense, forwardRef, lazy } from 'react'; import classNames from 'classnames'; import { Box, Chip, Header, Icon, IconButton, Icons, Scroll, Text, as } from 'folds'; import { ErrorBoundary } from 'react-error-boundary'; diff --git a/src/app/components/time-date/PickerColumn.tsx b/src/app/components/time-date/PickerColumn.tsx index a1fbcb34f..4a74f713d 100644 --- a/src/app/components/time-date/PickerColumn.tsx +++ b/src/app/components/time-date/PickerColumn.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { Box, Text, Scroll } from 'folds'; import { CutoutCard } from '$components/cutout-card'; import * as css from './styles.css'; diff --git a/src/app/components/uia-stages/DummyStage.tsx b/src/app/components/uia-stages/DummyStage.tsx index 9a78af0e8..62f716458 100644 --- a/src/app/components/uia-stages/DummyStage.tsx +++ b/src/app/components/uia-stages/DummyStage.tsx @@ -1,7 +1,7 @@ import { useEffect, useCallback } from 'react'; import { Dialog, Text, Box, Button, config } from 'folds'; import { AuthType } from '$types/matrix-sdk'; -import { StageComponentProps } from './types'; +import { type StageComponentProps } from './types'; function DummyErrorDialog({ title, diff --git a/src/app/components/uia-stages/EmailStage.tsx b/src/app/components/uia-stages/EmailStage.tsx index 3d3134495..322f49d97 100644 --- a/src/app/components/uia-stages/EmailStage.tsx +++ b/src/app/components/uia-stages/EmailStage.tsx @@ -1,9 +1,9 @@ -import { useEffect, useCallback, FormEventHandler } from 'react'; +import { useEffect, useCallback, type FormEventHandler } from 'react'; import { Dialog, Text, Box, Button, config, Input, color, Spinner } from 'folds'; -import { AuthType, MatrixError } from '$types/matrix-sdk'; -import { AsyncState, AsyncStatus } from '$hooks/useAsyncCallback'; -import { RequestEmailTokenCallback, RequestEmailTokenResponse } from '$hooks/types'; -import { StageComponentProps } from './types'; +import { AuthType, type MatrixError } from '$types/matrix-sdk'; +import { type AsyncState, AsyncStatus } from '$hooks/useAsyncCallback'; +import { type RequestEmailTokenCallback, type RequestEmailTokenResponse } from '$hooks/types'; +import { type StageComponentProps } from './types'; function EmailErrorDialog({ title, diff --git a/src/app/components/uia-stages/PasswordStage.tsx b/src/app/components/uia-stages/PasswordStage.tsx index 8ebc923ab..e3b0884bf 100644 --- a/src/app/components/uia-stages/PasswordStage.tsx +++ b/src/app/components/uia-stages/PasswordStage.tsx @@ -1,8 +1,8 @@ import { Box, Button, color, config, Dialog, Header, Icon, IconButton, Icons, Text } from 'folds'; -import { FormEventHandler } from 'react'; +import { type FormEventHandler } from 'react'; import { AuthType } from '$types/matrix-sdk'; import { PasswordInput } from '$components/password-input'; -import { StageComponentProps } from './types'; +import { type StageComponentProps } from './types'; import { ErrorCode } from '../../cs-errorcode'; export function PasswordStage({ diff --git a/src/app/components/uia-stages/ReCaptchaStage.tsx b/src/app/components/uia-stages/ReCaptchaStage.tsx index 65357b0e4..ea190904e 100644 --- a/src/app/components/uia-stages/ReCaptchaStage.tsx +++ b/src/app/components/uia-stages/ReCaptchaStage.tsx @@ -1,7 +1,7 @@ import { Dialog, Text, Box, Button, config } from 'folds'; import { AuthType } from '$types/matrix-sdk'; import ReCAPTCHA from 'react-google-recaptcha'; -import { StageComponentProps } from './types'; +import { type StageComponentProps } from './types'; function ReCaptchaErrorDialog({ title, diff --git a/src/app/components/uia-stages/RegistrationTokenStage.tsx b/src/app/components/uia-stages/RegistrationTokenStage.tsx index cfe79786c..d471b3813 100644 --- a/src/app/components/uia-stages/RegistrationTokenStage.tsx +++ b/src/app/components/uia-stages/RegistrationTokenStage.tsx @@ -1,7 +1,7 @@ -import { useEffect, useCallback, FormEventHandler } from 'react'; +import { useEffect, useCallback, type FormEventHandler } from 'react'; import { Dialog, Text, Box, Button, config, Input } from 'folds'; import { AuthType } from '$types/matrix-sdk'; -import { StageComponentProps } from './types'; +import { type StageComponentProps } from './types'; function RegistrationTokenErrorDialog({ title, diff --git a/src/app/components/uia-stages/SSOStage.tsx b/src/app/components/uia-stages/SSOStage.tsx index fb20e03b1..5da517fda 100644 --- a/src/app/components/uia-stages/SSOStage.tsx +++ b/src/app/components/uia-stages/SSOStage.tsx @@ -1,6 +1,6 @@ import { Box, Button, color, config, Dialog, Header, Icon, IconButton, Icons, Text } from 'folds'; import { useCallback, useEffect, useState } from 'react'; -import { StageComponentProps } from './types'; +import { type StageComponentProps } from './types'; export function SSOStage({ ssoRedirectURL, diff --git a/src/app/components/uia-stages/TermsStage.tsx b/src/app/components/uia-stages/TermsStage.tsx index bfe8e4032..01fe7b441 100644 --- a/src/app/components/uia-stages/TermsStage.tsx +++ b/src/app/components/uia-stages/TermsStage.tsx @@ -1,7 +1,7 @@ import { useEffect, useCallback } from 'react'; import { Dialog, Text, Box, Button, config } from 'folds'; import { AuthType } from '$types/matrix-sdk'; -import { StageComponentProps } from './types'; +import { type StageComponentProps } from './types'; function TermsErrorDialog({ title, diff --git a/src/app/components/uia-stages/types.ts b/src/app/components/uia-stages/types.ts index 3408cd013..ca81984ff 100644 --- a/src/app/components/uia-stages/types.ts +++ b/src/app/components/uia-stages/types.ts @@ -1,5 +1,5 @@ -import { AuthDict } from '$types/matrix-sdk'; -import { AuthStageData } from '$hooks/useUIAFlows'; +import { type AuthDict } from '$types/matrix-sdk'; +import { type AuthStageData } from '$hooks/useUIAFlows'; export type StageComponentProps = { stageData: AuthStageData; diff --git a/src/app/components/unread-badge/UnreadBadge.tsx b/src/app/components/unread-badge/UnreadBadge.tsx index c623795de..0c0c29477 100644 --- a/src/app/components/unread-badge/UnreadBadge.tsx +++ b/src/app/components/unread-badge/UnreadBadge.tsx @@ -1,4 +1,4 @@ -import { CSSProperties, ReactNode } from 'react'; +import { type CSSProperties, type ReactNode } from 'react'; import { Box, Badge, toRem, Text } from 'folds'; import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; diff --git a/src/app/components/upload-board/UploadBoard.tsx b/src/app/components/upload-board/UploadBoard.tsx index 8f71c22e9..f03eb0d4b 100644 --- a/src/app/components/upload-board/UploadBoard.tsx +++ b/src/app/components/upload-board/UploadBoard.tsx @@ -1,9 +1,14 @@ -import { MutableRefObject, ReactNode, useImperativeHandle, useRef } from 'react'; +import { type MutableRefObject, type ReactNode, useImperativeHandle, useRef } from 'react'; import { Badge, Box, Chip, Header, Icon, Icons, Spinner, Text, as, percent } from 'folds'; import classNames from 'classnames'; import { useAtomValue } from 'jotai'; -import { TUploadFamilyObserverAtom, Upload, UploadStatus, UploadSuccess } from '$state/upload'; +import { + type TUploadFamilyObserverAtom, + type Upload, + UploadStatus, + type UploadSuccess, +} from '$state/upload'; import * as css from './UploadBoard.css'; type UploadBoardProps = { diff --git a/src/app/components/upload-card/CompactUploadCardRenderer.tsx b/src/app/components/upload-card/CompactUploadCardRenderer.tsx index c4f5cdfa2..46708c690 100644 --- a/src/app/components/upload-card/CompactUploadCardRenderer.tsx +++ b/src/app/components/upload-card/CompactUploadCardRenderer.tsx @@ -1,8 +1,13 @@ import { useEffect } from 'react'; import { Chip, Icon, IconButton, Icons, Text, color } from 'folds'; -import { TUploadAtom, UploadStatus, UploadSuccess, useBindUploadAtom } from '$state/upload'; +import { + type TUploadAtom, + UploadStatus, + type UploadSuccess, + useBindUploadAtom, +} from '$state/upload'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { TUploadContent } from '$utils/matrix'; +import { type TUploadContent } from '$utils/matrix'; import { bytesToSize, getFileTypeIcon } from '$utils/common'; import { useMediaConfig } from '$hooks/useMediaConfig'; import { UploadCard, UploadCardError, CompactUploadCardProgress } from './UploadCard'; diff --git a/src/app/components/upload-card/UploadCard.css.ts b/src/app/components/upload-card/UploadCard.css.ts index d02cbe3f5..fb15c4955 100644 --- a/src/app/components/upload-card/UploadCard.css.ts +++ b/src/app/components/upload-card/UploadCard.css.ts @@ -1,5 +1,5 @@ import { style } from '@vanilla-extract/css'; -import { RecipeVariants, recipe } from '@vanilla-extract/recipes'; +import { type RecipeVariants, recipe } from '@vanilla-extract/recipes'; import { DefaultReset, RadiiVariant, color, config, toRem } from 'folds'; export const UploadCard = recipe({ diff --git a/src/app/components/upload-card/UploadCard.tsx b/src/app/components/upload-card/UploadCard.tsx index bfe11d475..6111515fb 100644 --- a/src/app/components/upload-card/UploadCard.tsx +++ b/src/app/components/upload-card/UploadCard.tsx @@ -1,5 +1,5 @@ import { Badge, Box, Icon, Icons, ProgressBar, Text, percent } from 'folds'; -import { ReactNode, forwardRef } from 'react'; +import { type ReactNode, forwardRef } from 'react'; import { bytesToSize } from '$utils/common'; import * as css from './UploadCard.css'; diff --git a/src/app/components/upload-card/UploadCardRenderer.tsx b/src/app/components/upload-card/UploadCardRenderer.tsx index d9fa444f7..2eb88190f 100644 --- a/src/app/components/upload-card/UploadCardRenderer.tsx +++ b/src/app/components/upload-card/UploadCardRenderer.tsx @@ -1,4 +1,4 @@ -import { ReactNode, useEffect, useMemo, useRef, useState } from 'react'; +import { type ReactNode, useEffect, useMemo, useRef, useState } from 'react'; import { Box, Chip, @@ -13,18 +13,22 @@ import { config, toRem, } from 'folds'; -import { HTMLReactParserOptions } from 'html-react-parser'; +import { type HTMLReactParserOptions } from 'html-react-parser'; import { Play, Pause } from '@phosphor-icons/react'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; -import { Opts as LinkifyOpts } from 'linkifyjs'; +import { type Opts as LinkifyOpts } from 'linkifyjs'; import { getReactCustomHtmlParser, LINKIFY_OPTS } from '$plugins/react-custom-html-parser'; import { useSpoilerClickHandler } from '$hooks/useSpoilerClickHandler'; import { RenderBody } from '$components/message'; -import { UploadStatus, UploadSuccess, useBindUploadAtom } from '$state/upload'; +import { UploadStatus, type UploadSuccess, useBindUploadAtom } from '$state/upload'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { TUploadContent } from '$utils/matrix'; +import { type TUploadContent } from '$utils/matrix'; import { bytesToSize, getFileTypeIcon } from '$utils/common'; -import { roomUploadAtomFamily, TUploadItem, TUploadMetadata } from '$state/room/roomInputDrafts'; +import { + roomUploadAtomFamily, + type TUploadItem, + type TUploadMetadata, +} from '$state/room/roomInputDrafts'; import { useObjectURL } from '$hooks/useObjectURL'; import { useMediaConfig } from '$hooks/useMediaConfig'; import { UploadCard, UploadCardError, UploadCardProgress } from './UploadCard'; diff --git a/src/app/components/upload-card/UploadDescriptionEditor.tsx b/src/app/components/upload-card/UploadDescriptionEditor.tsx index 563f06eda..6d527c783 100644 --- a/src/app/components/upload-card/UploadDescriptionEditor.tsx +++ b/src/app/components/upload-card/UploadDescriptionEditor.tsx @@ -1,4 +1,4 @@ -import { KeyboardEventHandler, useCallback, useEffect, useState, useRef } from 'react'; +import { type KeyboardEventHandler, useCallback, useEffect, useState, useRef } from 'react'; import { Box, Chip, @@ -7,7 +7,7 @@ import { Icons, Line, PopOut, - RectCords, + type RectCords, Spinner, Text, config, @@ -17,7 +17,7 @@ import { ReactEditor } from 'slate-react'; import { isKeyHotkey } from 'is-hotkey'; import { AutocompletePrefix, - AutocompleteQuery, + type AutocompleteQuery, CustomEditor, EmoticonAutocomplete, Toolbar, diff --git a/src/app/components/url-preview/ClientPreview.tsx b/src/app/components/url-preview/ClientPreview.tsx index 962168d5f..922c25981 100644 --- a/src/app/components/url-preview/ClientPreview.tsx +++ b/src/app/components/url-preview/ClientPreview.tsx @@ -1,4 +1,4 @@ -import { useCallback, useEffect, useState, ReactNode } from 'react'; +import { useCallback, useEffect, useState, type ReactNode } from 'react'; import { Box, Badge, Icon, IconButton, Icons, Spinner, Text, as, toRem } from 'folds'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useSetting } from '$state/hooks/settings'; diff --git a/src/app/components/url-preview/UrlPreviewCard.tsx b/src/app/components/url-preview/UrlPreviewCard.tsx index 62106a00a..ff48f78d9 100644 --- a/src/app/components/url-preview/UrlPreviewCard.tsx +++ b/src/app/components/url-preview/UrlPreviewCard.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useRef, useState } from 'react'; -import { IPreviewUrlResponse } from '$types/matrix-sdk'; +import { type IPreviewUrlResponse } from '$types/matrix-sdk'; import { Box, Icon, IconButton, Icons, Scroll, Spinner, Text, as, color, config } from 'folds'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/components/user-avatar/UserAvatar.tsx b/src/app/components/user-avatar/UserAvatar.tsx index 3659cb305..a036221d4 100644 --- a/src/app/components/user-avatar/UserAvatar.tsx +++ b/src/app/components/user-avatar/UserAvatar.tsx @@ -1,5 +1,5 @@ import { AvatarFallback, AvatarImage, color } from 'folds'; -import { ReactEventHandler, ReactNode, useState } from 'react'; +import { type ReactEventHandler, type ReactNode, useState } from 'react'; import classNames from 'classnames'; import colorMXID from '$utils/colorMXID'; import * as css from './UserAvatar.css'; diff --git a/src/app/components/user-profile/CreatorChip.tsx b/src/app/components/user-profile/CreatorChip.tsx index f517581cc..6499a36a7 100644 --- a/src/app/components/user-profile/CreatorChip.tsx +++ b/src/app/components/user-profile/CreatorChip.tsx @@ -1,5 +1,5 @@ -import { Chip, config, Icon, Icons, Menu, MenuItem, PopOut, RectCords, Text } from 'folds'; -import { MouseEventHandler, useState } from 'react'; +import { Chip, config, Icon, Icons, Menu, MenuItem, PopOut, type RectCords, Text } from 'folds'; +import { type MouseEventHandler, useState } from 'react'; import FocusTrap from 'focus-trap-react'; import { isKeyHotkey } from 'is-hotkey'; import { useRoomCreatorsTag } from '$hooks/useRoomCreatorsTag'; diff --git a/src/app/components/user-profile/PowerChip.tsx b/src/app/components/user-profile/PowerChip.tsx index d1e4dbfa2..22f5a9f8a 100644 --- a/src/app/components/user-profile/PowerChip.tsx +++ b/src/app/components/user-profile/PowerChip.tsx @@ -15,12 +15,12 @@ import { OverlayBackdrop, OverlayCenter, PopOut, - RectCords, + type RectCords, Spinner, Text, toRem, } from 'folds'; -import { MouseEventHandler, useCallback, useState } from 'react'; +import { type MouseEventHandler, useCallback, useState } from 'react'; import FocusTrap from 'focus-trap-react'; import { isKeyHotkey } from 'is-hotkey'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/components/user-profile/UserChips.tsx b/src/app/components/user-profile/UserChips.tsx index 1ce3b26c1..fbcf870f1 100644 --- a/src/app/components/user-profile/UserChips.tsx +++ b/src/app/components/user-profile/UserChips.tsx @@ -1,6 +1,6 @@ import { - KeyboardEventHandler, - MouseEventHandler, + type KeyboardEventHandler, + type MouseEventHandler, useCallback, useEffect, useMemo, @@ -10,7 +10,7 @@ import { import { useNavigate } from 'react-router-dom'; import FocusTrap from 'focus-trap-react'; import { isKeyHotkey } from 'is-hotkey'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { PopOut, Menu, @@ -21,7 +21,7 @@ import { Chip, Icon, Icons, - RectCords, + type RectCords, Spinner, toRem, Box, diff --git a/src/app/components/user-profile/UserHero.tsx b/src/app/components/user-profile/UserHero.tsx index 0acdc3618..dccfab777 100644 --- a/src/app/components/user-profile/UserHero.tsx +++ b/src/app/components/user-profile/UserHero.tsx @@ -18,7 +18,7 @@ import FocusTrap from 'focus-trap-react'; import colorMXID from '$utils/colorMXID'; import { getMxIdLocalPart } from '$utils/matrix'; import { BreakWord, LineClamp3 } from '$styles/Text.css'; -import { UserPresence } from '$hooks/useUserPresence'; +import { type UserPresence } from '$hooks/useUserPresence'; import { stopPropagation } from '$utils/keyboard'; import { useRoom } from '$hooks/useRoom'; import { useSableCosmetics } from '$hooks/useSableCosmetics'; diff --git a/src/app/components/user-profile/UserRoomProfile.tsx b/src/app/components/user-profile/UserRoomProfile.tsx index e11deaa83..67a26a553 100644 --- a/src/app/components/user-profile/UserRoomProfile.tsx +++ b/src/app/components/user-profile/UserRoomProfile.tsx @@ -1,9 +1,9 @@ import { Box, Button, config, Icon, Icons, Scroll, Text } from 'folds'; -import { SyntheticEvent, useCallback, useMemo, useState } from 'react'; +import { type SyntheticEvent, useCallback, useMemo, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { useAtomValue } from 'jotai'; -import { Opts as LinkifyOpts } from 'linkifyjs'; -import { HTMLReactParserOptions } from 'html-react-parser'; +import { type Opts as LinkifyOpts } from 'linkifyjs'; +import { type HTMLReactParserOptions } from 'html-react-parser'; import { getMxIdServer, mxcUrlToHttp } from '$utils/matrix'; import { getMemberAvatarMxc, getMemberDisplayName } from '$utils/room'; import { useMatrixClient } from '$hooks/useMatrixClient'; @@ -19,9 +19,9 @@ import { useRoomCreators } from '$hooks/useRoomCreators'; import { useRoomPermissions } from '$hooks/useRoomPermissions'; import { useMemberPowerCompare } from '$hooks/useMemberPowerCompare'; import { getDirectCreatePath, withSearchParam } from '$pages/pathUtils'; -import { DirectCreateSearchParams } from '$pages/paths'; +import { type DirectCreateSearchParams } from '$pages/paths'; import { nicknamesAtom } from '$state/nicknames'; -import { UserProfile, useUserProfile } from '$hooks/useUserProfile'; +import { type UserProfile, useUserProfile } from '$hooks/useUserProfile'; import { factoryRenderLinkifyWithMention, getReactCustomHtmlParser, diff --git a/src/app/components/virtualizer/VirtualTile.tsx b/src/app/components/virtualizer/VirtualTile.tsx index b92add55a..22c4faadd 100644 --- a/src/app/components/virtualizer/VirtualTile.tsx +++ b/src/app/components/virtualizer/VirtualTile.tsx @@ -1,4 +1,4 @@ -import { VirtualItem } from '@tanstack/react-virtual'; +import { type VirtualItem } from '@tanstack/react-virtual'; import { as } from 'folds'; import classNames from 'classnames'; import * as css from './style.css'; diff --git a/src/app/features/add-existing/AddExisting.tsx b/src/app/features/add-existing/AddExisting.tsx index 50cfc6717..fdee02b0c 100644 --- a/src/app/features/add-existing/AddExisting.tsx +++ b/src/app/features/add-existing/AddExisting.tsx @@ -20,8 +20,8 @@ import { Text, } from 'folds'; import { - ChangeEventHandler, - MouseEventHandler, + type ChangeEventHandler, + type MouseEventHandler, useCallback, useMemo, useRef, @@ -29,7 +29,7 @@ import { } from 'react'; import { useAtomValue } from 'jotai'; import { useVirtualizer } from '@tanstack/react-virtual'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { stopPropagation } from '$utils/keyboard'; import { useDirects, useRooms, useSpaces } from '$state/hooks/roomList'; import { useMatrixClient } from '$hooks/useMatrixClient'; @@ -43,7 +43,11 @@ import { RoomAvatar, RoomIcon } from '$components/room-avatar'; import { nameInitials } from '$utils/common'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { factoryRoomIdByAtoZ } from '$utils/sort'; -import { SearchItemStrGetter, useAsyncSearch, UseAsyncSearchOptions } from '$hooks/useAsyncSearch'; +import { + type SearchItemStrGetter, + useAsyncSearch, + type UseAsyncSearchOptions, +} from '$hooks/useAsyncSearch'; import { highlightText, makeHighlightRegex } from '$plugins/react-custom-html-parser'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { StateEvent } from '$types/matrix/room'; diff --git a/src/app/features/call-status/CallControl.tsx b/src/app/features/call-status/CallControl.tsx index 128df221f..d10a28a51 100644 --- a/src/app/features/call-status/CallControl.tsx +++ b/src/app/features/call-status/CallControl.tsx @@ -2,7 +2,7 @@ import { Box, Chip, Icon, IconButton, Icons, Spinner, Text, Tooltip, TooltipProv import { useCallback } from 'react'; import { useSetAtom } from 'jotai'; import { StatusDivider } from './components'; -import { CallEmbed, useCallControlState } from '../../plugins/call'; +import { type CallEmbed, useCallControlState } from '../../plugins/call'; import { AsyncStatus, useAsyncCallback } from '../../hooks/useAsyncCallback'; import { callEmbedAtom } from '../../state/callEmbed'; diff --git a/src/app/features/call-status/CallRoomName.tsx b/src/app/features/call-status/CallRoomName.tsx index e2cca3b1b..189d5e0ff 100644 --- a/src/app/features/call-status/CallRoomName.tsx +++ b/src/app/features/call-status/CallRoomName.tsx @@ -1,4 +1,4 @@ -import { Room } from 'matrix-js-sdk'; +import { type Room } from 'matrix-js-sdk'; import { Chip, Text } from 'folds'; import { useAtomValue } from 'jotai'; import { useRoomName } from '../../hooks/useRoomMeta'; diff --git a/src/app/features/call-status/CallStatus.tsx b/src/app/features/call-status/CallStatus.tsx index 899bff7d6..4379ac227 100644 --- a/src/app/features/call-status/CallStatus.tsx +++ b/src/app/features/call-status/CallStatus.tsx @@ -9,7 +9,7 @@ import { useCallMembers, useCallSession } from '../../hooks/useCall'; import { ScreenSize, useScreenSize } from '../../hooks/useScreenSize'; import { MemberGlance } from './MemberGlance'; import { StatusDivider } from './components'; -import { CallEmbed } from '../../plugins/call/CallEmbed'; +import { type CallEmbed } from '../../plugins/call/CallEmbed'; import { useCallJoined } from '../../hooks/useCallEmbed'; import { useCallSpeakers } from '../../hooks/useCallSpeakers'; import { MemberSpeaking } from './MemberSpeaking'; diff --git a/src/app/features/call-status/LiveChip.tsx b/src/app/features/call-status/LiveChip.tsx index e62af0e24..6476ab2d4 100644 --- a/src/app/features/call-status/LiveChip.tsx +++ b/src/app/features/call-status/LiveChip.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useState } from 'react'; +import { type MouseEventHandler, useState } from 'react'; import { Avatar, Badge, @@ -10,14 +10,14 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Scroll, Text, toRem, } from 'folds'; -import { CallMembership } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; +import { type CallMembership } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; import FocusTrap from 'focus-trap-react'; -import { Room } from 'matrix-js-sdk'; +import { type Room } from 'matrix-js-sdk'; import * as css from './styles.css'; import { stopPropagation } from '../../utils/keyboard'; import { getMemberAvatarMxc, getMemberDisplayName } from '../../utils/room'; diff --git a/src/app/features/call-status/MemberGlance.tsx b/src/app/features/call-status/MemberGlance.tsx index 88c114d51..681e13161 100644 --- a/src/app/features/call-status/MemberGlance.tsx +++ b/src/app/features/call-status/MemberGlance.tsx @@ -1,6 +1,6 @@ import { Box, config, Icon, Icons, Text } from 'folds'; -import { CallMembership } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; -import { Room } from 'matrix-js-sdk'; +import { type CallMembership } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; +import { type Room } from 'matrix-js-sdk'; import { UserAvatar } from '../../components/user-avatar'; import { getMemberAvatarMxc, getMemberDisplayName } from '../../utils/room'; import { getMxIdLocalPart, mxcUrlToHttp } from '../../utils/matrix'; diff --git a/src/app/features/call-status/MemberSpeaking.tsx b/src/app/features/call-status/MemberSpeaking.tsx index b80190cd3..3c7206e5b 100644 --- a/src/app/features/call-status/MemberSpeaking.tsx +++ b/src/app/features/call-status/MemberSpeaking.tsx @@ -1,4 +1,4 @@ -import { Room } from 'matrix-js-sdk'; +import { type Room } from 'matrix-js-sdk'; import { Box, Icon, Icons, Text } from 'folds'; import { getMemberDisplayName } from '../../utils/room'; import { getMxIdLocalPart } from '../../utils/matrix'; diff --git a/src/app/features/call/CallControls.tsx b/src/app/features/call/CallControls.tsx index 6643069c5..f015e684e 100644 --- a/src/app/features/call/CallControls.tsx +++ b/src/app/features/call/CallControls.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useCallback, useEffect, useRef, useState } from 'react'; +import { type MouseEventHandler, useCallback, useEffect, useRef, useState } from 'react'; import { Box, Button, @@ -9,14 +9,14 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Spinner, Text, toRem, } from 'folds'; import FocusTrap from 'focus-trap-react'; import { SequenceCard } from '$components/sequence-card'; -import { CallEmbed, useCallControlState } from '$plugins/call'; +import { type CallEmbed, useCallControlState } from '$plugins/call'; import { stopPropagation } from '$utils/keyboard'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useRoom } from '$hooks/useRoom'; diff --git a/src/app/features/call/CallMemberCard.tsx b/src/app/features/call/CallMemberCard.tsx index 7d03ac77b..0c4ca7601 100644 --- a/src/app/features/call/CallMemberCard.tsx +++ b/src/app/features/call/CallMemberCard.tsx @@ -1,4 +1,7 @@ -import { CallMembership, SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; +import { + type CallMembership, + type SessionMembershipData, +} from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; import { useState } from 'react'; import { Avatar, Box, Icon, Icons, Text } from 'folds'; import { useMatrixClient } from '../../hooks/useMatrixClient'; diff --git a/src/app/features/common-settings/cosmetics/Cosmetics.tsx b/src/app/features/common-settings/cosmetics/Cosmetics.tsx index be793be7b..2533c2b2c 100644 --- a/src/app/features/common-settings/cosmetics/Cosmetics.tsx +++ b/src/app/features/common-settings/cosmetics/Cosmetics.tsx @@ -1,7 +1,7 @@ import { - ChangeEvent, - ChangeEventHandler, - FormEventHandler, + type ChangeEvent, + type ChangeEventHandler, + type FormEventHandler, useCallback, useEffect, useMemo, @@ -41,14 +41,14 @@ import { SequenceCardStyle } from '$features/common-settings/styles.css'; import { UserAvatar } from '$components/user-avatar'; import { nameInitials } from '$utils/common'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; -import { UserProfile, useUserProfile } from '$hooks/useUserProfile'; +import { type UserProfile, useUserProfile } from '$hooks/useUserProfile'; import { getMxIdLocalPart, mxcUrlToHttp } from '$utils/matrix'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; -import { Room, RoomMember } from '$types/matrix-sdk'; +import { type Room, type RoomMember } from '$types/matrix-sdk'; import { Command, useCommands } from '$hooks/useCommands'; import { useCapabilities } from '$hooks/useCapabilities'; import { useObjectURL } from '$hooks/useObjectURL'; -import { createUploadAtom, UploadSuccess } from '$state/upload'; +import { createUploadAtom, type UploadSuccess } from '$state/upload'; import { useFilePicker } from '$hooks/useFilePicker'; import { CompactUploadCardRenderer } from '$components/upload-card'; import FocusTrap from 'focus-trap-react'; @@ -57,7 +57,7 @@ import { stopPropagation } from '$utils/keyboard'; import { ModalWide } from '$styles/Modal.css'; import { NameColorEditor } from '$features/settings/account/NameColorEditor'; import { PronounEditor } from '$features/settings/account/PronounEditor'; -import { PronounSet } from '$utils/pronouns'; +import { type PronounSet } from '$utils/pronouns'; const log = createLogger('Cosmetics'); diff --git a/src/app/features/common-settings/developer-tools/DevelopTools.tsx b/src/app/features/common-settings/developer-tools/DevelopTools.tsx index aec2f2ca7..705ab1983 100644 --- a/src/app/features/common-settings/developer-tools/DevelopTools.tsx +++ b/src/app/features/common-settings/developer-tools/DevelopTools.tsx @@ -29,11 +29,11 @@ import { allRoomsAtom } from '$state/room-list/roomList'; import { allInvitesAtom } from '$state/room-list/inviteList'; import { isNotificationEvent } from '$utils/room'; import { CutoutCard } from '$components/cutout-card'; -import { AccountDataEditor, AccountDataSubmitCallback } from '$components/AccountDataEditor'; +import { AccountDataEditor, type AccountDataSubmitCallback } from '$components/AccountDataEditor'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { SequenceCardStyle } from '$features/common-settings/styles.css'; import { SendRoomEvent } from './SendRoomEvent'; -import { StateEventEditor, StateEventInfo } from './StateEventEditor'; +import { StateEventEditor, type StateEventInfo } from './StateEventEditor'; const formatSyncReason = (reason: string): string => { if (reason === 'sliding_active') return 'Sliding Sync active'; diff --git a/src/app/features/common-settings/developer-tools/SendRoomEvent.tsx b/src/app/features/common-settings/developer-tools/SendRoomEvent.tsx index b246b14b6..fd1a1cff0 100644 --- a/src/app/features/common-settings/developer-tools/SendRoomEvent.tsx +++ b/src/app/features/common-settings/developer-tools/SendRoomEvent.tsx @@ -1,5 +1,5 @@ -import { useCallback, useRef, useState, FormEventHandler, useEffect } from 'react'; -import { MatrixError } from '$types/matrix-sdk'; +import { useCallback, useRef, useState, type FormEventHandler, useEffect } from 'react'; +import { type MatrixError } from '$types/matrix-sdk'; import { Box, Chip, diff --git a/src/app/features/common-settings/developer-tools/StateEventEditor.tsx b/src/app/features/common-settings/developer-tools/StateEventEditor.tsx index 00bbd1125..fe69b5f62 100644 --- a/src/app/features/common-settings/developer-tools/StateEventEditor.tsx +++ b/src/app/features/common-settings/developer-tools/StateEventEditor.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { type FormEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Box, Text, @@ -13,13 +13,13 @@ import { Spinner, Button, } from 'folds'; -import { MatrixError } from '$types/matrix-sdk'; +import { type MatrixError } from '$types/matrix-sdk'; import { Page, PageHeader } from '$components/page'; import { SequenceCard } from '$components/sequence-card'; import { TextViewerContent } from '$components/text-viewer'; import { useStateEvent } from '$hooks/useStateEvent'; import { useRoom } from '$hooks/useRoom'; -import { StateEvent } from '$types/matrix/room'; +import { type StateEvent } from '$types/matrix/room'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useAlive } from '$hooks/useAlive'; import { Cursor } from '$plugins/text-area'; diff --git a/src/app/features/common-settings/emojis-stickers/EmojisStickers.tsx b/src/app/features/common-settings/emojis-stickers/EmojisStickers.tsx index 0ee350a69..6de76d7ac 100644 --- a/src/app/features/common-settings/emojis-stickers/EmojisStickers.tsx +++ b/src/app/features/common-settings/emojis-stickers/EmojisStickers.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; import { Box, Icon, IconButton, Icons, Scroll, Text } from 'folds'; import { Page, PageContent, PageHeader } from '$components/page'; -import { ImagePack } from '$plugins/custom-emoji'; +import { type ImagePack } from '$plugins/custom-emoji'; import { ImagePackView } from '$components/image-pack-view'; import { RoomPacks } from './RoomPacks'; diff --git a/src/app/features/common-settings/emojis-stickers/RoomPacks.tsx b/src/app/features/common-settings/emojis-stickers/RoomPacks.tsx index 6162e4c0b..6a9e05b35 100644 --- a/src/app/features/common-settings/emojis-stickers/RoomPacks.tsx +++ b/src/app/features/common-settings/emojis-stickers/RoomPacks.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, useCallback, useMemo, useState } from 'react'; +import { type FormEventHandler, useCallback, useMemo, useState } from 'react'; import { Box, Text, @@ -16,14 +16,14 @@ import { IconButton, Menu, } from 'folds'; -import { MatrixError } from '$types/matrix-sdk'; +import { type MatrixError } from '$types/matrix-sdk'; import { SequenceCard } from '$components/sequence-card'; import { - ImagePack, + type ImagePack, ImageUsage, - PackAddress, + type PackAddress, packAddressEqual, - PackContent, + type PackContent, } from '$plugins/custom-emoji'; import { useRoom } from '$hooks/useRoom'; import { useRoomImagePacks } from '$hooks/useImagePacks'; diff --git a/src/app/features/common-settings/general/RoomAddress.tsx b/src/app/features/common-settings/general/RoomAddress.tsx index f1ae66968..80e3247ab 100644 --- a/src/app/features/common-settings/general/RoomAddress.tsx +++ b/src/app/features/common-settings/general/RoomAddress.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, useCallback, useState } from 'react'; +import { type FormEventHandler, useCallback, useState } from 'react'; import { Badge, Box, @@ -14,7 +14,7 @@ import { Text, toRem, } from 'folds'; -import { MatrixError } from '$types/matrix-sdk'; +import { type MatrixError } from '$types/matrix-sdk'; import { SettingTile } from '$components/setting-tile'; import { SequenceCard } from '$components/sequence-card'; import { SequenceCardStyle } from '$features/room-settings/styles.css'; @@ -31,7 +31,7 @@ import { CutoutCard } from '$components/cutout-card'; import { replaceSpaceWithDash } from '$utils/common'; import { useAlive } from '$hooks/useAlive'; import { StateEvent } from '$types/matrix/room'; -import { RoomPermissionsAPI } from '$hooks/useRoomPermissions'; +import { type RoomPermissionsAPI } from '$hooks/useRoomPermissions'; import { getMxIdServer } from '$utils/matrix'; type RoomPublishedAddressesProps = { diff --git a/src/app/features/common-settings/general/RoomEncryption.tsx b/src/app/features/common-settings/general/RoomEncryption.tsx index 3dc87f840..dac24596f 100644 --- a/src/app/features/common-settings/general/RoomEncryption.tsx +++ b/src/app/features/common-settings/general/RoomEncryption.tsx @@ -16,7 +16,7 @@ import { Text, } from 'folds'; import { useCallback, useState } from 'react'; -import { MatrixError } from '$types/matrix-sdk'; +import { type MatrixError } from '$types/matrix-sdk'; import FocusTrap from 'focus-trap-react'; import { SequenceCard } from '$components/sequence-card'; import { SequenceCardStyle } from '$features/room-settings/styles.css'; @@ -27,7 +27,7 @@ import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useRoom } from '$hooks/useRoom'; import { useStateEvent } from '$hooks/useStateEvent'; import { stopPropagation } from '$utils/keyboard'; -import { RoomPermissionsAPI } from '$hooks/useRoomPermissions'; +import { type RoomPermissionsAPI } from '$hooks/useRoomPermissions'; const ROOM_ENC_ALGO = 'm.megolm.v1.aes-sha2'; diff --git a/src/app/features/common-settings/general/RoomHistoryVisibility.tsx b/src/app/features/common-settings/general/RoomHistoryVisibility.tsx index 2f93472e6..9671110e1 100644 --- a/src/app/features/common-settings/general/RoomHistoryVisibility.tsx +++ b/src/app/features/common-settings/general/RoomHistoryVisibility.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useCallback, useMemo, useState } from 'react'; +import { type MouseEventHandler, useCallback, useMemo, useState } from 'react'; import { Button, color, @@ -8,14 +8,14 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Spinner, Text, } from 'folds'; import { HistoryVisibility, - MatrixError, - RoomHistoryVisibilityEventContent, + type MatrixError, + type RoomHistoryVisibilityEventContent, } from '$types/matrix-sdk'; import FocusTrap from 'focus-trap-react'; import { SequenceCard } from '$components/sequence-card'; @@ -27,7 +27,7 @@ import { StateEvent } from '$types/matrix/room'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useStateEvent } from '$hooks/useStateEvent'; import { stopPropagation } from '$utils/keyboard'; -import { RoomPermissionsAPI } from '$hooks/useRoomPermissions'; +import { type RoomPermissionsAPI } from '$hooks/useRoomPermissions'; const useVisibilityStr = () => useMemo( diff --git a/src/app/features/common-settings/general/RoomJoinRules.tsx b/src/app/features/common-settings/general/RoomJoinRules.tsx index 5a6c3697f..f69e194db 100644 --- a/src/app/features/common-settings/general/RoomJoinRules.tsx +++ b/src/app/features/common-settings/general/RoomJoinRules.tsx @@ -2,13 +2,13 @@ import { useCallback, useMemo } from 'react'; import { color, Text } from 'folds'; import { JoinRule, - MatrixError, + type MatrixError, RestrictedAllowType, - RoomJoinRulesEventContent, + type RoomJoinRulesEventContent, } from '$types/matrix-sdk'; import { useAtomValue } from 'jotai'; import { - ExtendedJoinRules, + type ExtendedJoinRules, JoinRulesSwitcher, useJoinRuleIcons, useRoomJoinRuleLabel, @@ -27,7 +27,7 @@ import { useRecursiveChildSpaceScopeFactory, useSpaceChildren } from '$state/hoo import { allRoomsAtom } from '$state/room-list/roomList'; import { roomToParentsAtom } from '$state/room/roomToParents'; import { knockRestrictedSupported, knockSupported, restrictedSupported } from '$utils/matrix'; -import { RoomPermissionsAPI } from '$hooks/useRoomPermissions'; +import { type RoomPermissionsAPI } from '$hooks/useRoomPermissions'; type RestrictedRoomAllowContent = { room_id: string; diff --git a/src/app/features/common-settings/general/RoomProfile.tsx b/src/app/features/common-settings/general/RoomProfile.tsx index cd523f32b..b6df8ec3d 100644 --- a/src/app/features/common-settings/general/RoomProfile.tsx +++ b/src/app/features/common-settings/general/RoomProfile.tsx @@ -11,11 +11,11 @@ import { Text, TextArea, } from 'folds'; -import { FormEventHandler, useCallback, useMemo, useState } from 'react'; +import { type FormEventHandler, useCallback, useMemo, useState } from 'react'; import { useAtomValue } from 'jotai'; import Linkify from 'linkify-react'; import classNames from 'classnames'; -import { JoinRule, MatrixError } from '$types/matrix-sdk'; +import { JoinRule, type MatrixError } from '$types/matrix-sdk'; import { SequenceCard } from '$components/sequence-card'; import { SequenceCardStyle } from '$features/room-settings/styles.css'; import { useRoom } from '$hooks/useRoom'; @@ -30,11 +30,11 @@ import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { StateEvent } from '$types/matrix/room'; import { CompactUploadCardRenderer } from '$components/upload-card'; import { useObjectURL } from '$hooks/useObjectURL'; -import { createUploadAtom, UploadSuccess } from '$state/upload'; +import { createUploadAtom, type UploadSuccess } from '$state/upload'; import { useFilePicker } from '$hooks/useFilePicker'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useAlive } from '$hooks/useAlive'; -import { RoomPermissionsAPI } from '$hooks/useRoomPermissions'; +import { type RoomPermissionsAPI } from '$hooks/useRoomPermissions'; type RoomProfileEditProps = { canEditAvatar: boolean; diff --git a/src/app/features/common-settings/general/RoomPublish.tsx b/src/app/features/common-settings/general/RoomPublish.tsx index a4aa47d2a..5739cc5ee 100644 --- a/src/app/features/common-settings/general/RoomPublish.tsx +++ b/src/app/features/common-settings/general/RoomPublish.tsx @@ -1,5 +1,5 @@ import { Box, color, Spinner, Switch, Text } from 'folds'; -import { JoinRule, MatrixError, RoomJoinRulesEventContent } from '$types/matrix-sdk'; +import { JoinRule, type MatrixError, type RoomJoinRulesEventContent } from '$types/matrix-sdk'; import { SequenceCard } from '$components/sequence-card'; import { SequenceCardStyle } from '$features/room-settings/styles.css'; import { SettingTile } from '$components/setting-tile'; @@ -9,8 +9,8 @@ import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { StateEvent } from '$types/matrix/room'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useStateEvent } from '$hooks/useStateEvent'; -import { ExtendedJoinRules } from '$components/JoinRulesSwitcher'; -import { RoomPermissionsAPI } from '$hooks/useRoomPermissions'; +import { type ExtendedJoinRules } from '$components/JoinRulesSwitcher'; +import { type RoomPermissionsAPI } from '$hooks/useRoomPermissions'; type RoomPublishProps = { permissions: RoomPermissionsAPI; diff --git a/src/app/features/common-settings/general/RoomUpgrade.tsx b/src/app/features/common-settings/general/RoomUpgrade.tsx index 073465688..ac738ff77 100644 --- a/src/app/features/common-settings/general/RoomUpgrade.tsx +++ b/src/app/features/common-settings/general/RoomUpgrade.tsx @@ -16,19 +16,19 @@ import { Icons, } from 'folds'; import FocusTrap from 'focus-trap-react'; -import { MatrixError, Method, RoomTombstoneEventContent } from '$types/matrix-sdk'; +import { type MatrixError, Method, type RoomTombstoneEventContent } from '$types/matrix-sdk'; import { SequenceCard } from '$components/sequence-card'; import { SequenceCardStyle } from '$features/room-settings/styles.css'; import { SettingTile } from '$components/setting-tile'; import { useRoom } from '$hooks/useRoom'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; -import { IRoomCreateContent, StateEvent } from '$types/matrix/room'; +import { type IRoomCreateContent, StateEvent } from '$types/matrix/room'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useStateEvent } from '$hooks/useStateEvent'; import { useRoomNavigate } from '$hooks/useRoomNavigate'; import { useCapabilities } from '$hooks/useCapabilities'; import { stopPropagation } from '$utils/keyboard'; -import { RoomPermissionsAPI } from '$hooks/useRoomPermissions'; +import { type RoomPermissionsAPI } from '$hooks/useRoomPermissions'; import { AdditionalCreatorInput, RoomVersionSelector, diff --git a/src/app/features/common-settings/members/Members.tsx b/src/app/features/common-settings/members/Members.tsx index 19b8ffc46..6a7abc10f 100644 --- a/src/app/features/common-settings/members/Members.tsx +++ b/src/app/features/common-settings/members/Members.tsx @@ -1,6 +1,6 @@ import { - ChangeEventHandler, - MouseEventHandler, + type ChangeEventHandler, + type MouseEventHandler, useCallback, useMemo, useRef, @@ -15,14 +15,14 @@ import { Icons, Input, PopOut, - RectCords, + type RectCords, Scroll, Spinner, Text, toRem, } from 'folds'; import { useVirtualizer } from '@tanstack/react-virtual'; -import { RoomMember } from '$types/matrix-sdk'; +import { type RoomMember } from '$types/matrix-sdk'; import { Page, PageContent, PageHeader } from '$components/page'; import { useRoom } from '$hooks/useRoom'; import { useRoomMembers } from '$hooks/useRoomMembers'; @@ -34,7 +34,11 @@ import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { getMxIdLocalPart, getMxIdServer } from '$utils/matrix'; import { ServerBadge } from '$components/server-badge'; import { useDebounce } from '$hooks/useDebounce'; -import { SearchItemStrGetter, useAsyncSearch, UseAsyncSearchOptions } from '$hooks/useAsyncSearch'; +import { + type SearchItemStrGetter, + useAsyncSearch, + type UseAsyncSearchOptions, +} from '$hooks/useAsyncSearch'; import { getMemberSearchStr } from '$utils/room'; import { useMembershipFilter, useMembershipFilterMenu } from '$hooks/useMemberFilter'; import { useMemberPowerSort, useMemberSort, useMemberSortMenu } from '$hooks/useMemberSort'; diff --git a/src/app/features/common-settings/permissions/PermissionGroups.tsx b/src/app/features/common-settings/permissions/PermissionGroups.tsx index 324005819..b29c788e1 100644 --- a/src/app/features/common-settings/permissions/PermissionGroups.tsx +++ b/src/app/features/common-settings/permissions/PermissionGroups.tsx @@ -7,8 +7,8 @@ import { SettingTile } from '$components/setting-tile'; import { applyPermissionPower, getPermissionPower, - IPowerLevels, - PermissionLocation, + type IPowerLevels, + type PermissionLocation, } from '$hooks/usePowerLevels'; import { getPowerLevelTag, getPowers, usePowerLevelTags } from '$hooks/usePowerLevelTags'; import { useRoom } from '$hooks/useRoom'; @@ -18,7 +18,7 @@ import { PowerSwitcher } from '$components/power'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useAlive } from '$hooks/useAlive'; import { SequenceCardStyle } from '$features/common-settings/styles.css'; -import { PermissionGroup } from './types'; +import { type PermissionGroup } from './types'; const USER_DEFAULT_LOCATION: PermissionLocation = { user: true, diff --git a/src/app/features/common-settings/permissions/Powers.tsx b/src/app/features/common-settings/permissions/Powers.tsx index a029ac785..ce1d03674 100644 --- a/src/app/features/common-settings/permissions/Powers.tsx +++ b/src/app/features/common-settings/permissions/Powers.tsx @@ -1,12 +1,12 @@ /* eslint-disable react/no-array-index-key */ -import { useState, MouseEventHandler, ReactNode } from 'react'; +import { useState, type MouseEventHandler, type ReactNode } from 'react'; import FocusTrap from 'focus-trap-react'; import { Box, Button, Chip, Text, - RectCords, + type RectCords, PopOut, Menu, Scroll, @@ -17,7 +17,7 @@ import { import { SequenceCard } from '$components/sequence-card'; import { getPowers, usePowerLevelTags } from '$hooks/usePowerLevelTags'; import { SettingTile } from '$components/setting-tile'; -import { getPermissionPower, IPowerLevels } from '$hooks/usePowerLevels'; +import { getPermissionPower, type IPowerLevels } from '$hooks/usePowerLevels'; import { useRoom } from '$hooks/useRoom'; import { PowerColorBadge, PowerIcon } from '$components/power'; import { useMatrixClient } from '$hooks/useMatrixClient'; @@ -27,7 +27,7 @@ import { getPowerTagIconSrc } from '$hooks/useMemberPowerTag'; import { useRoomCreatorsTag } from '$hooks/useRoomCreatorsTag'; import { useRoomCreators } from '$hooks/useRoomCreators'; import { SequenceCardStyle } from '$features/common-settings/styles.css'; -import { PermissionGroup } from './types'; +import { type PermissionGroup } from './types'; type PeekPermissionsProps = { powerLevels: IPowerLevels; diff --git a/src/app/features/common-settings/permissions/PowersEditor.tsx b/src/app/features/common-settings/permissions/PowersEditor.tsx index f53f3a237..06cfd8337 100644 --- a/src/app/features/common-settings/permissions/PowersEditor.tsx +++ b/src/app/features/common-settings/permissions/PowersEditor.tsx @@ -1,4 +1,10 @@ -import { FormEventHandler, MouseEventHandler, useCallback, useMemo, useState } from 'react'; +import { + type FormEventHandler, + type MouseEventHandler, + useCallback, + useMemo, + useState, +} from 'react'; import { Box, Text, @@ -9,7 +15,7 @@ import { Scroll, Button, Input, - RectCords, + type RectCords, PopOut, Menu, config, @@ -21,13 +27,13 @@ import { import { HexColorPicker } from 'react-colorful'; import { useAtomValue } from 'jotai'; import { Page, PageContent, PageHeader } from '$components/page'; -import { IPowerLevels } from '$hooks/usePowerLevels'; +import { type IPowerLevels } from '$hooks/usePowerLevels'; import { SequenceCard } from '$components/sequence-card'; import { SettingTile } from '$components/setting-tile'; import { getPowers, getUsedPowers, - PowerLevelTags, + type PowerLevelTags, usePowerLevelTags, } from '$hooks/usePowerLevelTags'; import { useRoom } from '$hooks/useRoom'; @@ -41,9 +47,9 @@ import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useFilePicker } from '$hooks/useFilePicker'; import { CompactUploadCardRenderer } from '$components/upload-card'; -import { createUploadAtom, UploadSuccess } from '$state/upload'; +import { createUploadAtom, type UploadSuccess } from '$state/upload'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; -import { MemberPowerTag, MemberPowerTagIcon, StateEvent } from '$types/matrix/room'; +import { type MemberPowerTag, type MemberPowerTagIcon, StateEvent } from '$types/matrix/room'; import { useAlive } from '$hooks/useAlive'; import { BetaNoticeBadge } from '$components/BetaNoticeBadge'; import { getPowerTagIconSrc } from '$hooks/useMemberPowerTag'; diff --git a/src/app/features/common-settings/permissions/types.ts b/src/app/features/common-settings/permissions/types.ts index 5d5eaa35d..1f47aa452 100644 --- a/src/app/features/common-settings/permissions/types.ts +++ b/src/app/features/common-settings/permissions/types.ts @@ -1,4 +1,4 @@ -import { PermissionLocation } from '$hooks/usePowerLevels'; +import { type PermissionLocation } from '$hooks/usePowerLevels'; export type PermissionItem = { location: PermissionLocation; diff --git a/src/app/features/create-chat/CreateChat.tsx b/src/app/features/create-chat/CreateChat.tsx index 225ef9b64..c862718b6 100644 --- a/src/app/features/create-chat/CreateChat.tsx +++ b/src/app/features/create-chat/CreateChat.tsx @@ -1,6 +1,6 @@ import { Box, Button, color, config, Icon, Icons, Input, Spinner, Switch, Text } from 'folds'; -import { FormEventHandler, useCallback, useState } from 'react'; -import { ICreateRoomStateEvent, MatrixError, Preset, Visibility } from '$types/matrix-sdk'; +import { type FormEventHandler, useCallback, useState } from 'react'; +import { type ICreateRoomStateEvent, MatrixError, Preset, Visibility } from '$types/matrix-sdk'; import { useNavigate } from 'react-router-dom'; import { SettingTile } from '$components/setting-tile'; import { SequenceCard } from '$components/sequence-card'; diff --git a/src/app/features/create-room/CreateRoom.tsx b/src/app/features/create-room/CreateRoom.tsx index 7347ba586..1f5692018 100644 --- a/src/app/features/create-room/CreateRoom.tsx +++ b/src/app/features/create-room/CreateRoom.tsx @@ -1,5 +1,5 @@ -import { FormEventHandler, useCallback, useEffect, useState } from 'react'; -import { MatrixError, Room, JoinRule } from '$types/matrix-sdk'; +import { type FormEventHandler, useCallback, useEffect, useState } from 'react'; +import { MatrixError, type Room, JoinRule } from '$types/matrix-sdk'; import { Box, Button, @@ -31,7 +31,7 @@ import { AdditionalCreatorInput, createRoom, CreateRoomAliasInput, - CreateRoomData, + type CreateRoomData, CreateRoomAccess, CreateRoomAccessSelector, RoomVersionSelector, diff --git a/src/app/features/create-room/CreateRoomModal.tsx b/src/app/features/create-room/CreateRoomModal.tsx index ad613a520..7297ab150 100644 --- a/src/app/features/create-room/CreateRoomModal.tsx +++ b/src/app/features/create-room/CreateRoomModal.tsx @@ -16,7 +16,7 @@ import FocusTrap from 'focus-trap-react'; import { useAllJoinedRoomsSet, useGetRoom } from '$hooks/useGetRoom'; import { SpaceProvider } from '$hooks/useSpace'; import { useCloseCreateRoomModal, useCreateRoomModalState } from '$state/hooks/createRoomModal'; -import { CreateRoomModalState } from '$state/createRoomModal'; +import { type CreateRoomModalState } from '$state/createRoomModal'; import { stopPropagation } from '$utils/keyboard'; import { CreateRoomType } from '$components/create-room/types'; import { CreateRoomForm } from './CreateRoom'; diff --git a/src/app/features/create-space/CreateSpace.tsx b/src/app/features/create-space/CreateSpace.tsx index 2fbeb198b..e1de7d25c 100644 --- a/src/app/features/create-space/CreateSpace.tsx +++ b/src/app/features/create-space/CreateSpace.tsx @@ -1,5 +1,5 @@ -import { FormEventHandler, useCallback, useEffect, useState } from 'react'; -import { MatrixError, Room } from '$types/matrix-sdk'; +import { type FormEventHandler, useCallback, useEffect, useState } from 'react'; +import { MatrixError, type Room } from '$types/matrix-sdk'; import { Box, Button, @@ -31,7 +31,7 @@ import { AdditionalCreatorInput, createRoom, CreateRoomAliasInput, - CreateRoomData, + type CreateRoomData, CreateRoomAccess, CreateRoomAccessSelector, RoomVersionSelector, diff --git a/src/app/features/create-space/CreateSpaceModal.tsx b/src/app/features/create-space/CreateSpaceModal.tsx index 3ef0da51f..effa38bdd 100644 --- a/src/app/features/create-space/CreateSpaceModal.tsx +++ b/src/app/features/create-space/CreateSpaceModal.tsx @@ -16,7 +16,7 @@ import FocusTrap from 'focus-trap-react'; import { useAllJoinedRoomsSet, useGetRoom } from '$hooks/useGetRoom'; import { SpaceProvider } from '$hooks/useSpace'; import { useCloseCreateSpaceModal, useCreateSpaceModalState } from '$state/hooks/createSpaceModal'; -import { CreateSpaceModalState } from '$state/createSpaceModal'; +import { type CreateSpaceModalState } from '$state/createSpaceModal'; import { stopPropagation } from '$utils/keyboard'; import { CreateSpaceForm } from './CreateSpace'; diff --git a/src/app/features/lobby/DnD.tsx b/src/app/features/lobby/DnD.tsx index fa4584a40..3c6f46d7e 100644 --- a/src/app/features/lobby/DnD.tsx +++ b/src/app/features/lobby/DnD.tsx @@ -1,4 +1,4 @@ -import { RefObject, useEffect, useRef, useState } from 'react'; +import { type RefObject, useEffect, useRef, useState } from 'react'; import { dropTargetForElements, draggable, @@ -8,7 +8,7 @@ import { autoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-sc import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine'; import classNames from 'classnames'; import { Box, Icon, Icons, as } from 'folds'; -import { HierarchyItem } from '$hooks/useSpaceHierarchy'; +import { type HierarchyItem } from '$hooks/useSpaceHierarchy'; import * as css from './DnD.css'; export type DropContainerData = { diff --git a/src/app/features/lobby/HierarchyItemMenu.tsx b/src/app/features/lobby/HierarchyItemMenu.tsx index 1377f33ff..6ffac6de8 100644 --- a/src/app/features/lobby/HierarchyItemMenu.tsx +++ b/src/app/features/lobby/HierarchyItemMenu.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useCallback, useEffect, useState } from 'react'; +import { type MouseEventHandler, useCallback, useEffect, useState } from 'react'; import FocusTrap from 'focus-trap-react'; import { Box, @@ -9,15 +9,15 @@ import { Menu, MenuItem, Text, - RectCords, + type RectCords, config, Line, Spinner, toRem, } from 'folds'; -import { HierarchyItem } from '$hooks/useSpaceHierarchy'; +import { type HierarchyItem } from '$hooks/useSpaceHierarchy'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { MSpaceChildContent, StateEvent } from '$types/matrix/room'; +import { type MSpaceChildContent, StateEvent } from '$types/matrix/room'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { UseStateProvider } from '$components/UseStateProvider'; import { LeaveSpacePrompt } from '$components/leave-space-prompt'; @@ -26,7 +26,7 @@ import { stopPropagation } from '$utils/keyboard'; import { useOpenRoomSettings } from '$state/hooks/roomSettings'; import { useSpaceOptionally } from '$hooks/useSpace'; import { useOpenSpaceSettings } from '$state/hooks/spaceSettings'; -import { IPowerLevels } from '$hooks/usePowerLevels'; +import { type IPowerLevels } from '$hooks/usePowerLevels'; import { getRoomCreatorsForRoomId } from '$hooks/useRoomCreators'; import { getRoomPermissionsAPI } from '$hooks/useRoomPermissions'; import { InviteUserPrompt } from '$components/invite-user-prompt'; diff --git a/src/app/features/lobby/Lobby.tsx b/src/app/features/lobby/Lobby.tsx index c980db462..7c9213bad 100644 --- a/src/app/features/lobby/Lobby.tsx +++ b/src/app/features/lobby/Lobby.tsx @@ -1,6 +1,6 @@ import { - MouseEventHandler, - ReactElement, + type MouseEventHandler, + type ReactElement, useCallback, useEffect, useMemo, @@ -20,20 +20,24 @@ import { color, config, } from 'folds'; -import { useVirtualizer, VirtualItem } from '@tanstack/react-virtual'; +import { useVirtualizer, type VirtualItem } from '@tanstack/react-virtual'; import { useAtom, useAtomValue } from 'jotai'; import { useNavigate } from 'react-router-dom'; import { JoinRule, RestrictedAllowType, - Room, - RoomJoinRulesEventContent, - IHierarchyRoom, + type Room, + type RoomJoinRulesEventContent, + type IHierarchyRoom, } from '$types/matrix-sdk'; import { produce } from 'immer'; import { useSpace } from '$hooks/useSpace'; import { Page, PageContent, PageContentCenter, PageHeroSection } from '$components/page'; -import { HierarchyItem, HierarchyItemSpace, useSpaceHierarchy } from '$hooks/useSpaceHierarchy'; +import { + type HierarchyItem, + type HierarchyItemSpace, + useSpaceHierarchy, +} from '$hooks/useSpaceHierarchy'; import { VirtualTile } from '$components/virtualizer'; import { spaceRoomsAtom } from '$state/spaceRooms'; import { useSetting } from '$state/hooks/settings'; @@ -42,7 +46,7 @@ import { settingsAtom } from '$state/settings'; import { ScrollTopContainer } from '$components/scroll-top-container'; import { useElementSizeObserver } from '$hooks/useElementSizeObserver'; import { - IPowerLevels, + type IPowerLevels, PowerLevelsContextProvider, usePowerLevels, useRoomsPowerLevels, @@ -73,7 +77,7 @@ import { getRoomPermissionsAPI } from '$hooks/useRoomPermissions'; import { getRoomCreatorsForRoomId } from '$hooks/useRoomCreators'; import { MembersDrawer } from '$features/room/MembersDrawer'; import { SpaceHierarchyItem } from './SpaceHierarchyItem'; -import { CanDropCallback, useDnDMonitor } from './DnD'; +import { type CanDropCallback, useDnDMonitor } from './DnD'; import { LobbyHero } from './LobbyHero'; import { LobbyHeader } from './LobbyHeader'; import { SpaceHierarchyNavItem } from './SpaceHierarchyNavItem'; diff --git a/src/app/features/lobby/LobbyHeader.tsx b/src/app/features/lobby/LobbyHeader.tsx index 4c3ba7447..d64673b79 100644 --- a/src/app/features/lobby/LobbyHeader.tsx +++ b/src/app/features/lobby/LobbyHeader.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, forwardRef, useState } from 'react'; +import { type MouseEventHandler, forwardRef, useState } from 'react'; import { Avatar, Box, @@ -9,7 +9,7 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Text, Tooltip, TooltipProvider, @@ -25,7 +25,7 @@ import { useSpace } from '$hooks/useSpace'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { RoomAvatar } from '$components/room-avatar'; import { nameInitials } from '$utils/common'; -import { IPowerLevels } from '$hooks/usePowerLevels'; +import { type IPowerLevels } from '$hooks/usePowerLevels'; import { UseStateProvider } from '$components/UseStateProvider'; import { LeaveSpacePrompt } from '$components/leave-space-prompt'; import { stopPropagation } from '$utils/keyboard'; diff --git a/src/app/features/lobby/RoomItem.tsx b/src/app/features/lobby/RoomItem.tsx index 090871c7b..13addce24 100644 --- a/src/app/features/lobby/RoomItem.tsx +++ b/src/app/features/lobby/RoomItem.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, ReactNode, useCallback, useRef } from 'react'; +import { type MouseEventHandler, type ReactNode, useCallback, useRef } from 'react'; import { Avatar, Badge, @@ -19,11 +19,11 @@ import { toRem, } from 'folds'; import FocusTrap from 'focus-trap-react'; -import { JoinRule, MatrixError, Room, IHierarchyRoom } from '$types/matrix-sdk'; +import { JoinRule, type MatrixError, type Room, type IHierarchyRoom } from '$types/matrix-sdk'; import { RoomAvatar, RoomIcon } from '$components/room-avatar'; import { SequenceCard } from '$components/sequence-card'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { HierarchyItem } from '$hooks/useSpaceHierarchy'; +import { type HierarchyItem } from '$hooks/useSpaceHierarchy'; import { KnockRoomPrompt } from '$components/knock-room-prompt'; import { LocalRoomSummaryLoader } from '$components/RoomSummaryLoader'; import { UseStateProvider } from '$components/UseStateProvider'; diff --git a/src/app/features/lobby/SpaceHierarchyItem.tsx b/src/app/features/lobby/SpaceHierarchyItem.tsx index 2797be88e..917f25de8 100644 --- a/src/app/features/lobby/SpaceHierarchyItem.tsx +++ b/src/app/features/lobby/SpaceHierarchyItem.tsx @@ -1,20 +1,20 @@ -import { forwardRef, MouseEventHandler, useEffect, useMemo } from 'react'; -import { MatrixError, Room, IHierarchyRoom } from '$types/matrix-sdk'; +import { forwardRef, type MouseEventHandler, useEffect, useMemo } from 'react'; +import { MatrixError, type Room, type IHierarchyRoom } from '$types/matrix-sdk'; import { Box, config, Text } from 'folds'; import { - HierarchyItem, - HierarchyItemRoom, - HierarchyItemSpace, + type HierarchyItem, + type HierarchyItemRoom, + type HierarchyItemSpace, useFetchSpaceHierarchyLevel, } from '$hooks/useSpaceHierarchy'; -import { IPowerLevels } from '$hooks/usePowerLevels'; +import { type IPowerLevels } from '$hooks/usePowerLevels'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { RoomType, StateEvent } from '$types/matrix/room'; import { SequenceCard } from '$components/sequence-card'; import { getRoomCreatorsForRoomId } from '$hooks/useRoomCreators'; import { getRoomPermissionsAPI } from '$hooks/useRoomPermissions'; import { SpaceItemCard } from './SpaceItem'; -import { AfterItemDropTarget, CanDropCallback } from './DnD'; +import { AfterItemDropTarget, type CanDropCallback } from './DnD'; import { HierarchyItemMenu } from './HierarchyItemMenu'; import { RoomItemCard } from './RoomItem'; diff --git a/src/app/features/lobby/SpaceHierarchyNavItem.tsx b/src/app/features/lobby/SpaceHierarchyNavItem.tsx index def804f62..0a4f3c03e 100644 --- a/src/app/features/lobby/SpaceHierarchyNavItem.tsx +++ b/src/app/features/lobby/SpaceHierarchyNavItem.tsx @@ -1,13 +1,13 @@ import { forwardRef } from 'react'; -import { Room, IHierarchyRoom } from '$types/matrix-sdk'; +import { type Room, type IHierarchyRoom } from '$types/matrix-sdk'; import { Box } from 'folds'; -import { HierarchyItem, HierarchyItemSpace } from '$hooks/useSpaceHierarchy'; -import { IPowerLevels } from '$hooks/usePowerLevels'; +import { type HierarchyItem, type HierarchyItemSpace } from '$hooks/useSpaceHierarchy'; +import { type IPowerLevels } from '$hooks/usePowerLevels'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { StateEvent } from '$types/matrix/room'; import { getRoomCreatorsForRoomId } from '$hooks/useRoomCreators'; import { getRoomPermissionsAPI } from '$hooks/useRoomPermissions'; -import { AfterItemDropTarget, CanDropCallback } from './DnD'; +import { AfterItemDropTarget, type CanDropCallback } from './DnD'; import { HierarchyItemMenu } from './HierarchyItemMenu'; import { SpaceNavItemCard } from './SpaceNavItem'; diff --git a/src/app/features/lobby/SpaceItem.tsx b/src/app/features/lobby/SpaceItem.tsx index 3a95049d7..09c05e914 100644 --- a/src/app/features/lobby/SpaceItem.tsx +++ b/src/app/features/lobby/SpaceItem.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, ReactNode, useCallback, useRef, useState } from 'react'; +import { type MouseEventHandler, type ReactNode, useCallback, useRef, useState } from 'react'; import { Box, Avatar, @@ -14,11 +14,11 @@ import { config, Menu, MenuItem, - RectCords, + type RectCords, } from 'folds'; import classNames from 'classnames'; -import { MatrixError, Room, IHierarchyRoom } from '$types/matrix-sdk'; -import { HierarchyItem } from '$hooks/useSpaceHierarchy'; +import { type MatrixError, type Room, type IHierarchyRoom } from '$types/matrix-sdk'; +import { type HierarchyItem } from '$hooks/useSpaceHierarchy'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { RoomAvatar } from '$components/room-avatar'; import { nameInitials } from '$utils/common'; diff --git a/src/app/features/lobby/SpaceNavItem.tsx b/src/app/features/lobby/SpaceNavItem.tsx index c07ce6cbc..e7f01e9dc 100644 --- a/src/app/features/lobby/SpaceNavItem.tsx +++ b/src/app/features/lobby/SpaceNavItem.tsx @@ -1,11 +1,11 @@ -import { ReactNode, useRef } from 'react'; +import { type ReactNode, useRef } from 'react'; import { Avatar, Badge, Box, Chip, Icon, Icons, as, Text } from 'folds'; import classNames from 'classnames'; -import { IHierarchyRoom, MatrixClient, Room } from '$types/matrix-sdk'; +import { type IHierarchyRoom, type MatrixClient, type Room } from '$types/matrix-sdk'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { getCanonicalAliasOrRoomId, mxcUrlToHttp } from '$utils/matrix'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; -import { HierarchyItem } from '$hooks/useSpaceHierarchy'; +import { type HierarchyItem } from '$hooks/useSpaceHierarchy'; import { LocalRoomSummaryLoader } from '$components/RoomSummaryLoader'; import { getRoomAvatarUrl } from '$utils/room'; import { RoomAvatar } from '$components/room-avatar'; diff --git a/src/app/features/message-search/MessageSearch.tsx b/src/app/features/message-search/MessageSearch.tsx index db9191725..443d6a20c 100644 --- a/src/app/features/message-search/MessageSearch.tsx +++ b/src/app/features/message-search/MessageSearch.tsx @@ -1,4 +1,4 @@ -import { RefObject, useEffect, useMemo, useRef } from 'react'; +import { type RefObject, useEffect, useMemo, useRef } from 'react'; import { Text, Box, Icon, Icons, config, Spinner, IconButton, Line, toRem } from 'folds'; import { useAtomValue } from 'jotai'; import { useVirtualizer } from '@tanstack/react-virtual'; @@ -7,7 +7,7 @@ import { useSearchParams } from 'react-router-dom'; import { SearchOrderBy } from '$types/matrix-sdk'; import { PageHero, PageHeroEmpty, PageHeroSection } from '$components/page'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { SearchPathSearchParams } from '$pages/paths'; +import { type SearchPathSearchParams } from '$pages/paths'; import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; import { SequenceCard } from '$components/sequence-card'; @@ -19,7 +19,7 @@ import { useRooms } from '$state/hooks/roomList'; import { allRoomsAtom } from '$state/room-list/roomList'; import { mDirectAtom } from '$state/mDirectList'; import { VirtualTile } from '$components/virtualizer'; -import { MessageSearchParams, useMessageSearch } from './useMessageSearch'; +import { type MessageSearchParams, useMessageSearch } from './useMessageSearch'; import { SearchResultGroup } from './SearchResultGroup'; import { SearchInput } from './SearchInput'; import { SearchFilters } from './SearchFilters'; diff --git a/src/app/features/message-search/SearchFilters.tsx b/src/app/features/message-search/SearchFilters.tsx index 4c1abd75d..57a8e31af 100644 --- a/src/app/features/message-search/SearchFilters.tsx +++ b/src/app/features/message-search/SearchFilters.tsx @@ -1,6 +1,6 @@ import { - ChangeEventHandler, - MouseEventHandler, + type ChangeEventHandler, + type MouseEventHandler, useCallback, useEffect, useRef, @@ -23,7 +23,7 @@ import { Button, Input, Badge, - RectCords, + type RectCords, } from 'folds'; import { SearchOrderBy } from '$types/matrix-sdk'; import FocusTrap from 'focus-trap-react'; @@ -31,8 +31,12 @@ import { useVirtualizer } from '@tanstack/react-virtual'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { getRoomIconSrc } from '$utils/room'; import { factoryRoomIdByAtoZ } from '$utils/sort'; -import { SearchItemStrGetter, UseAsyncSearchOptions, useAsyncSearch } from '$hooks/useAsyncSearch'; -import { DebounceOptions, useDebounce } from '$hooks/useDebounce'; +import { + type SearchItemStrGetter, + type UseAsyncSearchOptions, + useAsyncSearch, +} from '$hooks/useAsyncSearch'; +import { type DebounceOptions, useDebounce } from '$hooks/useDebounce'; import { VirtualTile } from '$components/virtualizer'; import { stopPropagation } from '$utils/keyboard'; diff --git a/src/app/features/message-search/SearchInput.tsx b/src/app/features/message-search/SearchInput.tsx index ad1ca593d..de927c277 100644 --- a/src/app/features/message-search/SearchInput.tsx +++ b/src/app/features/message-search/SearchInput.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, RefObject } from 'react'; +import { type FormEventHandler, type RefObject } from 'react'; import { Box, Text, Input, Icon, Icons, Spinner, Chip, config } from 'folds'; type SearchProps = { diff --git a/src/app/features/message-search/SearchResultGroup.tsx b/src/app/features/message-search/SearchResultGroup.tsx index 7e4bcf533..85487ffe7 100644 --- a/src/app/features/message-search/SearchResultGroup.tsx +++ b/src/app/features/message-search/SearchResultGroup.tsx @@ -1,9 +1,9 @@ /* eslint-disable react/destructuring-assignment */ -import { MouseEventHandler, useMemo } from 'react'; -import { IEventWithRoomId, JoinRule, RelationType, Room } from '$types/matrix-sdk'; -import { HTMLReactParserOptions } from 'html-react-parser'; +import { type MouseEventHandler, useMemo } from 'react'; +import { type IEventWithRoomId, JoinRule, RelationType, type Room } from '$types/matrix-sdk'; +import { type HTMLReactParserOptions } from 'html-react-parser'; import { Avatar, Box, Chip, Header, Icon, Icons, Text, config } from 'folds'; -import { Opts as LinkifyOpts } from 'linkifyjs'; +import { type Opts as LinkifyOpts } from 'linkifyjs'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { factoryRenderLinkifyWithMention, @@ -15,7 +15,7 @@ import { } from '$plugins/react-custom-html-parser'; import { getMxIdLocalPart, mxcUrlToHttp } from '$utils/matrix'; import { useMatrixEventRenderer } from '$hooks/useMatrixEventRenderer'; -import { GetContentCallback, MessageEvent, StateEvent } from '$types/matrix/room'; +import { type GetContentCallback, MessageEvent, StateEvent } from '$types/matrix/room'; import { AvatarBase, ImageContent, @@ -52,7 +52,7 @@ import { } from '$hooks/useMemberPowerTag'; import { useRoomCreators } from '$hooks/useRoomCreators'; import { useRoomCreatorsTag } from '$hooks/useRoomCreatorsTag'; -import { ResultItem } from './useMessageSearch'; +import { type ResultItem } from './useMessageSearch'; type SearchResultGroupProps = { room: Room; diff --git a/src/app/features/message-search/useMessageSearch.ts b/src/app/features/message-search/useMessageSearch.ts index de1b15585..a0349531e 100644 --- a/src/app/features/message-search/useMessageSearch.ts +++ b/src/app/features/message-search/useMessageSearch.ts @@ -1,10 +1,10 @@ import { - IEventWithRoomId, - IResultContext, - ISearchRequestBody, - ISearchResponse, - ISearchResult, - SearchOrderBy, + type IEventWithRoomId, + type IResultContext, + type ISearchRequestBody, + type ISearchResponse, + type ISearchResult, + type SearchOrderBy, } from '$types/matrix-sdk'; import { useCallback } from 'react'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/features/room-nav/RoomNavItem.tsx b/src/app/features/room-nav/RoomNavItem.tsx index f9d279062..b73603bb3 100644 --- a/src/app/features/room-nav/RoomNavItem.tsx +++ b/src/app/features/room-nav/RoomNavItem.tsx @@ -1,5 +1,5 @@ -import { MouseEventHandler, forwardRef, useState, MouseEvent, useEffect } from 'react'; -import { Room, RoomEvent as RoomEventEnum } from '$types/matrix-sdk'; +import { type MouseEventHandler, forwardRef, useState, type MouseEvent, useEffect } from 'react'; +import { type Room, RoomEvent as RoomEventEnum } from '$types/matrix-sdk'; import { Avatar, Box, @@ -13,7 +13,7 @@ import { PopOut, toRem, Line, - RectCords, + type RectCords, Badge, Spinner, Tooltip, diff --git a/src/app/features/room-nav/RoomNavUser.tsx b/src/app/features/room-nav/RoomNavUser.tsx index 7d25d7bf9..ed62ced95 100644 --- a/src/app/features/room-nav/RoomNavUser.tsx +++ b/src/app/features/room-nav/RoomNavUser.tsx @@ -1,7 +1,7 @@ import { Avatar, Box, Icon, Icons, Text } from 'folds'; -import { MouseEventHandler } from 'react'; +import { type MouseEventHandler } from 'react'; import { useAtomValue } from 'jotai'; -import { Room, CallMembership } from '$types/matrix-sdk'; +import { type Room, type CallMembership } from '$types/matrix-sdk'; import { NavButton, NavItem, NavItemContent } from '$components/nav'; import { UserAvatar } from '$components/user-avatar'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/features/room-settings/RoomSettings.tsx b/src/app/features/room-settings/RoomSettings.tsx index 02fb0e849..7b205c0e5 100644 --- a/src/app/features/room-settings/RoomSettings.tsx +++ b/src/app/features/room-settings/RoomSettings.tsx @@ -1,6 +1,6 @@ import { useMemo, useState } from 'react'; import { useAtomValue } from 'jotai'; -import { Avatar, Box, config, Icon, IconButton, Icons, IconSrc, MenuItem, Text } from 'folds'; +import { Avatar, Box, config, Icon, IconButton, Icons, type IconSrc, MenuItem, Text } from 'folds'; import { JoinRule } from '$types/matrix-sdk'; import { PageNav, PageNavContent, PageNavHeader, PageRoot } from '$components/page'; import { ScreenSize, useScreenSizeContext } from '$hooks/useScreenSize'; diff --git a/src/app/features/room-settings/RoomSettingsRenderer.tsx b/src/app/features/room-settings/RoomSettingsRenderer.tsx index 7f2e53e79..d9dcbecf6 100644 --- a/src/app/features/room-settings/RoomSettingsRenderer.tsx +++ b/src/app/features/room-settings/RoomSettingsRenderer.tsx @@ -1,7 +1,7 @@ import { Modal500 } from '$components/Modal500'; import { useCloseRoomSettings, useRoomSettingsState } from '$state/hooks/roomSettings'; import { useAllJoinedRoomsSet, useGetRoom } from '$hooks/useGetRoom'; -import { RoomSettingsState } from '$state/roomSettings'; +import { type RoomSettingsState } from '$state/roomSettings'; import { RoomProvider } from '$hooks/useRoom'; import { SpaceProvider } from '$hooks/useSpace'; import { RoomSettings } from './RoomSettings'; diff --git a/src/app/features/room-settings/abbreviations/RoomAbbreviations.tsx b/src/app/features/room-settings/abbreviations/RoomAbbreviations.tsx index 1354f5691..333c06b36 100644 --- a/src/app/features/room-settings/abbreviations/RoomAbbreviations.tsx +++ b/src/app/features/room-settings/abbreviations/RoomAbbreviations.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, useCallback, useMemo } from 'react'; +import { type FormEventHandler, useCallback, useMemo } from 'react'; import { useAtomValue } from 'jotai'; import { Box, @@ -26,8 +26,8 @@ import { useStateEventCallback } from '$hooks/useStateEventCallback'; import { useForceUpdate } from '$hooks/useForceUpdate'; import { StateEvent } from '$types/matrix/room'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; -import { MatrixError } from '$types/matrix-sdk'; -import { AbbreviationEntry, RoomAbbreviationsContent } from '$utils/abbreviations'; +import { type MatrixError } from '$types/matrix-sdk'; +import { type AbbreviationEntry, type RoomAbbreviationsContent } from '$utils/abbreviations'; import { getAllParents, getStateEvent } from '$utils/room'; import { roomToParentsAtom } from '$state/room/roomToParents'; import { SequenceCardStyle } from '$features/common-settings/styles.css'; diff --git a/src/app/features/room-settings/permissions/usePermissionItems.ts b/src/app/features/room-settings/permissions/usePermissionItems.ts index 20222d45f..7d967c754 100644 --- a/src/app/features/room-settings/permissions/usePermissionItems.ts +++ b/src/app/features/room-settings/permissions/usePermissionItems.ts @@ -1,6 +1,6 @@ import { useMemo } from 'react'; import { MessageEvent, StateEvent } from '$types/matrix/room'; -import { PermissionGroup } from '$features/common-settings/permissions'; +import { type PermissionGroup } from '$features/common-settings/permissions'; export const usePermissionGroups = (isCallRoom: boolean): PermissionGroup[] => { const groups: PermissionGroup[] = useMemo(() => { diff --git a/src/app/features/room/CommandAutocomplete.tsx b/src/app/features/room/CommandAutocomplete.tsx index 42ef1374d..76e00e7db 100644 --- a/src/app/features/room/CommandAutocomplete.tsx +++ b/src/app/features/room/CommandAutocomplete.tsx @@ -1,16 +1,16 @@ -import { KeyboardEvent as ReactKeyboardEvent, useCallback, useEffect, useMemo } from 'react'; -import { Editor } from 'slate'; +import { type KeyboardEvent as ReactKeyboardEvent, useCallback, useEffect, useMemo } from 'react'; +import { type Editor } from 'slate'; import { Box, config, MenuItem, Text } from 'folds'; -import { Room } from '$types/matrix-sdk'; -import { Command, useCommands } from '$hooks/useCommands'; +import { type Room } from '$types/matrix-sdk'; +import { type Command, useCommands } from '$hooks/useCommands'; import { AutocompleteMenu, - AutocompleteQuery, + type AutocompleteQuery, createCommandElement, moveCursor, replaceWithElement, } from '$components/editor'; -import { UseAsyncSearchOptions, useAsyncSearch } from '$hooks/useAsyncSearch'; +import { type UseAsyncSearchOptions, useAsyncSearch } from '$hooks/useAsyncSearch'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useKeyDown } from '$hooks/useKeyDown'; import { onTabPress } from '$utils/keyboard'; diff --git a/src/app/features/room/MembersDrawer.tsx b/src/app/features/room/MembersDrawer.tsx index 0a74acfda..6d5efc64e 100644 --- a/src/app/features/room/MembersDrawer.tsx +++ b/src/app/features/room/MembersDrawer.tsx @@ -1,6 +1,6 @@ import { - ChangeEventHandler, - MouseEventHandler, + type ChangeEventHandler, + type MouseEventHandler, useCallback, useMemo, useRef, @@ -18,7 +18,7 @@ import { Input, MenuItem, PopOut, - RectCords, + type RectCords, Scroll, Spinner, Text, @@ -27,7 +27,7 @@ import { config, toRem, } from 'folds'; -import { MatrixClient, Room, RoomMember } from '$types/matrix-sdk'; +import { type MatrixClient, type Room, type RoomMember } from '$types/matrix-sdk'; import { useVirtualizer } from '@tanstack/react-virtual'; import classNames from 'classnames'; @@ -35,7 +35,11 @@ import { AvatarPresence, PresenceBadge } from '$components/presence'; import { useUserPresence } from '$hooks/useUserPresence'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { UseStateProvider } from '$components/UseStateProvider'; -import { SearchItemStrGetter, UseAsyncSearchOptions, useAsyncSearch } from '$hooks/useAsyncSearch'; +import { + type SearchItemStrGetter, + type UseAsyncSearchOptions, + useAsyncSearch, +} from '$hooks/useAsyncSearch'; import { useDebounce } from '$hooks/useDebounce'; import { TypingIndicator } from '$components/typing-indicator'; import { getMemberDisplayName, getMemberSearchStr } from '$utils/room'; diff --git a/src/app/features/room/RoomCallButton.tsx b/src/app/features/room/RoomCallButton.tsx index ad3c7916d..11becd090 100644 --- a/src/app/features/room/RoomCallButton.tsx +++ b/src/app/features/room/RoomCallButton.tsx @@ -1,6 +1,6 @@ import { IconButton, Icon, Icons, TooltipProvider, Tooltip, Text } from 'folds'; import { useAtomValue } from 'jotai'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useCallStart, useCallJoined } from '$hooks/useCallEmbed'; import { callEmbedAtom } from '$state/callEmbed'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/features/room/RoomInput.tsx b/src/app/features/room/RoomInput.tsx index 3b36b0d7f..981b9c270 100644 --- a/src/app/features/room/RoomInput.tsx +++ b/src/app/features/room/RoomInput.tsx @@ -1,8 +1,8 @@ import { forwardRef, - KeyboardEventHandler, - MouseEvent, - RefObject, + type KeyboardEventHandler, + type MouseEvent, + type RefObject, useCallback, useEffect, useRef, @@ -12,13 +12,13 @@ import { useAtom, useAtomValue } from 'jotai'; import { isKeyHotkey } from 'is-hotkey'; import { EventType, - IContent, - MatrixEvent, + type IContent, + type MatrixEvent, MsgType, RelationType, - Room, - IEventRelation, - StickerEventContent, + type Room, + type IEventRelation, + type StickerEventContent, } from '$types/matrix-sdk'; import { ReactEditor } from 'slate-react'; import { Editor, Point, Range, Transforms } from 'slate'; @@ -37,7 +37,7 @@ import { OverlayBackdrop, OverlayCenter, PopOut, - RectCords, + type RectCords, Scroll, Text, toRem, @@ -46,7 +46,7 @@ import { import { useMatrixClient } from '$hooks/useMatrixClient'; import { AutocompletePrefix, - AutocompleteQuery, + type AutocompleteQuery, createEmoticonElement, CustomEditor, customHtmlEqualsPlainText, @@ -72,7 +72,7 @@ import { import { EmojiBoard, EmojiBoardTab } from '$components/emoji-board'; import { UseStateProvider } from '$components/UseStateProvider'; import { - TUploadContent, + type TUploadContent, encryptFile, getImageInfo, mxcUrlToHttp, @@ -87,18 +87,23 @@ import { roomIdToReplyDraftAtomFamily, roomIdToUploadItemsAtomFamily, roomUploadAtomFamily, - TUploadItem, - TUploadMetadata, - IReplyDraft, + type TUploadItem, + type TUploadMetadata, + type IReplyDraft, } from '$state/room/roomInputDrafts'; import { UploadCardRenderer } from '$components/upload-card'; import { UploadBoard, UploadBoardContent, UploadBoardHeader, - UploadBoardImperativeHandlers, + type UploadBoardImperativeHandlers, } from '$components/upload-board'; -import { Upload, UploadStatus, UploadSuccess, createUploadFamilyObserverAtom } from '$state/upload'; +import { + type Upload, + UploadStatus, + type UploadSuccess, + createUploadFamilyObserverAtom, +} from '$state/upload'; import { getImageUrlBlob, loadImageElement } from '$utils/dom'; import { safeFile } from '$utils/mimeTypes'; import { fulfilledPromiseSettledResult } from '$utils/common'; @@ -155,8 +160,8 @@ import { import { CommandAutocomplete } from './CommandAutocomplete'; import { AudioMessageRecorder, - AudioMessageRecorderHandle, - AudioRecordingCompletePayload, + type AudioMessageRecorderHandle, + type AudioRecordingCompletePayload, } from './AudioMessageRecorder'; // Returns the event ID of the most recent non-reaction/non-edit event in a thread, diff --git a/src/app/features/room/RoomInputPlaceholder.tsx b/src/app/features/room/RoomInputPlaceholder.tsx index fc923d196..319660755 100644 --- a/src/app/features/room/RoomInputPlaceholder.tsx +++ b/src/app/features/room/RoomInputPlaceholder.tsx @@ -1,4 +1,4 @@ -import { ComponentProps } from 'react'; +import { type ComponentProps } from 'react'; import { Box, as } from 'folds'; import classNames from 'classnames'; diff --git a/src/app/features/room/RoomTimeline.css.ts b/src/app/features/room/RoomTimeline.css.ts index 7b355fe1e..df0812b2a 100644 --- a/src/app/features/room/RoomTimeline.css.ts +++ b/src/app/features/room/RoomTimeline.css.ts @@ -1,5 +1,5 @@ import { globalStyle, style } from '@vanilla-extract/css'; -import { RecipeVariants, recipe } from '@vanilla-extract/recipes'; +import { type RecipeVariants, recipe } from '@vanilla-extract/recipes'; import { DefaultReset, color, config, toRem } from 'folds'; export const TimelineFloat = recipe({ diff --git a/src/app/features/room/RoomTimeline.tsx b/src/app/features/room/RoomTimeline.tsx index 94b1ad696..6fc9fc08b 100644 --- a/src/app/features/room/RoomTimeline.tsx +++ b/src/app/features/room/RoomTimeline.tsx @@ -1,6 +1,6 @@ import { Fragment, - ReactNode, + type ReactNode, useCallback, useEffect, useLayoutEffect, @@ -8,11 +8,11 @@ import { useRef, useState, } from 'react'; -import { Editor } from 'slate'; +import { type Editor } from 'slate'; import { useAtomValue, useSetAtom } from 'jotai'; -import { PushProcessor, Room, Direction } from '$types/matrix-sdk'; +import { PushProcessor, type Room, Direction } from '$types/matrix-sdk'; import classNames from 'classnames'; -import { VList, VListHandle } from 'virtua'; +import { VList, type VListHandle } from 'virtua'; import { as, Box, @@ -25,7 +25,7 @@ import { color, config, toRem, - ContainerColor, + type ContainerColor, Spinner, } from 'folds'; import { MessageBase, CompactPlaceholder, DefaultPlaceholder } from '$components/message'; @@ -73,7 +73,7 @@ import { } from '$utils/timeline'; import { useTimelineSync } from '$hooks/timeline/useTimelineSync'; import { useTimelineActions } from '$hooks/timeline/useTimelineActions'; -import { ProcessedEvent, useProcessedTimeline } from '$hooks/timeline/useProcessedTimeline'; +import { type ProcessedEvent, useProcessedTimeline } from '$hooks/timeline/useProcessedTimeline'; import { useTimelineEventRenderer } from '$hooks/timeline/useTimelineEventRenderer'; import * as css from './RoomTimeline.css'; diff --git a/src/app/features/room/RoomViewFollowing.tsx b/src/app/features/room/RoomViewFollowing.tsx index 6d9a60c68..946c5923b 100644 --- a/src/app/features/room/RoomViewFollowing.tsx +++ b/src/app/features/room/RoomViewFollowing.tsx @@ -11,7 +11,7 @@ import { as, config, } from 'folds'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import classNames from 'classnames'; import FocusTrap from 'focus-trap-react'; import { useAtomValue } from 'jotai'; diff --git a/src/app/features/room/RoomViewHeader.tsx b/src/app/features/room/RoomViewHeader.tsx index 8552332cf..fd08cde69 100644 --- a/src/app/features/room/RoomViewHeader.tsx +++ b/src/app/features/room/RoomViewHeader.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, forwardRef, useCallback, useEffect, useState } from 'react'; +import { type MouseEventHandler, forwardRef, useCallback, useEffect, useState } from 'react'; import FocusTrap from 'focus-trap-react'; import { useAtom, useAtomValue } from 'jotai'; import { @@ -19,17 +19,17 @@ import { config, Line, PopOut, - RectCords, + type RectCords, Badge, Spinner, } from 'folds'; import { useNavigate } from 'react-router-dom'; import { EventTimeline, - Room, + type Room, ThreadEvent, RoomEvent, - MatrixEvent, + type MatrixEvent, NotificationCountType, } from '$types/matrix-sdk'; diff --git a/src/app/features/room/RoomViewTyping.tsx b/src/app/features/room/RoomViewTyping.tsx index e75c4a13d..fd3912263 100644 --- a/src/app/features/room/RoomViewTyping.tsx +++ b/src/app/features/room/RoomViewTyping.tsx @@ -1,5 +1,5 @@ import { Box, Icon, IconButton, Icons, Text, as } from 'folds'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import classNames from 'classnames'; import { useSetAtom, useAtomValue } from 'jotai'; import { roomIdToTypingMembersAtom } from '$state/typingMembers'; diff --git a/src/app/features/room/ThreadBrowser.tsx b/src/app/features/room/ThreadBrowser.tsx index 7c1e830f0..bd2c1adf0 100644 --- a/src/app/features/room/ThreadBrowser.tsx +++ b/src/app/features/room/ThreadBrowser.tsx @@ -1,6 +1,6 @@ import { - ChangeEventHandler, - MouseEventHandler, + type ChangeEventHandler, + type MouseEventHandler, useCallback, useEffect, useMemo, @@ -20,10 +20,10 @@ import { config, Chip, } from 'folds'; -import { MatrixEvent, Room, Thread, ThreadEvent } from '$types/matrix-sdk'; +import { type MatrixEvent, type Room, type Thread, ThreadEvent } from '$types/matrix-sdk'; import { useAtomValue } from 'jotai'; -import { HTMLReactParserOptions } from 'html-react-parser'; -import { Opts as LinkifyOpts } from 'linkifyjs'; +import { type HTMLReactParserOptions } from 'html-react-parser'; +import { type Opts as LinkifyOpts } from 'linkifyjs'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { useRoomNavigate } from '$hooks/useRoomNavigate'; @@ -43,7 +43,7 @@ import { import { RenderMessageContent } from '$components/RenderMessageContent'; import { settingsAtom } from '$state/settings'; import { useSetting } from '$state/hooks/settings'; -import { GetContentCallback } from '$types/matrix/room'; +import { type GetContentCallback } from '$types/matrix/room'; import { useMentionClickHandler } from '$hooks/useMentionClickHandler'; import { useSpoilerClickHandler } from '$hooks/useSpoilerClickHandler'; import { diff --git a/src/app/features/room/ThreadDrawer.tsx b/src/app/features/room/ThreadDrawer.tsx index b662d2ab3..3676240c9 100644 --- a/src/app/features/room/ThreadDrawer.tsx +++ b/src/app/features/room/ThreadDrawer.tsx @@ -1,18 +1,18 @@ -import { MouseEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { type MouseEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Box, Header, Icon, IconButton, Icons, Scroll, Text, config } from 'folds'; import { - MatrixEvent, + type MatrixEvent, PushProcessor, ReceiptType, RelationType, - Room, + type Room, RoomEvent, ThreadEvent, } from '$types/matrix-sdk'; import { useAtomValue, useSetAtom } from 'jotai'; import { ReactEditor } from 'slate-react'; -import { HTMLReactParserOptions } from 'html-react-parser'; -import { Opts as LinkifyOpts } from 'linkifyjs'; +import { type HTMLReactParserOptions } from 'html-react-parser'; +import { type Opts as LinkifyOpts } from 'linkifyjs'; import { ImageContent, MSticker, RedactedContent, Reply } from '$components/message'; import { RenderMessageContent } from '$components/RenderMessageContent'; import { Image } from '$components/media'; @@ -36,20 +36,20 @@ import { minuteDifference } from '$utils/time'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { nicknamesAtom } from '$state/nicknames'; -import { MessageLayout, MessageSpacing, settingsAtom } from '$state/settings'; +import { MessageLayout, type MessageSpacing, settingsAtom } from '$state/settings'; import { useSetting } from '$state/hooks/settings'; import { useRoomAbbreviationsContext } from '$hooks/useRoomAbbreviations'; import { buildAbbrReplaceTextNode } from '$components/message/RenderBody'; import { createMentionElement, moveCursor, useEditor } from '$components/editor'; import { useMentionClickHandler } from '$hooks/useMentionClickHandler'; import { useSpoilerClickHandler } from '$hooks/useSpoilerClickHandler'; -import { GetContentCallback, MessageEvent, StateEvent } from '$types/matrix/room'; +import { type GetContentCallback, MessageEvent, StateEvent } from '$types/matrix/room'; import { usePowerLevelsContext } from '$hooks/usePowerLevels'; import { useRoomPermissions } from '$hooks/useRoomPermissions'; import { useRoomCreators } from '$hooks/useRoomCreators'; import { useImagePackRooms } from '$hooks/useImagePackRooms'; import { useOpenUserRoomProfile } from '$state/hooks/userRoomProfile'; -import { IReplyDraft, roomIdToReplyDraftAtomFamily } from '$state/room/roomInputDrafts'; +import { type IReplyDraft, roomIdToReplyDraftAtomFamily } from '$state/room/roomInputDrafts'; import { roomToParentsAtom } from '$state/room/roomToParents'; import { EncryptedContent, Message, Reactions } from './message'; import { RoomInput } from './RoomInput'; diff --git a/src/app/features/room/jump-to-time/JumpToTime.tsx b/src/app/features/room/jump-to-time/JumpToTime.tsx index 9ebd5a7ac..81ffd29ee 100644 --- a/src/app/features/room/jump-to-time/JumpToTime.tsx +++ b/src/app/features/room/jump-to-time/JumpToTime.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useCallback, useMemo, useState } from 'react'; +import { type MouseEventHandler, useCallback, useMemo, useState } from 'react'; import FocusTrap from 'focus-trap-react'; import { Dialog, @@ -17,9 +17,9 @@ import { Spinner, Chip, PopOut, - RectCords, + type RectCords, } from 'folds'; -import { Direction, MatrixError } from '$types/matrix-sdk'; +import { Direction, type MatrixError } from '$types/matrix-sdk'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { stopPropagation } from '$utils/keyboard'; diff --git a/src/app/features/room/message/EncryptedContent.tsx b/src/app/features/room/message/EncryptedContent.tsx index 33955b6e9..89c1ba56d 100644 --- a/src/app/features/room/message/EncryptedContent.tsx +++ b/src/app/features/room/message/EncryptedContent.tsx @@ -1,5 +1,5 @@ -import { MatrixEvent, MatrixEventEvent, MatrixEventHandlerMap } from '$types/matrix-sdk'; -import { ReactNode, useEffect, useState } from 'react'; +import { type MatrixEvent, MatrixEventEvent, type MatrixEventHandlerMap } from '$types/matrix-sdk'; +import { type ReactNode, useEffect, useState } from 'react'; import { MessageEvent } from '$types/matrix/room'; import { useMatrixClient } from '$hooks/useMatrixClient'; import * as Sentry from '@sentry/react'; diff --git a/src/app/features/room/message/Message.tsx b/src/app/features/room/message/Message.tsx index 4bfab3bbb..1cae02f57 100644 --- a/src/app/features/room/message/Message.tsx +++ b/src/app/features/room/message/Message.tsx @@ -9,16 +9,16 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Text, as, config, } from 'folds'; import { - MouseEventHandler, - MouseEvent, - PointerEvent, - ReactNode, + type MouseEventHandler, + type MouseEvent, + type PointerEvent, + type ReactNode, memo, useCallback, useRef, @@ -30,13 +30,13 @@ import FocusTrap from 'focus-trap-react'; import { useHover, useFocusWithin } from 'react-aria'; import { EventStatus, - MatrixEvent, - Room, - Relations, - RoomPinnedEventsEventContent, + type MatrixEvent, + type Room, + type Relations, + type RoomPinnedEventsEventContent, MatrixEventEvent, RoomEvent, - IRoomTimelineData, + type IRoomTimelineData, } from '$types/matrix-sdk'; import classNames from 'classnames'; import { useAtomValue, useSetAtom } from 'jotai'; @@ -53,7 +53,7 @@ import { } from '$components/message'; import { canEditEvent, getEditedEvent, getEventEdits, getMemberAvatarMxc } from '$utils/room'; import { mxcUrlToHttp } from '$utils/matrix'; -import { getSettings, MessageLayout, MessageSpacing, settingsAtom } from '$state/settings'; +import { getSettings, MessageLayout, type MessageSpacing, settingsAtom } from '$state/settings'; import { nicknamesAtom, setNicknameAtom } from '$state/nicknames'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useRecentEmoji } from '$hooks/useRecentEmoji'; @@ -65,7 +65,7 @@ import { getMatrixToRoomEvent } from '$plugins/matrix-to'; import { getViaServers } from '$plugins/via-servers'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { useRoomPinnedEvents } from '$hooks/useRoomPinnedEvents'; -import { MemberPowerTag, StateEvent } from '$types/matrix/room'; +import { type MemberPowerTag, StateEvent } from '$types/matrix/room'; import { PowerIcon } from '$components/power'; import { getPowerTagIconSrc } from '$hooks/useMemberPowerTag'; import { useSableCosmetics } from '$hooks/useSableCosmetics'; @@ -89,7 +89,7 @@ import { } from '$utils/addStickerToDefaultStickerPack'; import { convertBeeperFormatToOurPerMessageProfile, - PerMessageProfileBeeperFormat, + type PerMessageProfileBeeperFormat, } from '$hooks/usePerMessageProfile'; import { MessageEditor } from './MessageEditor'; import * as css from './styles.css'; diff --git a/src/app/features/room/message/MessageEditor.tsx b/src/app/features/room/message/MessageEditor.tsx index 22c63ce26..b5960dcca 100644 --- a/src/app/features/room/message/MessageEditor.tsx +++ b/src/app/features/room/message/MessageEditor.tsx @@ -1,6 +1,6 @@ import { - KeyboardEventHandler, - MouseEventHandler, + type KeyboardEventHandler, + type MouseEventHandler, useCallback, useEffect, useMemo, @@ -14,7 +14,7 @@ import { Icons, Line, PopOut, - RectCords, + type RectCords, Spinner, Text, as, @@ -23,19 +23,19 @@ import { import { Editor, Transforms } from 'slate'; import { ReactEditor } from 'slate-react'; import { - IContent, - IMentions, - MatrixEvent, - ReplacementEvent, + type IContent, + type IMentions, + type MatrixEvent, + type ReplacementEvent, RelationType, - Room, - RoomMessageTextEventContent, + type Room, + type RoomMessageTextEventContent, MsgType, } from '$types/matrix-sdk'; import { isKeyHotkey } from 'is-hotkey'; import { AutocompletePrefix, - AutocompleteQuery, + type AutocompleteQuery, CustomEditor, EmoticonAutocomplete, RoomMentionAutocomplete, @@ -68,10 +68,10 @@ import { floatingEditor } from '$styles/overrides/Composer.css'; import { RenderMessageContent } from '$components/RenderMessageContent'; import { getReactCustomHtmlParser, LINKIFY_OPTS } from '$plugins/react-custom-html-parser'; import { useSpoilerClickHandler } from '$hooks/useSpoilerClickHandler'; -import { HTMLReactParserOptions } from 'html-react-parser'; +import { type HTMLReactParserOptions } from 'html-react-parser'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; -import { Opts as LinkifyOpts } from 'linkifyjs'; -import { GetContentCallback } from '$types/matrix/room'; +import { type Opts as LinkifyOpts } from 'linkifyjs'; +import { type GetContentCallback } from '$types/matrix/room'; import { sanitizeCustomHtml } from '$utils/sanitize'; type MessageEditorProps = { diff --git a/src/app/features/room/message/Reactions.tsx b/src/app/features/room/message/Reactions.tsx index efcd74dc9..a5cacf2dc 100644 --- a/src/app/features/room/message/Reactions.tsx +++ b/src/app/features/room/message/Reactions.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useCallback, useState } from 'react'; +import { type MouseEventHandler, useCallback, useState } from 'react'; import { Box, Modal, @@ -12,8 +12,7 @@ import { toRem, } from 'folds'; import classNames from 'classnames'; -import { Room } from '$types/matrix-sdk'; -import { type Relations } from '$types/matrix-sdk'; +import { type Room, type Relations } from '$types/matrix-sdk'; import FocusTrap from 'focus-trap-react'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { factoryEventSentBy } from '$utils/matrix'; diff --git a/src/app/features/room/msgContent.ts b/src/app/features/room/msgContent.ts index 0cec05a57..8d85d13db 100644 --- a/src/app/features/room/msgContent.ts +++ b/src/app/features/room/msgContent.ts @@ -1,7 +1,7 @@ -import { IContent, MatrixClient, MsgType } from '$types/matrix-sdk'; +import { type IContent, type MatrixClient, MsgType } from '$types/matrix-sdk'; import to from 'await-to-js'; import { - IThumbnailContent, + type IThumbnailContent, MATRIX_BLUR_HASH_PROPERTY_NAME, MATRIX_SPOILER_PROPERTY_NAME, } from '$types/matrix/common'; @@ -14,7 +14,7 @@ import { loadVideoElement, } from '$utils/dom'; import { encryptFile, getImageInfo, getThumbnailContent, getVideoInfo } from '$utils/matrix'; -import { TUploadItem } from '$state/room/roomInputDrafts'; +import { type TUploadItem } from '$state/room/roomInputDrafts'; import { encodeBlurHash } from '$utils/blurHash'; import { scaleYDimension } from '$utils/common'; import { createLogger } from '$utils/debug'; diff --git a/src/app/features/room/reaction-viewer/ReactionViewer.tsx b/src/app/features/room/reaction-viewer/ReactionViewer.tsx index 9065cfb64..fc0573499 100644 --- a/src/app/features/room/reaction-viewer/ReactionViewer.tsx +++ b/src/app/features/room/reaction-viewer/ReactionViewer.tsx @@ -14,7 +14,7 @@ import { as, config, } from 'folds'; -import { MatrixEvent, Room, RoomMember, Relations } from '$types/matrix-sdk'; +import { type MatrixEvent, type Room, type RoomMember, type Relations } from '$types/matrix-sdk'; import { getMemberDisplayName } from '$utils/room'; import { eventWithShortcode, getMxIdLocalPart } from '$utils/matrix'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/features/room/room-pin-menu/RoomPinMenu.tsx b/src/app/features/room/room-pin-menu/RoomPinMenu.tsx index 9762f216a..705e8e850 100644 --- a/src/app/features/room/room-pin-menu/RoomPinMenu.tsx +++ b/src/app/features/room/room-pin-menu/RoomPinMenu.tsx @@ -1,6 +1,13 @@ /* eslint-disable react/no-unused-prop-types, react/destructuring-assignment */ -import { forwardRef, MouseEventHandler, ReactNode, useCallback, useMemo, useRef } from 'react'; -import { MatrixEvent, Room, RoomPinnedEventsEventContent } from '$types/matrix-sdk'; +import { + forwardRef, + type MouseEventHandler, + type ReactNode, + useCallback, + useMemo, + useRef, +} from 'react'; +import { type MatrixEvent, type Room, type RoomPinnedEventsEventContent } from '$types/matrix-sdk'; import { Avatar, Box, @@ -17,8 +24,8 @@ import { Text, toRem, } from 'folds'; -import { Opts as LinkifyOpts } from 'linkifyjs'; -import { HTMLReactParserOptions } from 'html-react-parser'; +import { type Opts as LinkifyOpts } from 'linkifyjs'; +import { type HTMLReactParserOptions } from 'html-react-parser'; import { useAtomValue } from 'jotai'; import { useVirtualizer } from '@tanstack/react-virtual'; import { createLogger } from '$utils/debug'; @@ -49,7 +56,7 @@ import { getMemberDisplayName, getStateEvent, } from '$utils/room'; -import { GetContentCallback, MessageEvent, StateEvent } from '$types/matrix/room'; +import { type GetContentCallback, MessageEvent, StateEvent } from '$types/matrix/room'; import { useMentionClickHandler } from '$hooks/useMentionClickHandler'; import { useSpoilerClickHandler } from '$hooks/useSpoilerClickHandler'; import { @@ -59,7 +66,7 @@ import { makeMentionCustomProps, renderMatrixMention, } from '$plugins/react-custom-html-parser'; -import { RenderMatrixEvent, useMatrixEventRenderer } from '$hooks/useMatrixEventRenderer'; +import { type RenderMatrixEvent, useMatrixEventRenderer } from '$hooks/useMatrixEventRenderer'; import { RenderMessageContent } from '$components/RenderMessageContent'; import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; @@ -77,7 +84,7 @@ import { PowerIcon } from '$components/power'; import { useRoomCreators } from '$hooks/useRoomCreators'; import { useRoomPermissions } from '$hooks/useRoomPermissions'; import { - GetMemberPowerTag, + type GetMemberPowerTag, getPowerTagIconSrc, useAccessiblePowerTagColors, useGetMemberPowerTag, diff --git a/src/app/features/room/schedule-send/SchedulePickerDialog.tsx b/src/app/features/room/schedule-send/SchedulePickerDialog.tsx index 50f119ef9..a2ab1141a 100644 --- a/src/app/features/room/schedule-send/SchedulePickerDialog.tsx +++ b/src/app/features/room/schedule-send/SchedulePickerDialog.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useState } from 'react'; +import { type MouseEventHandler, useState } from 'react'; import FocusTrap from 'focus-trap-react'; import { Dialog, @@ -16,7 +16,7 @@ import { Button, Chip, PopOut, - RectCords, + type RectCords, } from 'folds'; import { stopPropagation } from '$utils/keyboard'; import { timeDayMonthYear, timeHourMinute, hoursToMs, daysToMs } from '$utils/time'; diff --git a/src/app/features/room/schedule-send/ScheduledMessagesList.tsx b/src/app/features/room/schedule-send/ScheduledMessagesList.tsx index 39f751c9c..94ce0e338 100644 --- a/src/app/features/room/schedule-send/ScheduledMessagesList.tsx +++ b/src/app/features/room/schedule-send/ScheduledMessagesList.tsx @@ -1,7 +1,7 @@ import { useCallback, useState } from 'react'; import { useQuery, useQueryClient } from '@tanstack/react-query'; import { Box, Text, Chip, Icon, Icons, IconButton } from 'folds'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useAtom, useAtomValue, useSetAtom } from 'jotai'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { getDelayedEvents, cancelDelayedEvent } from '$utils/delayedEvents'; diff --git a/src/app/features/search/Search.tsx b/src/app/features/search/Search.tsx index 65c79ba83..4c29a68df 100644 --- a/src/app/features/search/Search.tsx +++ b/src/app/features/search/Search.tsx @@ -16,9 +16,9 @@ import { toRem, } from 'folds'; import { - ChangeEventHandler, - KeyboardEventHandler, - MouseEventHandler, + type ChangeEventHandler, + type KeyboardEventHandler, + type MouseEventHandler, useCallback, useEffect, useMemo, @@ -27,12 +27,16 @@ import { } from 'react'; import { isKeyHotkey } from 'is-hotkey'; import { useAtom, useAtomValue } from 'jotai'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useDirects, useOrphanSpaces, useRooms, useSpaces } from '$state/hooks/roomList'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { mDirectAtom } from '$state/mDirectList'; import { allRoomsAtom } from '$state/room-list/roomList'; -import { SearchItemStrGetter, useAsyncSearch, UseAsyncSearchOptions } from '$hooks/useAsyncSearch'; +import { + type SearchItemStrGetter, + useAsyncSearch, + type UseAsyncSearchOptions, +} from '$hooks/useAsyncSearch'; import { useAllJoinedRoomsSet, useGetRoom } from '$hooks/useGetRoom'; import { RoomAvatar, RoomIcon } from '$components/room-avatar'; import { diff --git a/src/app/features/settings/Persona/PerMessageProfileEditor.tsx b/src/app/features/settings/Persona/PerMessageProfileEditor.tsx index 00a0ff9fe..d1350a2b1 100644 --- a/src/app/features/settings/Persona/PerMessageProfileEditor.tsx +++ b/src/app/features/settings/Persona/PerMessageProfileEditor.tsx @@ -1,6 +1,6 @@ import { SequenceCard } from '$components/sequence-card'; import { Box, Button, Text, Avatar, config, Icon, IconButton, Icons, Input } from 'folds'; -import { MatrixClient } from 'matrix-js-sdk'; +import { type MatrixClient } from 'matrix-js-sdk'; import { useCallback, useMemo, useState } from 'react'; import { mxcUrlToHttp } from '$utils/matrix'; import { useFilePicker } from '$hooks/useFilePicker'; @@ -14,7 +14,7 @@ import { deletePerMessageProfile, renamePerMessageProfile, } from '$hooks/usePerMessageProfile'; -import { parsePronounsStringToPronounsSetArray, PronounSet } from '$utils/pronouns'; +import { parsePronounsStringToPronounsSetArray, type PronounSet } from '$utils/pronouns'; import { SequenceCardStyle } from '../styles.css'; /** diff --git a/src/app/features/settings/Persona/PerMessageProfileOverview.tsx b/src/app/features/settings/Persona/PerMessageProfileOverview.tsx index 6ed0dcef0..be7989b89 100644 --- a/src/app/features/settings/Persona/PerMessageProfileOverview.tsx +++ b/src/app/features/settings/Persona/PerMessageProfileOverview.tsx @@ -2,7 +2,7 @@ import { useMatrixClient } from '$hooks/useMatrixClient'; import { addOrUpdatePerMessageProfile, getAllPerMessageProfiles, - PerMessageProfile, + type PerMessageProfile, } from '$hooks/usePerMessageProfile'; import { useEffect, useState } from 'react'; import { Box, Button, Text } from 'folds'; diff --git a/src/app/features/settings/Settings.tsx b/src/app/features/settings/Settings.tsx index 2dd1e4ae4..2167f476d 100644 --- a/src/app/features/settings/Settings.tsx +++ b/src/app/features/settings/Settings.tsx @@ -7,7 +7,7 @@ import { Icon, IconButton, Icons, - IconSrc, + type IconSrc, MenuItem, Overlay, OverlayBackdrop, diff --git a/src/app/features/settings/account/AnimalCosmetics.tsx b/src/app/features/settings/account/AnimalCosmetics.tsx index ada07ef99..93cb9a798 100644 --- a/src/app/features/settings/account/AnimalCosmetics.tsx +++ b/src/app/features/settings/account/AnimalCosmetics.tsx @@ -1,7 +1,7 @@ import { SequenceCard } from '$components/sequence-card'; import { SettingTile } from '$components/setting-tile'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { UserProfile } from '$hooks/useUserProfile'; +import { type UserProfile } from '$hooks/useUserProfile'; import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; import { profilesCacheAtom } from '$state/userRoomProfile'; diff --git a/src/app/features/settings/account/BioEditor.tsx b/src/app/features/settings/account/BioEditor.tsx index b5670a22c..cf194252a 100644 --- a/src/app/features/settings/account/BioEditor.tsx +++ b/src/app/features/settings/account/BioEditor.tsx @@ -1,4 +1,4 @@ -import { KeyboardEventHandler, useCallback, useEffect, useState, useRef } from 'react'; +import { type KeyboardEventHandler, useCallback, useEffect, useState, useRef } from 'react'; import { Box, Chip, @@ -7,7 +7,7 @@ import { Icons, Line, PopOut, - RectCords, + type RectCords, Spinner, Text, config, @@ -17,7 +17,7 @@ import { ReactEditor } from 'slate-react'; import { isKeyHotkey } from 'is-hotkey'; import { AutocompletePrefix, - AutocompleteQuery, + type AutocompleteQuery, CustomEditor, EmoticonAutocomplete, Toolbar, diff --git a/src/app/features/settings/account/IgnoredUserList.tsx b/src/app/features/settings/account/IgnoredUserList.tsx index 0b3b3470f..ef8a024ce 100644 --- a/src/app/features/settings/account/IgnoredUserList.tsx +++ b/src/app/features/settings/account/IgnoredUserList.tsx @@ -1,4 +1,4 @@ -import { ChangeEventHandler, FormEventHandler, useCallback, useState } from 'react'; +import { type ChangeEventHandler, type FormEventHandler, useCallback, useState } from 'react'; import { Box, Button, Chip, Icon, IconButton, Icons, Input, Spinner, Text, config } from 'folds'; import { SequenceCard } from '$components/sequence-card'; import { SettingTile } from '$components/setting-tile'; diff --git a/src/app/features/settings/account/Profile.tsx b/src/app/features/settings/account/Profile.tsx index 5702c0293..1c5149ae2 100644 --- a/src/app/features/settings/account/Profile.tsx +++ b/src/app/features/settings/account/Profile.tsx @@ -1,6 +1,6 @@ import { - ChangeEventHandler, - FormEventHandler, + type ChangeEventHandler, + type FormEventHandler, useCallback, useEffect, useMemo, @@ -29,7 +29,7 @@ import { useSetAtom } from 'jotai'; import { SequenceCard } from '$components/sequence-card'; import { SettingTile } from '$components/setting-tile'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { UserProfile, useUserProfile, MSC4440Bio } from '$hooks/useUserProfile'; +import { type UserProfile, useUserProfile, type MSC4440Bio } from '$hooks/useUserProfile'; import { getMxIdLocalPart, mxcUrlToHttp } from '$utils/matrix'; import { UserAvatar } from '$components/user-avatar'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; @@ -40,13 +40,13 @@ import { useObjectURL } from '$hooks/useObjectURL'; import { stopPropagation } from '$utils/keyboard'; import { ImageEditor } from '$components/image-editor'; import { ModalWide } from '$styles/Modal.css'; -import { createUploadAtom, UploadSuccess } from '$state/upload'; +import { createUploadAtom, type UploadSuccess } from '$state/upload'; import { CompactUploadCardRenderer } from '$components/upload-card'; import { useCapabilities } from '$hooks/useCapabilities'; import { profilesCacheAtom } from '$state/userRoomProfile'; import { SequenceCardStyle } from '$features/settings/styles.css'; import { useUserPresence } from '$hooks/useUserPresence'; -import { MSC1767Text } from '$types/matrix/common'; +import { type MSC1767Text } from '$types/matrix/common'; import { TimezoneEditor } from './TimezoneEditor'; import { PronounEditor } from './PronounEditor'; import { BioEditor } from './BioEditor'; diff --git a/src/app/features/settings/account/PronounEditor.tsx b/src/app/features/settings/account/PronounEditor.tsx index 2de50a142..28ead56c8 100644 --- a/src/app/features/settings/account/PronounEditor.tsx +++ b/src/app/features/settings/account/PronounEditor.tsx @@ -1,7 +1,7 @@ -import { useState, useEffect, ChangeEvent } from 'react'; +import { useState, useEffect, type ChangeEvent } from 'react'; import { Input } from 'folds'; import { SettingTile } from '$components/setting-tile'; -import { parsePronounsInput, PronounSet } from '$utils/pronouns'; +import { parsePronounsInput, type PronounSet } from '$utils/pronouns'; type PronounEditorProps = { title: string; diff --git a/src/app/features/settings/account/StatusEditor.tsx b/src/app/features/settings/account/StatusEditor.tsx index 001c99c34..1ca6f68ce 100644 --- a/src/app/features/settings/account/StatusEditor.tsx +++ b/src/app/features/settings/account/StatusEditor.tsx @@ -1,4 +1,4 @@ -import { ChangeEventHandler, FormEventHandler, useEffect, useState } from 'react'; +import { type ChangeEventHandler, type FormEventHandler, useEffect, useState } from 'react'; import { Box, Text, Button, Input, IconButton, Icon, Icons, Spinner, config } from 'folds'; import { SettingTile } from '$components/setting-tile'; diff --git a/src/app/features/settings/account/TimezoneEditor.tsx b/src/app/features/settings/account/TimezoneEditor.tsx index 7d28399a5..0b3e12d1c 100644 --- a/src/app/features/settings/account/TimezoneEditor.tsx +++ b/src/app/features/settings/account/TimezoneEditor.tsx @@ -1,4 +1,4 @@ -import { useMemo, useState, useEffect, ChangeEvent } from 'react'; +import { useMemo, useState, useEffect, type ChangeEvent } from 'react'; import { Box, IconButton, Button, Icon, Icons, Input, Text } from 'folds'; import { SettingTile } from '$components/setting-tile'; diff --git a/src/app/features/settings/cosmetics/Cosmetics.tsx b/src/app/features/settings/cosmetics/Cosmetics.tsx index 7e44bf480..039751820 100644 --- a/src/app/features/settings/cosmetics/Cosmetics.tsx +++ b/src/app/features/settings/cosmetics/Cosmetics.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useState } from 'react'; +import { type MouseEventHandler, useState } from 'react'; import { Box, Button, @@ -9,7 +9,7 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Scroll, Switch, Text, @@ -18,7 +18,7 @@ import FocusTrap from 'focus-trap-react'; import { Page, PageContent, PageHeader } from '$components/page'; import { SequenceCard } from '$components/sequence-card'; import { useSetting } from '$state/hooks/settings'; -import { JumboEmojiSize, settingsAtom } from '$state/settings'; +import { type JumboEmojiSize, settingsAtom } from '$state/settings'; import { SettingTile } from '$components/setting-tile'; import { stopPropagation } from '$utils/keyboard'; import { SequenceCardStyle } from '$features/settings/styles.css'; diff --git a/src/app/features/settings/cosmetics/Themes.tsx b/src/app/features/settings/cosmetics/Themes.tsx index 0ec660aa0..f855f3548 100644 --- a/src/app/features/settings/cosmetics/Themes.tsx +++ b/src/app/features/settings/cosmetics/Themes.tsx @@ -1,4 +1,9 @@ -import { ChangeEventHandler, KeyboardEventHandler, MouseEventHandler, useState } from 'react'; +import { + type ChangeEventHandler, + type KeyboardEventHandler, + type MouseEventHandler, + useState, +} from 'react'; import { as, Box, @@ -11,7 +16,7 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Switch, Text, toRem, @@ -25,7 +30,7 @@ import { SettingTile } from '$components/setting-tile'; import { DarkTheme, LightTheme, - Theme, + type Theme, ThemeKind, useSystemThemeKind, useThemeNames, diff --git a/src/app/features/settings/developer-tools/DebugLogViewer.tsx b/src/app/features/settings/developer-tools/DebugLogViewer.tsx index 8e5ae01e1..d983cf436 100644 --- a/src/app/features/settings/developer-tools/DebugLogViewer.tsx +++ b/src/app/features/settings/developer-tools/DebugLogViewer.tsx @@ -1,10 +1,21 @@ -import { useEffect, useState, useCallback, useMemo, MouseEventHandler } from 'react'; +import { useEffect, useState, useCallback, useMemo, type MouseEventHandler } from 'react'; import { useAtom, useAtomValue, useSetAtom } from 'jotai'; -import { Box, Text, Button, color, config, Badge, Menu, MenuItem, PopOut, RectCords } from 'folds'; +import { + Box, + Text, + Button, + color, + config, + Badge, + Menu, + MenuItem, + PopOut, + type RectCords, +} from 'folds'; import { SequenceCard } from '$components/sequence-card'; import { debugLoggerEnabledAtom, debugLogsAtom, clearDebugLogsAtom } from '$state/debugLogger'; -import { LogEntry, getDebugLogger, LogLevel, LogCategory } from '$utils/debugLogger'; +import { type LogEntry, getDebugLogger, type LogLevel, type LogCategory } from '$utils/debugLogger'; import { SequenceCardStyle } from '$features/settings/styles.css'; const formatTimestamp = (timestamp: number): string => { diff --git a/src/app/features/settings/developer-tools/DevelopTools.tsx b/src/app/features/settings/developer-tools/DevelopTools.tsx index b717f2261..f13f8457f 100644 --- a/src/app/features/settings/developer-tools/DevelopTools.tsx +++ b/src/app/features/settings/developer-tools/DevelopTools.tsx @@ -6,7 +6,7 @@ import { SettingTile } from '$components/setting-tile'; import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { AccountDataEditor, AccountDataSubmitCallback } from '$components/AccountDataEditor'; +import { AccountDataEditor, type AccountDataSubmitCallback } from '$components/AccountDataEditor'; import { copyToClipboard } from '$utils/dom'; import { SequenceCardStyle } from '$features/settings/styles.css'; import { AccountData } from './AccountData'; diff --git a/src/app/features/settings/developer-tools/SentrySettings.tsx b/src/app/features/settings/developer-tools/SentrySettings.tsx index b0425e76f..3c6ef4874 100644 --- a/src/app/features/settings/developer-tools/SentrySettings.tsx +++ b/src/app/features/settings/developer-tools/SentrySettings.tsx @@ -3,7 +3,7 @@ import { Box, Text, Switch, Button } from 'folds'; import { SequenceCard } from '$components/sequence-card'; import { SettingTile } from '$components/setting-tile'; import { SequenceCardStyle } from '$features/settings/styles.css'; -import { getDebugLogger, LogCategory } from '$utils/debugLogger'; +import { getDebugLogger, type LogCategory } from '$utils/debugLogger'; const ALL_CATEGORIES: LogCategory[] = [ 'sync', diff --git a/src/app/features/settings/developer-tools/SyncDiagnostics.tsx b/src/app/features/settings/developer-tools/SyncDiagnostics.tsx index 1d9631107..f9b062b71 100644 --- a/src/app/features/settings/developer-tools/SyncDiagnostics.tsx +++ b/src/app/features/settings/developer-tools/SyncDiagnostics.tsx @@ -3,7 +3,7 @@ import { Box, Button, Icon, Icons, Text } from 'folds'; import { SequenceCard } from '$components/sequence-card'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { getClientSyncDiagnostics } from '$client/initMatrix'; -import { Direction, EventType, NotificationCountType, Room } from '$types/matrix-sdk'; +import { Direction, EventType, NotificationCountType, type Room } from '$types/matrix-sdk'; import { Membership } from '$types/matrix/room'; import { SequenceCardStyle } from '$features/settings/styles.css'; import { getUnreadInfo, isNotificationEvent } from '$utils/room'; diff --git a/src/app/features/settings/devices/DeviceTile.tsx b/src/app/features/settings/devices/DeviceTile.tsx index b77be8ac5..c9473b484 100644 --- a/src/app/features/settings/devices/DeviceTile.tsx +++ b/src/app/features/settings/devices/DeviceTile.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, ReactNode, useCallback, useEffect, useState } from 'react'; +import { type FormEventHandler, type ReactNode, useCallback, useEffect, useState } from 'react'; import { Box, Text, @@ -15,7 +15,7 @@ import { OverlayBackdrop, OverlayCenter, } from 'folds'; -import { CryptoApi, IMyDevice, MatrixError } from '$types/matrix-sdk'; +import { type CryptoApi, type IMyDevice, type MatrixError } from '$types/matrix-sdk'; import FocusTrap from 'focus-trap-react'; import { SettingTile } from '$components/setting-tile'; import { useMatrixClient } from '$hooks/useMatrixClient'; diff --git a/src/app/features/settings/devices/LocalBackup.tsx b/src/app/features/settings/devices/LocalBackup.tsx index eaefc7ff5..b8700405f 100644 --- a/src/app/features/settings/devices/LocalBackup.tsx +++ b/src/app/features/settings/devices/LocalBackup.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, useCallback, useEffect, useState } from 'react'; +import { type FormEventHandler, useCallback, useEffect, useState } from 'react'; import { Box, Button, color, Icon, Icons, Spinner, Text, toRem } from 'folds'; import FileSaver from 'file-saver'; import { SequenceCard } from '$components/sequence-card'; diff --git a/src/app/features/settings/devices/OtherDevices.tsx b/src/app/features/settings/devices/OtherDevices.tsx index e044201d1..8687f1165 100644 --- a/src/app/features/settings/devices/OtherDevices.tsx +++ b/src/app/features/settings/devices/OtherDevices.tsx @@ -1,9 +1,9 @@ import { useCallback, useState } from 'react'; import { Box, Button, config, Menu, Spinner, Text } from 'folds'; -import { AuthDict, IMyDevice, MatrixError } from '$types/matrix-sdk'; +import { type AuthDict, type IMyDevice, type MatrixError } from '$types/matrix-sdk'; import { SequenceCard } from '$components/sequence-card'; import { ActionUIA, ActionUIAFlowsLoader } from '$components/ActionUIA'; -import { AsyncState, AsyncStatus, useAsync } from '$hooks/useAsyncCallback'; +import { type AsyncState, AsyncStatus, useAsync } from '$hooks/useAsyncCallback'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useUIAMatrixError } from '$hooks/useUIAFlows'; import { DeviceVerificationStatus } from '$components/DeviceVerificationStatus'; diff --git a/src/app/features/settings/devices/Verification.tsx b/src/app/features/settings/devices/Verification.tsx index 34dccf481..7376c4116 100644 --- a/src/app/features/settings/devices/Verification.tsx +++ b/src/app/features/settings/devices/Verification.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useCallback, useState } from 'react'; +import { type MouseEventHandler, useCallback, useState } from 'react'; import { Badge, Box, @@ -13,18 +13,18 @@ import { OverlayBackdrop, OverlayCenter, IconButton, - RectCords, + type RectCords, PopOut, Menu, MenuItem, } from 'folds'; import FocusTrap from 'focus-trap-react'; -import { CryptoApi, VerificationRequest } from '$types/matrix-sdk'; +import { type CryptoApi, type VerificationRequest } from '$types/matrix-sdk'; import { VerificationStatus } from '$hooks/useDeviceVerificationStatus'; import { InfoCard } from '$components/info-card'; import { ManualVerificationTile } from '$components/ManualVerification'; -import { SecretStorageKeyContent } from '$types/matrix/accountData'; -import { AsyncState, AsyncStatus, useAsync } from '$hooks/useAsyncCallback'; +import { type SecretStorageKeyContent } from '$types/matrix/accountData'; +import { type AsyncState, AsyncStatus, useAsync } from '$hooks/useAsyncCallback'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { DeviceVerification } from '$components/DeviceVerification'; import { diff --git a/src/app/features/settings/emojis-stickers/EmojisStickers.tsx b/src/app/features/settings/emojis-stickers/EmojisStickers.tsx index d8708907c..6ceb142a6 100644 --- a/src/app/features/settings/emojis-stickers/EmojisStickers.tsx +++ b/src/app/features/settings/emojis-stickers/EmojisStickers.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; import { Box, Text, IconButton, Icon, Icons, Scroll } from 'folds'; import { Page, PageContent, PageHeader } from '$components/page'; -import { ImagePack } from '$plugins/custom-emoji'; +import { type ImagePack } from '$plugins/custom-emoji'; import { ImagePackView } from '$components/image-pack-view'; import { GlobalPacks } from './GlobalPacks'; import { UserPack } from './UserPack'; diff --git a/src/app/features/settings/emojis-stickers/GlobalPacks.tsx b/src/app/features/settings/emojis-stickers/GlobalPacks.tsx index 1c66d4c6f..799e709f6 100644 --- a/src/app/features/settings/emojis-stickers/GlobalPacks.tsx +++ b/src/app/features/settings/emojis-stickers/GlobalPacks.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useCallback, useEffect, useMemo, useState } from 'react'; +import { type MouseEventHandler, useCallback, useEffect, useMemo, useState } from 'react'; import { Box, Text, @@ -12,7 +12,7 @@ import { config, Spinner, Menu, - RectCords, + type RectCords, PopOut, Checkbox, toRem, @@ -23,7 +23,7 @@ import { } from 'folds'; import FocusTrap from 'focus-trap-react'; import { useAtomValue } from 'jotai'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useGlobalImagePacks, useRoomsImagePacks } from '$hooks/useImagePacks'; import { SequenceCard } from '$components/sequence-card'; import { SettingTile } from '$components/setting-tile'; @@ -31,10 +31,10 @@ import { mxcUrlToHttp } from '$utils/matrix'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { - EmoteRoomsContent, - ImagePack, + type EmoteRoomsContent, + type ImagePack, ImageUsage, - PackAddress, + type PackAddress, packAddressEqual, } from '$plugins/custom-emoji'; import { LineClamp2 } from '$styles/Text.css'; diff --git a/src/app/features/settings/general/General.tsx b/src/app/features/settings/general/General.tsx index f7b8a6531..1d4bcd1e5 100644 --- a/src/app/features/settings/general/General.tsx +++ b/src/app/features/settings/general/General.tsx @@ -1,8 +1,8 @@ import { - ChangeEventHandler, - FormEventHandler, - KeyboardEventHandler, - MouseEventHandler, + type ChangeEventHandler, + type FormEventHandler, + type KeyboardEventHandler, + type MouseEventHandler, useEffect, useState, } from 'react'; @@ -20,7 +20,7 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Scroll, Switch, Text, @@ -31,11 +31,11 @@ import { Page, PageContent, PageHeader } from '$components/page'; import { SequenceCard } from '$components/sequence-card'; import { useSetting } from '$state/hooks/settings'; import { - DateFormat, + type DateFormat, MessageLayout, - MessageSpacing, + type MessageSpacing, RightSwipeAction, - CaptionPosition, + type CaptionPosition, settingsAtom, } from '$state/settings'; import { SettingTile } from '$components/setting-tile'; diff --git a/src/app/features/settings/notifications/AllMessages.tsx b/src/app/features/settings/notifications/AllMessages.tsx index 5ee60a178..6fa701409 100644 --- a/src/app/features/settings/notifications/AllMessages.tsx +++ b/src/app/features/settings/notifications/AllMessages.tsx @@ -2,8 +2,8 @@ import { useCallback, useMemo } from 'react'; import { Badge, Box, Text } from 'folds'; import { ConditionKind, - IPushRules, - PushRuleCondition, + type IPushRules, + type PushRuleCondition, PushRuleKind, RuleId, } from '$types/matrix-sdk'; @@ -11,7 +11,7 @@ import { useAccountData } from '$hooks/useAccountData'; import { AccountDataEvent } from '$types/matrix/accountData'; import { SequenceCard } from '$components/sequence-card'; import { SettingTile } from '$components/setting-tile'; -import { PushRuleData, usePushRule } from '$hooks/usePushRule'; +import { type PushRuleData, usePushRule } from '$hooks/usePushRule'; import { getNotificationModeActions, NotificationMode, diff --git a/src/app/features/settings/notifications/KeywordMessages.tsx b/src/app/features/settings/notifications/KeywordMessages.tsx index ff235271f..4395d8a78 100644 --- a/src/app/features/settings/notifications/KeywordMessages.tsx +++ b/src/app/features/settings/notifications/KeywordMessages.tsx @@ -1,5 +1,11 @@ -import { ChangeEventHandler, FormEventHandler, useCallback, useMemo, useState } from 'react'; -import { IPushRule, IPushRules, PushRuleKind } from '$types/matrix-sdk'; +import { + type ChangeEventHandler, + type FormEventHandler, + useCallback, + useMemo, + useState, +} from 'react'; +import { type IPushRule, type IPushRules, PushRuleKind } from '$types/matrix-sdk'; import { Box, Text, Badge, Button, Input, config, IconButton, Icons, Icon, Spinner } from 'folds'; import { useAccountData } from '$hooks/useAccountData'; import { AccountDataEvent } from '$types/matrix/accountData'; @@ -9,7 +15,7 @@ import { useMatrixClient } from '$hooks/useMatrixClient'; import { getNotificationModeActions, NotificationMode, - NotificationModeOptions, + type NotificationModeOptions, useNotificationModeActions, } from '$hooks/useNotificationMode'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; diff --git a/src/app/features/settings/notifications/NotificationLevelsHint.tsx b/src/app/features/settings/notifications/NotificationLevelsHint.tsx index 700ca2bdb..9585a57ed 100644 --- a/src/app/features/settings/notifications/NotificationLevelsHint.tsx +++ b/src/app/features/settings/notifications/NotificationLevelsHint.tsx @@ -1,5 +1,16 @@ -import { MouseEventHandler, useState } from 'react'; -import { Box, config, Header, Icon, IconButton, Icons, Menu, PopOut, RectCords, Text } from 'folds'; +import { type MouseEventHandler, useState } from 'react'; +import { + Box, + config, + Header, + Icon, + IconButton, + Icons, + Menu, + PopOut, + type RectCords, + Text, +} from 'folds'; import FocusTrap from 'focus-trap-react'; import { stopPropagation } from '$utils/keyboard'; diff --git a/src/app/features/settings/notifications/NotificationModeSwitcher.tsx b/src/app/features/settings/notifications/NotificationModeSwitcher.tsx index 608bd5078..b76be0a83 100644 --- a/src/app/features/settings/notifications/NotificationModeSwitcher.tsx +++ b/src/app/features/settings/notifications/NotificationModeSwitcher.tsx @@ -7,12 +7,12 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Spinner, Text, } from 'folds'; -import { IPushRule } from '$types/matrix-sdk'; -import { MouseEventHandler, useMemo, useState } from 'react'; +import { type IPushRule } from '$types/matrix-sdk'; +import { type MouseEventHandler, useMemo, useState } from 'react'; import FocusTrap from 'focus-trap-react'; import { NotificationMode, useNotificationActionsMode } from '$hooks/useNotificationMode'; import { stopPropagation } from '$utils/keyboard'; diff --git a/src/app/features/settings/notifications/PushNotifications.tsx b/src/app/features/settings/notifications/PushNotifications.tsx index 46c0ebb0d..45c6526d7 100644 --- a/src/app/features/settings/notifications/PushNotifications.tsx +++ b/src/app/features/settings/notifications/PushNotifications.tsx @@ -1,6 +1,6 @@ -import { MatrixClient } from '$types/matrix-sdk'; +import { type MatrixClient } from '$types/matrix-sdk'; import { createDebugLogger } from '$utils/debugLogger'; -import { ClientConfig } from '../../../hooks/useClientConfig'; +import { type ClientConfig } from '../../../hooks/useClientConfig'; const debugLog = createDebugLogger('PushNotifications'); diff --git a/src/app/features/settings/notifications/SpecialMessages.tsx b/src/app/features/settings/notifications/SpecialMessages.tsx index ac8d736f3..f347cee17 100644 --- a/src/app/features/settings/notifications/SpecialMessages.tsx +++ b/src/app/features/settings/notifications/SpecialMessages.tsx @@ -1,5 +1,5 @@ import { useCallback, useMemo } from 'react'; -import { ConditionKind, IPushRules, PushRuleKind, RuleId } from '$types/matrix-sdk'; +import { ConditionKind, type IPushRules, PushRuleKind, RuleId } from '$types/matrix-sdk'; import { Box, Text, Badge } from 'folds'; import { useAccountData } from '$hooks/useAccountData'; import { AccountDataEvent } from '$types/matrix/accountData'; @@ -8,11 +8,11 @@ import { SettingTile } from '$components/setting-tile'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useUserProfile } from '$hooks/useUserProfile'; import { getMxIdLocalPart } from '$utils/matrix'; -import { makePushRuleData, PushRuleData, usePushRule } from '$hooks/usePushRule'; +import { makePushRuleData, type PushRuleData, usePushRule } from '$hooks/usePushRule'; import { getNotificationModeActions, NotificationMode, - NotificationModeOptions, + type NotificationModeOptions, useNotificationModeActions, } from '$hooks/useNotificationMode'; import { SequenceCardStyle } from '$features/settings/styles.css'; diff --git a/src/app/features/settings/notifications/SystemNotification.tsx b/src/app/features/settings/notifications/SystemNotification.tsx index c9b59549a..b92ea3366 100644 --- a/src/app/features/settings/notifications/SystemNotification.tsx +++ b/src/app/features/settings/notifications/SystemNotification.tsx @@ -1,7 +1,7 @@ /* eslint-disable no-nested-ternary */ import { useCallback, useEffect, useState } from 'react'; import { Box, Text, Switch, Button, color, Spinner, config } from 'folds'; -import { IPusherRequest } from '$types/matrix-sdk'; +import { type IPusherRequest } from '$types/matrix-sdk'; import { useAtom } from 'jotai'; import { SequenceCard } from '$components/sequence-card'; import { SettingTile } from '$components/setting-tile'; diff --git a/src/app/features/space-nav/SpaceNavItem.tsx b/src/app/features/space-nav/SpaceNavItem.tsx index f319a9da6..91c6d5735 100644 --- a/src/app/features/space-nav/SpaceNavItem.tsx +++ b/src/app/features/space-nav/SpaceNavItem.tsx @@ -1,6 +1,6 @@ -import { MouseEventHandler, useState } from 'react'; -import { Room } from '$types/matrix-sdk'; -import { Box, Icon, Icons, Text, config, RectCords, Avatar } from 'folds'; +import { type MouseEventHandler, useState } from 'react'; +import { type Room } from '$types/matrix-sdk'; +import { Box, Icon, Icons, Text, config, type RectCords, Avatar } from 'folds'; import { useNavigate } from 'react-router-dom'; import { NavButton, NavItem, NavItemContent } from '$components/nav'; import { useRoomName } from '$hooks/useRoomMeta'; diff --git a/src/app/features/space-settings/SpaceSettings.tsx b/src/app/features/space-settings/SpaceSettings.tsx index 586fba3f2..e2377896e 100644 --- a/src/app/features/space-settings/SpaceSettings.tsx +++ b/src/app/features/space-settings/SpaceSettings.tsx @@ -1,6 +1,6 @@ import { useMemo, useState } from 'react'; import { useAtomValue } from 'jotai'; -import { Avatar, Box, config, Icon, IconButton, Icons, IconSrc, MenuItem, Text } from 'folds'; +import { Avatar, Box, config, Icon, IconButton, Icons, type IconSrc, MenuItem, Text } from 'folds'; import { JoinRule } from '$types/matrix-sdk'; import { PageNav, PageNavContent, PageNavHeader, PageRoot } from '$components/page'; import { ScreenSize, useScreenSizeContext } from '$hooks/useScreenSize'; diff --git a/src/app/features/space-settings/SpaceSettingsRenderer.tsx b/src/app/features/space-settings/SpaceSettingsRenderer.tsx index 425428685..fe1f95624 100644 --- a/src/app/features/space-settings/SpaceSettingsRenderer.tsx +++ b/src/app/features/space-settings/SpaceSettingsRenderer.tsx @@ -1,7 +1,7 @@ import { Modal500 } from '$components/Modal500'; import { useCloseSpaceSettings, useSpaceSettingsState } from '$state/hooks/spaceSettings'; import { useAllJoinedRoomsSet, useGetRoom } from '$hooks/useGetRoom'; -import { SpaceSettingsState } from '$state/spaceSettings'; +import { type SpaceSettingsState } from '$state/spaceSettings'; import { RoomProvider } from '$hooks/useRoom'; import { SpaceProvider } from '$hooks/useSpace'; import { SpaceSettings } from './SpaceSettings'; diff --git a/src/app/features/space-settings/permissions/usePermissionItems.ts b/src/app/features/space-settings/permissions/usePermissionItems.ts index cdc4f73df..573970a16 100644 --- a/src/app/features/space-settings/permissions/usePermissionItems.ts +++ b/src/app/features/space-settings/permissions/usePermissionItems.ts @@ -1,6 +1,6 @@ import { useMemo } from 'react'; import { StateEvent } from '$types/matrix/room'; -import { PermissionGroup } from '$features/common-settings/permissions'; +import { type PermissionGroup } from '$features/common-settings/permissions'; export const usePermissionGroups = (): PermissionGroup[] => { const groups: PermissionGroup[] = useMemo(() => { diff --git a/src/app/features/widgets/GenericWidgetDriver.ts b/src/app/features/widgets/GenericWidgetDriver.ts index ee143b4f3..c58752406 100644 --- a/src/app/features/widgets/GenericWidgetDriver.ts +++ b/src/app/features/widgets/GenericWidgetDriver.ts @@ -6,14 +6,14 @@ import { type IRoomEvent, type Widget, WidgetDriver, - WidgetKind, + type WidgetKind, type IWidgetApiErrorResponseDataDetails, type ISearchUserDirectoryResult, type IGetMediaConfigResult, UpdateDelayedEventAction, OpenIDRequestState, - SimpleObservable, - IOpenIDUpdate, + type SimpleObservable, + type IOpenIDUpdate, } from 'matrix-widget-api'; import { EventType, @@ -24,8 +24,8 @@ import { type SendDelayedEventResponse, type StateEvents, type TimelineEvents, - MatrixClient, - Room, + type MatrixClient, + type Room, } from '$types/matrix-sdk'; export type CapabilityApprovalCallback = (requested: Set) => Promise>; diff --git a/src/app/features/widgets/IntegrationManager.tsx b/src/app/features/widgets/IntegrationManager.tsx index 4bf242a4f..09ab8bcae 100644 --- a/src/app/features/widgets/IntegrationManager.tsx +++ b/src/app/features/widgets/IntegrationManager.tsx @@ -12,7 +12,7 @@ import { Text, } from 'folds'; import FocusTrap from 'focus-trap-react'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useIntegrationManager, buildIntegrationManagerUrl } from '$hooks/useIntegrationManager'; import * as css from './IntegrationManager.css'; diff --git a/src/app/features/widgets/WidgetIframe.tsx b/src/app/features/widgets/WidgetIframe.tsx index 844debfd2..bf63cde61 100644 --- a/src/app/features/widgets/WidgetIframe.tsx +++ b/src/app/features/widgets/WidgetIframe.tsx @@ -1,16 +1,22 @@ import { useEffect, useRef, useState } from 'react'; -import { ClientWidgetApi, IWidget, IRoomEvent, Widget, WidgetKind } from 'matrix-widget-api'; +import { + ClientWidgetApi, + type IWidget, + type IRoomEvent, + Widget, + WidgetKind, +} from 'matrix-widget-api'; import { ClientEvent, Direction, - IEvent, - MatrixClient, - MatrixEvent, + type IEvent, + type MatrixClient, + type MatrixEvent, MatrixEventEvent, } from '$types/matrix-sdk'; import { createLogger } from '$utils/debug'; import { resolveWidgetUrl } from '$hooks/useRoomWidgets'; -import { GenericWidgetDriver, CapabilityApprovalCallback } from './GenericWidgetDriver'; +import { GenericWidgetDriver, type CapabilityApprovalCallback } from './GenericWidgetDriver'; const log = createLogger('WidgetIframe'); diff --git a/src/app/features/widgets/WidgetsDrawer.tsx b/src/app/features/widgets/WidgetsDrawer.tsx index ade7699e8..9c66f2832 100644 --- a/src/app/features/widgets/WidgetsDrawer.tsx +++ b/src/app/features/widgets/WidgetsDrawer.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, MouseEventHandler, useState } from 'react'; +import { type FormEventHandler, type MouseEventHandler, useState } from 'react'; import { Box, Header, @@ -15,10 +15,10 @@ import { Button, Line, } from 'folds'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useMatrixClient } from '$hooks/useMatrixClient'; -import { useRoomWidgets, RoomWidget, enrichWidgetUrl } from '$hooks/useRoomWidgets'; +import { useRoomWidgets, type RoomWidget, enrichWidgetUrl } from '$hooks/useRoomWidgets'; import { useSetSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; import { usePowerLevelsContext } from '$hooks/usePowerLevels'; diff --git a/src/app/hooks/timeline/useProcessedTimeline.ts b/src/app/hooks/timeline/useProcessedTimeline.ts index f1f799308..861736f5d 100644 --- a/src/app/hooks/timeline/useProcessedTimeline.ts +++ b/src/app/hooks/timeline/useProcessedTimeline.ts @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { MatrixEvent, EventTimelineSet, EventTimeline } from '$types/matrix-sdk'; +import { type MatrixEvent, type EventTimelineSet, type EventTimeline } from '$types/matrix-sdk'; import { getTimelineAndBaseIndex, getTimelineRelativeIndex, diff --git a/src/app/hooks/timeline/useTimelineActions.ts b/src/app/hooks/timeline/useTimelineActions.ts index e7bb45f68..a3782eea0 100644 --- a/src/app/hooks/timeline/useTimelineActions.ts +++ b/src/app/hooks/timeline/useTimelineActions.ts @@ -1,6 +1,12 @@ -import { useCallback, MouseEventHandler } from 'react'; -import { MatrixClient, Room, MatrixEvent, EventStatus, IContent } from '$types/matrix-sdk'; -import { Editor } from 'slate'; +import { useCallback, type MouseEventHandler } from 'react'; +import { + type MatrixClient, + type Room, + type MatrixEvent, + EventStatus, + type IContent, +} from '$types/matrix-sdk'; +import { type Editor } from 'slate'; import { ReactEditor } from 'slate-react'; import { getMxIdLocalPart, toggleReaction } from '$utils/matrix'; diff --git a/src/app/hooks/timeline/useTimelineEventRenderer.tsx b/src/app/hooks/timeline/useTimelineEventRenderer.tsx index f7dca411a..d7d94e49d 100644 --- a/src/app/hooks/timeline/useTimelineEventRenderer.tsx +++ b/src/app/hooks/timeline/useTimelineEventRenderer.tsx @@ -1,22 +1,22 @@ -import { MouseEventHandler, useCallback, useMemo } from 'react'; +import { type MouseEventHandler, useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { useAtomValue } from 'jotai'; import { - MatrixClient, - MatrixEvent, - Room, - PushProcessor, - EventTimelineSet, - IContent, + type MatrixClient, + type MatrixEvent, + type Room, + type PushProcessor, + type EventTimelineSet, + type IContent, } from '$types/matrix-sdk'; -import { SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; -import { HTMLReactParserOptions } from 'html-react-parser'; -import { Opts as LinkifyOpts } from 'linkifyjs'; +import { type SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; +import { type HTMLReactParserOptions } from 'html-react-parser'; +import { type Opts as LinkifyOpts } from 'linkifyjs'; import { Box, Chip, Avatar, Text, Icons, config, toRem, Icon } from 'folds'; import { MessageLayout } from '$state/settings'; import { nicknamesAtom } from '$state/nicknames'; -import { useGetMemberPowerTag } from '$hooks/useMemberPowerTag'; -import { useMemberEventParser } from '$hooks/useMemberEventParser'; +import { type useGetMemberPowerTag } from '$hooks/useMemberPowerTag'; +import { type useMemberEventParser } from '$hooks/useMemberEventParser'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { useMatrixEventRenderer } from '$hooks/useMatrixEventRenderer'; @@ -35,7 +35,7 @@ import { ImageViewer } from '$components/image-viewer'; import { RenderMessageContent } from '$components/RenderMessageContent'; import { ClientSideHoverFreeze } from '$components/ClientSideHoverFreeze'; import { UserAvatar } from '$components/user-avatar'; -import { MessageEvent, StateEvent, GetContentCallback } from '$types/matrix/room'; +import { MessageEvent, StateEvent, type GetContentCallback } from '$types/matrix/room'; import { getMxIdLocalPart, mxcUrlToHttp } from '$utils/matrix'; import { getEditedEvent, @@ -50,7 +50,7 @@ import * as customHtmlCss from '$styles/CustomHtml.css'; import { EncryptedContent, Event, - ForwardedMessageProps, + type ForwardedMessageProps, Message, Reactions, } from '$features/room/message'; diff --git a/src/app/hooks/timeline/useTimelineSync.test.tsx b/src/app/hooks/timeline/useTimelineSync.test.tsx index 71fde31c2..bbedbebad 100644 --- a/src/app/hooks/timeline/useTimelineSync.test.tsx +++ b/src/app/hooks/timeline/useTimelineSync.test.tsx @@ -1,7 +1,7 @@ import { EventEmitter } from 'events'; import { act, renderHook } from '@testing-library/react'; import { describe, expect, it, vi } from 'vitest'; -import { Room, RoomEvent } from '$types/matrix-sdk'; +import { type Room, RoomEvent } from '$types/matrix-sdk'; import { useTimelineSync } from './useTimelineSync'; vi.mock('@sentry/react', () => ({ diff --git a/src/app/hooks/timeline/useTimelineSync.ts b/src/app/hooks/timeline/useTimelineSync.ts index 395d6fc46..62c525f13 100644 --- a/src/app/hooks/timeline/useTimelineSync.ts +++ b/src/app/hooks/timeline/useTimelineSync.ts @@ -1,16 +1,24 @@ -import { useState, useMemo, useCallback, useRef, useEffect, Dispatch, SetStateAction } from 'react'; +import { + useState, + useMemo, + useCallback, + useRef, + useEffect, + type Dispatch, + type SetStateAction, +} from 'react'; import to from 'await-to-js'; import * as Sentry from '@sentry/react'; import { - MatrixClient, - Room, - MatrixEvent, + type MatrixClient, + type Room, + type MatrixEvent, Direction, - EventTimeline, - EventTimelineSetHandlerMap, + type EventTimeline, + type EventTimelineSetHandlerMap, RoomEvent, - IRoomTimelineData, - RoomEventHandlerMap, + type IRoomTimelineData, + type RoomEventHandlerMap, RelationType, ThreadEvent, } from '$types/matrix-sdk'; diff --git a/src/app/hooks/types.ts b/src/app/hooks/types.ts index 781eb90ca..37c5e42ca 100644 --- a/src/app/hooks/types.ts +++ b/src/app/hooks/types.ts @@ -1,4 +1,4 @@ -import { IRequestTokenResponse } from '$types/matrix-sdk'; +import { type IRequestTokenResponse } from '$types/matrix-sdk'; export type RequestEmailTokenResponse = { email: string; diff --git a/src/app/hooks/useAccountData.ts b/src/app/hooks/useAccountData.ts index 11d3d5b42..ca90d866c 100644 --- a/src/app/hooks/useAccountData.ts +++ b/src/app/hooks/useAccountData.ts @@ -1,5 +1,5 @@ import { useState, useCallback } from 'react'; -import { AccountDataEvents } from '$types/matrix-sdk'; +import { type AccountDataEvents } from '$types/matrix-sdk'; import { useMatrixClient } from './useMatrixClient'; import { useAccountDataCallback } from './useAccountDataCallback'; diff --git a/src/app/hooks/useAccountDataCallback.ts b/src/app/hooks/useAccountDataCallback.ts index 97c350446..7c4995707 100644 --- a/src/app/hooks/useAccountDataCallback.ts +++ b/src/app/hooks/useAccountDataCallback.ts @@ -1,4 +1,4 @@ -import { ClientEvent, ClientEventHandlerMap, MatrixClient } from '$types/matrix-sdk'; +import { ClientEvent, type ClientEventHandlerMap, type MatrixClient } from '$types/matrix-sdk'; import { useEffect } from 'react'; export const useAccountDataCallback = ( diff --git a/src/app/hooks/useAppVisibility.ts b/src/app/hooks/useAppVisibility.ts index 7fd5f2325..4dc9a5be7 100644 --- a/src/app/hooks/useAppVisibility.ts +++ b/src/app/hooks/useAppVisibility.ts @@ -1,5 +1,5 @@ import { useEffect } from 'react'; -import { MatrixClient } from '$types/matrix-sdk'; +import { type MatrixClient } from '$types/matrix-sdk'; import { useAtom } from 'jotai'; import { togglePusher } from '../features/settings/notifications/PushNotifications'; import { appEvents } from '../utils/appEvents'; diff --git a/src/app/hooks/useAsyncCallback.ts b/src/app/hooks/useAsyncCallback.ts index 70831bea1..f06c0060b 100644 --- a/src/app/hooks/useAsyncCallback.ts +++ b/src/app/hooks/useAsyncCallback.ts @@ -1,4 +1,11 @@ -import { Dispatch, SetStateAction, useCallback, useEffect, useRef, useState } from 'react'; +import { + type Dispatch, + type SetStateAction, + useCallback, + useEffect, + useRef, + useState, +} from 'react'; import { flushSync } from 'react-dom'; import { useAlive } from './useAlive'; diff --git a/src/app/hooks/useAsyncSearch.ts b/src/app/hooks/useAsyncSearch.ts index ebf78b8be..5ab436d09 100644 --- a/src/app/hooks/useAsyncSearch.ts +++ b/src/app/hooks/useAsyncSearch.ts @@ -1,14 +1,14 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; import { - MatchHandler, + type MatchHandler, AsyncSearch, - AsyncSearchHandler, - AsyncSearchOption, - MatchQueryOption, - NormalizeOption, + type AsyncSearchHandler, + type AsyncSearchOption, + type MatchQueryOption, + type NormalizeOption, normalize, matchQuery, - ResultHandler, + type ResultHandler, } from '$utils/AsyncSearch'; import { sanitizeForRegex } from '$utils/regex'; diff --git a/src/app/hooks/useAuthFlows.ts b/src/app/hooks/useAuthFlows.ts index 8d82435e2..a1791b86e 100644 --- a/src/app/hooks/useAuthFlows.ts +++ b/src/app/hooks/useAuthFlows.ts @@ -1,5 +1,5 @@ import { createContext, useContext } from 'react'; -import { IAuthData, MatrixError, ILoginFlowsResponse } from '$types/matrix-sdk'; +import { type IAuthData, type MatrixError, type ILoginFlowsResponse } from '$types/matrix-sdk'; export enum RegisterFlowStatus { FlowRequired = 401, diff --git a/src/app/hooks/useAuthMetadata.ts b/src/app/hooks/useAuthMetadata.ts index a24859093..42830c443 100644 --- a/src/app/hooks/useAuthMetadata.ts +++ b/src/app/hooks/useAuthMetadata.ts @@ -1,4 +1,4 @@ -import { ValidatedAuthMetadata } from '$types/matrix-sdk'; +import { type ValidatedAuthMetadata } from '$types/matrix-sdk'; import { createContext, useContext } from 'react'; const AuthMetadataContext = createContext(undefined); diff --git a/src/app/hooks/useAutoDiscoveryInfo.ts b/src/app/hooks/useAutoDiscoveryInfo.ts index b2f8bcb56..9d570d467 100644 --- a/src/app/hooks/useAutoDiscoveryInfo.ts +++ b/src/app/hooks/useAutoDiscoveryInfo.ts @@ -1,5 +1,5 @@ import { createContext, useContext } from 'react'; -import { AutoDiscoveryInfo } from '../cs-api'; +import { type AutoDiscoveryInfo } from '../cs-api'; const AutoDiscoverInfoContext = createContext(null); diff --git a/src/app/hooks/useCall.ts b/src/app/hooks/useCall.ts index 1364e4598..9ec13122d 100644 --- a/src/app/hooks/useCall.ts +++ b/src/app/hooks/useCall.ts @@ -1,9 +1,9 @@ -import { Room } from 'matrix-js-sdk'; +import { type Room } from 'matrix-js-sdk'; import { MatrixRTCSession, MatrixRTCSessionEvent, } from 'matrix-js-sdk/lib/matrixrtc/MatrixRTCSession'; -import { CallMembership } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; +import { type CallMembership } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; import { useEffect, useState } from 'react'; import { MatrixRTCSessionManagerEvents } from 'matrix-js-sdk/lib/matrixrtc/MatrixRTCSessionManager'; import { useMatrixClient } from './useMatrixClient'; diff --git a/src/app/hooks/useCallEmbed.ts b/src/app/hooks/useCallEmbed.ts index aa3466193..14a90a315 100644 --- a/src/app/hooks/useCallEmbed.ts +++ b/src/app/hooks/useCallEmbed.ts @@ -1,11 +1,11 @@ -import { createContext, RefObject, useCallback, useContext, useEffect, useState } from 'react'; +import { createContext, type RefObject, useCallback, useContext, useEffect, useState } from 'react'; import { MatrixRTCSession } from 'matrix-js-sdk/lib/matrixrtc/MatrixRTCSession'; -import { MatrixClient, Room } from 'matrix-js-sdk'; +import { type MatrixClient, type Room } from 'matrix-js-sdk'; import { useSetAtom } from 'jotai'; import * as Sentry from '@sentry/react'; import { CallEmbed, - ElementCallThemeKind, + type ElementCallThemeKind, ElementWidgetActions, useClientWidgetApiEvent, } from '../plugins/call'; @@ -15,7 +15,7 @@ import { callEmbedAtom } from '../state/callEmbed'; import { useResizeObserver } from './useResizeObserver'; import { CallControlState } from '../plugins/call/CallControlState'; import { useCallMembersChange, useCallSession } from './useCall'; -import { CallPreferences } from '../state/callPreferences'; +import { type CallPreferences } from '../state/callPreferences'; import { createDebugLogger } from '../utils/debugLogger'; const debugLog = createDebugLogger('useCallEmbed'); diff --git a/src/app/hooks/useCallSpeakers.ts b/src/app/hooks/useCallSpeakers.ts index 240036785..4e18fce14 100644 --- a/src/app/hooks/useCallSpeakers.ts +++ b/src/app/hooks/useCallSpeakers.ts @@ -1,5 +1,5 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; -import { CallEmbed } from '../plugins/call'; +import { type CallEmbed } from '../plugins/call'; import { useMutationObserver } from './useMutationObserver'; import { isUserId } from '../utils/matrix'; import { useCallMembers, useCallSession } from './useCall'; diff --git a/src/app/hooks/useCapabilities.ts b/src/app/hooks/useCapabilities.ts index 6e84090e7..3022347b6 100644 --- a/src/app/hooks/useCapabilities.ts +++ b/src/app/hooks/useCapabilities.ts @@ -1,4 +1,4 @@ -import { Capabilities } from '$types/matrix-sdk'; +import { type Capabilities } from '$types/matrix-sdk'; import { createContext, useContext } from 'react'; const CapabilitiesContext = createContext(null); diff --git a/src/app/hooks/useCategoryHandler.ts b/src/app/hooks/useCategoryHandler.ts index 086902d63..434a5120f 100644 --- a/src/app/hooks/useCategoryHandler.ts +++ b/src/app/hooks/useCategoryHandler.ts @@ -1,4 +1,4 @@ -import { MouseEventHandler } from 'react'; +import { type MouseEventHandler } from 'react'; type CategoryAction = | { diff --git a/src/app/hooks/useCommands.ts b/src/app/hooks/useCommands.ts index edd901d98..91c610ca3 100644 --- a/src/app/hooks/useCommands.ts +++ b/src/app/hooks/useCommands.ts @@ -1,14 +1,14 @@ import { Direction, EventTimeline, - IContextResponse, - MatrixClient, + type IContextResponse, + type MatrixClient, Method, Preset, - Room, - RoomMember, + type Room, + type RoomMember, Visibility, - RoomServerAclEventContent, + type RoomServerAclEventContent, MsgType, } from '$types/matrix-sdk'; import { useMemo } from 'react'; @@ -38,7 +38,7 @@ import { useUserProfile } from './useUserProfile'; import { addOrUpdatePerMessageProfile, deletePerMessageProfile, - PerMessageProfile, + type PerMessageProfile, setCurrentlyUsedPerMessageProfileIdForRoom, } from './usePerMessageProfile'; diff --git a/src/app/hooks/useCrossSigning.ts b/src/app/hooks/useCrossSigning.ts index b280ecfdc..776ce9ddb 100644 --- a/src/app/hooks/useCrossSigning.ts +++ b/src/app/hooks/useCrossSigning.ts @@ -1,4 +1,4 @@ -import { AccountDataEvent, SecretAccountData } from '$types/matrix/accountData'; +import { AccountDataEvent, type SecretAccountData } from '$types/matrix/accountData'; import { useAccountData } from './useAccountData'; export const useCrossSigningActive = (): boolean => { diff --git a/src/app/hooks/useDateFormat.ts b/src/app/hooks/useDateFormat.ts index 497173101..05de45b29 100644 --- a/src/app/hooks/useDateFormat.ts +++ b/src/app/hooks/useDateFormat.ts @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { DateFormat } from '$state/settings'; +import { type DateFormat } from '$state/settings'; export type DateFormatItem = { name: string; diff --git a/src/app/hooks/useDeviceList.ts b/src/app/hooks/useDeviceList.ts index 965784125..06b3bb73f 100644 --- a/src/app/hooks/useDeviceList.ts +++ b/src/app/hooks/useDeviceList.ts @@ -1,5 +1,5 @@ import { useEffect, useCallback, useMemo } from 'react'; -import { IMyDevice, CryptoEvent, CryptoEventHandlerMap } from '$types/matrix-sdk'; +import { type IMyDevice, CryptoEvent, type CryptoEventHandlerMap } from '$types/matrix-sdk'; import { useQuery } from '@tanstack/react-query'; import { useMatrixClient } from './useMatrixClient'; diff --git a/src/app/hooks/useDeviceVerificationStatus.ts b/src/app/hooks/useDeviceVerificationStatus.ts index 4d2ea071f..95e24b27c 100644 --- a/src/app/hooks/useDeviceVerificationStatus.ts +++ b/src/app/hooks/useDeviceVerificationStatus.ts @@ -1,5 +1,5 @@ import { useCallback, useEffect, useState } from 'react'; -import { CryptoApi } from '$types/matrix-sdk'; +import { type CryptoApi } from '$types/matrix-sdk'; import { verifiedDevice } from '$utils/matrix-crypto'; import { fulfilledPromiseSettledResult } from '$utils/common'; import { useAlive } from './useAlive'; diff --git a/src/app/hooks/useDirectUsers.ts b/src/app/hooks/useDirectUsers.ts index ea412fb65..9f65bfc74 100644 --- a/src/app/hooks/useDirectUsers.ts +++ b/src/app/hooks/useDirectUsers.ts @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { AccountDataEvent, MDirectContent } from '$types/matrix/accountData'; +import { AccountDataEvent, type MDirectContent } from '$types/matrix/accountData'; import { useAccountData } from './useAccountData'; import { useAllJoinedRoomsSet, useGetRoom } from './useGetRoom'; diff --git a/src/app/hooks/useFileDrop.ts b/src/app/hooks/useFileDrop.ts index 7922c336d..ff95f8b62 100644 --- a/src/app/hooks/useFileDrop.ts +++ b/src/app/hooks/useFileDrop.ts @@ -1,4 +1,11 @@ -import { useCallback, DragEventHandler, RefObject, useState, useEffect, useRef } from 'react'; +import { + useCallback, + type DragEventHandler, + type RefObject, + useState, + useEffect, + useRef, +} from 'react'; import { getDataTransferFiles } from '$utils/dom'; export const useFileDropHandler = (onDrop: (file: File[]) => void): DragEventHandler => diff --git a/src/app/hooks/useFilePasteHandler.ts b/src/app/hooks/useFilePasteHandler.ts index 253ad9b3b..197a8f85c 100644 --- a/src/app/hooks/useFilePasteHandler.ts +++ b/src/app/hooks/useFilePasteHandler.ts @@ -1,4 +1,4 @@ -import { useCallback, ClipboardEventHandler } from 'react'; +import { useCallback, type ClipboardEventHandler } from 'react'; import { getDataTransferFiles } from '$utils/dom'; export const useFilePasteHandler = (onPaste: (file: File[]) => void): ClipboardEventHandler => diff --git a/src/app/hooks/useGetRoom.ts b/src/app/hooks/useGetRoom.ts index 6ab37b795..671b72fa4 100644 --- a/src/app/hooks/useGetRoom.ts +++ b/src/app/hooks/useGetRoom.ts @@ -1,4 +1,4 @@ -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useAtomValue } from 'jotai'; import { useCallback, useMemo } from 'react'; import { allRoomsAtom } from '$state/room-list/roomList'; diff --git a/src/app/hooks/useGroupDMMembers.ts b/src/app/hooks/useGroupDMMembers.ts index a3ab796a1..2908e3a0b 100644 --- a/src/app/hooks/useGroupDMMembers.ts +++ b/src/app/hooks/useGroupDMMembers.ts @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import { MatrixClient, Room } from '$types/matrix-sdk'; +import { type MatrixClient, type Room } from '$types/matrix-sdk'; export type GroupMemberInfo = { userId: string; diff --git a/src/app/hooks/useImagePackRooms.ts b/src/app/hooks/useImagePackRooms.ts index b2163a726..6e22886e3 100644 --- a/src/app/hooks/useImagePackRooms.ts +++ b/src/app/hooks/useImagePackRooms.ts @@ -1,4 +1,4 @@ -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useMemo } from 'react'; import { getAllParents } from '$utils/room'; import { useMatrixClient } from './useMatrixClient'; diff --git a/src/app/hooks/useImagePacks.ts b/src/app/hooks/useImagePacks.ts index 7146966b2..47c6cbedd 100644 --- a/src/app/hooks/useImagePacks.ts +++ b/src/app/hooks/useImagePacks.ts @@ -1,4 +1,4 @@ -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useCallback, useEffect, useMemo, useState } from 'react'; import { AccountDataEvent } from '$types/matrix/accountData'; import { StateEvent } from '$types/matrix/room'; @@ -8,8 +8,8 @@ import { getRoomImagePacks, getUserImagePack, globalPacksScope, - ImagePack, - ImageUsage, + type ImagePack, + type ImageUsage, readCachedPack, readCachedPacks, roomPacksScope, diff --git a/src/app/hooks/useIntegrationManager.ts b/src/app/hooks/useIntegrationManager.ts index 00feba387..c84d98d97 100644 --- a/src/app/hooks/useIntegrationManager.ts +++ b/src/app/hooks/useIntegrationManager.ts @@ -1,5 +1,5 @@ import { useCallback, useEffect, useState } from 'react'; -import { MatrixClient } from '$types/matrix-sdk'; +import { type MatrixClient } from '$types/matrix-sdk'; import { useMatrixClient } from './useMatrixClient'; export interface IntegrationManager { diff --git a/src/app/hooks/useKeyBackup.ts b/src/app/hooks/useKeyBackup.ts index 3714ec6be..48b0751c8 100644 --- a/src/app/hooks/useKeyBackup.ts +++ b/src/app/hooks/useKeyBackup.ts @@ -1,9 +1,9 @@ import { - BackupTrustInfo, - CryptoApi, + type BackupTrustInfo, + type CryptoApi, CryptoEvent, - CryptoEventHandlerMap, - KeyBackupInfo, + type CryptoEventHandlerMap, + type KeyBackupInfo, } from '$types/matrix-sdk'; import { useCallback, useEffect, useState } from 'react'; import * as Sentry from '@sentry/react'; diff --git a/src/app/hooks/useLivekitSupport.ts b/src/app/hooks/useLivekitSupport.ts index 3cb2c1d88..b38bc12ca 100644 --- a/src/app/hooks/useLivekitSupport.ts +++ b/src/app/hooks/useLivekitSupport.ts @@ -1,4 +1,4 @@ -import { AutoDiscoveryInfo } from '../cs-api'; +import { type AutoDiscoveryInfo } from '../cs-api'; import { useAutoDiscoveryInfo } from './useAutoDiscoveryInfo'; export const livekitSupport = (autoDiscoveryInfo: AutoDiscoveryInfo): boolean => { diff --git a/src/app/hooks/useLocalRoomSummary.ts b/src/app/hooks/useLocalRoomSummary.ts index 043d09f7b..3cd38330a 100644 --- a/src/app/hooks/useLocalRoomSummary.ts +++ b/src/app/hooks/useLocalRoomSummary.ts @@ -1,4 +1,4 @@ -import { GuestAccess, HistoryVisibility, JoinRule, Room } from '$types/matrix-sdk'; +import { GuestAccess, HistoryVisibility, type JoinRule, type Room } from '$types/matrix-sdk'; import { StateEvent } from '$types/matrix/room'; import { getStateEvent } from '$utils/room'; diff --git a/src/app/hooks/useMatrixClient.ts b/src/app/hooks/useMatrixClient.ts index f12365351..6b1310d7f 100644 --- a/src/app/hooks/useMatrixClient.ts +++ b/src/app/hooks/useMatrixClient.ts @@ -1,5 +1,5 @@ import { createContext, useContext } from 'react'; -import { MatrixClient } from '$types/matrix-sdk'; +import { type MatrixClient } from '$types/matrix-sdk'; const MatrixClientContext = createContext(null); diff --git a/src/app/hooks/useMatrixEventRenderer.ts b/src/app/hooks/useMatrixEventRenderer.ts index 57d56cc1c..f08258009 100644 --- a/src/app/hooks/useMatrixEventRenderer.ts +++ b/src/app/hooks/useMatrixEventRenderer.ts @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; export type EventRenderer = (...args: T) => ReactNode; diff --git a/src/app/hooks/useMemberEventParser.tsx b/src/app/hooks/useMemberEventParser.tsx index 2791cef4d..19a1bf57b 100644 --- a/src/app/hooks/useMemberEventParser.tsx +++ b/src/app/hooks/useMemberEventParser.tsx @@ -1,7 +1,7 @@ -import { MouseEventHandler, useCallback, ReactNode } from 'react'; -import { IconSrc, Icons, Text } from 'folds'; -import { MatrixEvent, Room } from '$types/matrix-sdk'; -import { IMemberContent, Membership } from '$types/matrix/room'; +import { type MouseEventHandler, useCallback, type ReactNode } from 'react'; +import { type IconSrc, Icons, Text } from 'folds'; +import { type MatrixEvent, type Room } from '$types/matrix-sdk'; +import { type IMemberContent, Membership } from '$types/matrix/room'; import { getMxIdLocalPart } from '$utils/matrix'; import { isMembershipChanged } from '$utils/room'; import { useOpenUserRoomProfile } from '$state/hooks/userRoomProfile'; diff --git a/src/app/hooks/useMemberFilter.ts b/src/app/hooks/useMemberFilter.ts index 3ce50a5bd..fb40fc2c4 100644 --- a/src/app/hooks/useMemberFilter.ts +++ b/src/app/hooks/useMemberFilter.ts @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { RoomMember } from '$types/matrix-sdk'; +import { type RoomMember } from '$types/matrix-sdk'; import { Membership } from '$types/matrix/room'; export const MembershipFilter = { diff --git a/src/app/hooks/useMemberPowerCompare.ts b/src/app/hooks/useMemberPowerCompare.ts index 72163edfc..3380377b0 100644 --- a/src/app/hooks/useMemberPowerCompare.ts +++ b/src/app/hooks/useMemberPowerCompare.ts @@ -1,5 +1,5 @@ import { useCallback } from 'react'; -import { IPowerLevels, readPowerLevel } from './usePowerLevels'; +import { type IPowerLevels, readPowerLevel } from './usePowerLevels'; export const useMemberPowerCompare = (creators: Set, powerLevels: IPowerLevels) => { /** diff --git a/src/app/hooks/useMemberPowerTag.ts b/src/app/hooks/useMemberPowerTag.ts index ac2df17c4..727daad09 100644 --- a/src/app/hooks/useMemberPowerTag.ts +++ b/src/app/hooks/useMemberPowerTag.ts @@ -1,11 +1,11 @@ import { useCallback, useMemo } from 'react'; -import { MatrixClient, Room, RoomMember } from '$types/matrix-sdk'; -import { MemberPowerTag, MemberPowerTagIcon } from '$types/matrix/room'; +import { type MatrixClient, type Room, type RoomMember } from '$types/matrix-sdk'; +import { type MemberPowerTag, type MemberPowerTagIcon } from '$types/matrix/room'; import { accessibleColor } from '$plugins/color'; -import { getPowerLevelTag, PowerLevelTags, usePowerLevelTags } from './usePowerLevelTags'; -import { IPowerLevels, readPowerLevel } from './usePowerLevels'; +import { getPowerLevelTag, type PowerLevelTags, usePowerLevelTags } from './usePowerLevelTags'; +import { type IPowerLevels, readPowerLevel } from './usePowerLevels'; import { useRoomCreatorsTag } from './useRoomCreatorsTag'; -import { ThemeKind } from './useTheme'; +import { type ThemeKind } from './useTheme'; export type GetMemberPowerTag = (userId: string) => MemberPowerTag; diff --git a/src/app/hooks/useMemberSort.ts b/src/app/hooks/useMemberSort.ts index 72e0581da..af82c3a4d 100644 --- a/src/app/hooks/useMemberSort.ts +++ b/src/app/hooks/useMemberSort.ts @@ -1,4 +1,4 @@ -import { RoomMember } from '$types/matrix-sdk'; +import { type RoomMember } from '$types/matrix-sdk'; import { useCallback, useMemo } from 'react'; export const MemberSort = { diff --git a/src/app/hooks/useMembership.ts b/src/app/hooks/useMembership.ts index 47044c381..6957e7fc6 100644 --- a/src/app/hooks/useMembership.ts +++ b/src/app/hooks/useMembership.ts @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import { Room, RoomMemberEvent, RoomMemberEventHandlerMap } from '$types/matrix-sdk'; +import { type Room, RoomMemberEvent, type RoomMemberEventHandlerMap } from '$types/matrix-sdk'; import { Membership } from '$types/matrix/room'; export const useMembership = (room: Room, userId: string): Membership => { diff --git a/src/app/hooks/useMentionClickHandler.ts b/src/app/hooks/useMentionClickHandler.ts index aadfb9826..1e736257f 100644 --- a/src/app/hooks/useMentionClickHandler.ts +++ b/src/app/hooks/useMentionClickHandler.ts @@ -1,8 +1,8 @@ -import { ReactEventHandler, useCallback } from 'react'; +import { type ReactEventHandler, useCallback } from 'react'; import { useNavigate } from 'react-router-dom'; import { isRoomId, isUserId } from '$utils/matrix'; import { getHomeRoomPath, withSearchParam } from '$pages/pathUtils'; -import { RoomSearchParams } from '$pages/paths'; +import { type RoomSearchParams } from '$pages/paths'; import { useOpenUserRoomProfile } from '$state/hooks/userRoomProfile'; import { useMatrixClient } from './useMatrixClient'; import { useRoomNavigate } from './useRoomNavigate'; diff --git a/src/app/hooks/useMessageSpacing.ts b/src/app/hooks/useMessageSpacing.ts index aab6cb531..33647903f 100644 --- a/src/app/hooks/useMessageSpacing.ts +++ b/src/app/hooks/useMessageSpacing.ts @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { MessageSpacing } from '$state/settings'; +import { type MessageSpacing } from '$state/settings'; export type MessageSpacingItem = { name: string; diff --git a/src/app/hooks/useMutualRooms.ts b/src/app/hooks/useMutualRooms.ts index d0cbefe7e..2c10dfd6a 100644 --- a/src/app/hooks/useMutualRooms.ts +++ b/src/app/hooks/useMutualRooms.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react'; import { useMatrixClient } from './useMatrixClient'; -import { AsyncState, useAsyncCallbackValue } from './useAsyncCallback'; +import { type AsyncState, useAsyncCallbackValue } from './useAsyncCallback'; import { useSpecVersions } from './useSpecVersions'; export const useMutualRoomsSupport = (): boolean => { diff --git a/src/app/hooks/useNickname.ts b/src/app/hooks/useNickname.ts index 999a668dd..56c65496f 100644 --- a/src/app/hooks/useNickname.ts +++ b/src/app/hooks/useNickname.ts @@ -1,6 +1,6 @@ import { useAtomValue, useSetAtom } from 'jotai'; import { useCallback, useEffect } from 'react'; -import { MatrixClient } from '$types/matrix-sdk'; +import { type MatrixClient } from '$types/matrix-sdk'; import { AccountDataEvent } from '$types/matrix/accountData'; import { nicknamesAtom, setNicknameAtom } from '$state/nicknames'; import { useAccountDataCallback } from './useAccountDataCallback'; diff --git a/src/app/hooks/useNotificationMode.ts b/src/app/hooks/useNotificationMode.ts index 7901c80a2..d537398fc 100644 --- a/src/app/hooks/useNotificationMode.ts +++ b/src/app/hooks/useNotificationMode.ts @@ -1,4 +1,4 @@ -import { PushRuleAction, PushRuleActionName, TweakName } from '$types/matrix-sdk'; +import { type PushRuleAction, PushRuleActionName, TweakName } from '$types/matrix-sdk'; import { useCallback, useMemo } from 'react'; export enum NotificationMode { diff --git a/src/app/hooks/useParsedLoginFlows.ts b/src/app/hooks/useParsedLoginFlows.ts index 8095ef37a..85605ef7e 100644 --- a/src/app/hooks/useParsedLoginFlows.ts +++ b/src/app/hooks/useParsedLoginFlows.ts @@ -1,5 +1,10 @@ import { useMemo } from 'react'; -import { ILoginFlow, IPasswordFlow, ISSOFlow, LoginFlow } from '$types/matrix-sdk'; +import { + type ILoginFlow, + type IPasswordFlow, + type ISSOFlow, + type LoginFlow, +} from '$types/matrix-sdk'; export const getSSOFlow = (loginFlows: LoginFlow[]): ISSOFlow | undefined => loginFlows.find((flow) => flow.type === 'm.login.sso' || flow.type === 'm.login.cas') as diff --git a/src/app/hooks/usePasswordEmail.ts b/src/app/hooks/usePasswordEmail.ts index dbe39010d..bc2169cf5 100644 --- a/src/app/hooks/usePasswordEmail.ts +++ b/src/app/hooks/usePasswordEmail.ts @@ -1,7 +1,7 @@ -import { MatrixClient, MatrixError } from '$types/matrix-sdk'; +import { type MatrixClient, type MatrixError } from '$types/matrix-sdk'; import { useCallback, useRef } from 'react'; -import { AsyncState, useAsyncCallback } from './useAsyncCallback'; -import { RequestEmailTokenCallback, RequestEmailTokenResponse } from './types'; +import { type AsyncState, useAsyncCallback } from './useAsyncCallback'; +import { type RequestEmailTokenCallback, type RequestEmailTokenResponse } from './types'; export const usePasswordEmail = ( mx: MatrixClient diff --git a/src/app/hooks/usePerMessageProfile.ts b/src/app/hooks/usePerMessageProfile.ts index 966db2af9..dced8f01e 100644 --- a/src/app/hooks/usePerMessageProfile.ts +++ b/src/app/hooks/usePerMessageProfile.ts @@ -1,5 +1,5 @@ -import { PronounSet } from '$utils/pronouns'; -import { MatrixClient } from 'matrix-js-sdk'; +import { type PronounSet } from '$utils/pronouns'; +import { type MatrixClient } from 'matrix-js-sdk'; const ACCOUNT_DATA_PREFIX = 'fyi.cisnt.permessageprofile'; diff --git a/src/app/hooks/usePowerLevelTags.ts b/src/app/hooks/usePowerLevelTags.ts index eab9cc1f7..6b5407cdd 100644 --- a/src/app/hooks/usePowerLevelTags.ts +++ b/src/app/hooks/usePowerLevelTags.ts @@ -1,7 +1,7 @@ -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useMemo } from 'react'; -import { MemberPowerTag, StateEvent } from '$types/matrix/room'; -import { IPowerLevels } from './usePowerLevels'; +import { type MemberPowerTag, StateEvent } from '$types/matrix/room'; +import { type IPowerLevels } from './usePowerLevels'; import { useStateEvent } from './useStateEvent'; export type PowerLevelTags = Record; diff --git a/src/app/hooks/usePowerLevels.ts b/src/app/hooks/usePowerLevels.ts index 4b1b874b4..2332f3354 100644 --- a/src/app/hooks/usePowerLevels.ts +++ b/src/app/hooks/usePowerLevels.ts @@ -1,4 +1,4 @@ -import { MatrixEvent, Room } from '$types/matrix-sdk'; +import { type MatrixEvent, type Room } from '$types/matrix-sdk'; import { createContext, useCallback, useContext, useMemo, useState } from 'react'; import { produce } from 'immer'; import { StateEvent } from '$types/matrix/room'; diff --git a/src/app/hooks/usePushRule.ts b/src/app/hooks/usePushRule.ts index 32c9c3133..6a845115d 100644 --- a/src/app/hooks/usePushRule.ts +++ b/src/app/hooks/usePushRule.ts @@ -1,10 +1,10 @@ import { - IPushRule, - IPushRules, - PushRuleAction, - PushRuleCondition, + type IPushRule, + type IPushRules, + type PushRuleAction, + type PushRuleCondition, PushRuleKind, - RuleId, + type RuleId, } from '$types/matrix-sdk'; import { useMemo } from 'react'; diff --git a/src/app/hooks/useRecentEmoji.ts b/src/app/hooks/useRecentEmoji.ts index 09c356795..44609c506 100644 --- a/src/app/hooks/useRecentEmoji.ts +++ b/src/app/hooks/useRecentEmoji.ts @@ -1,8 +1,8 @@ import { useEffect, useState } from 'react'; -import { ClientEvent, MatrixClient, MatrixEvent } from '$types/matrix-sdk'; +import { ClientEvent, type MatrixClient, type MatrixEvent } from '$types/matrix-sdk'; import { AccountDataEvent } from '$types/matrix/accountData'; import { getRecentEmojis } from '$plugins/recent-emoji'; -import { IEmoji } from '$plugins/emoji'; +import { type IEmoji } from '$plugins/emoji'; export const useRecentEmoji = (mx: MatrixClient, limit?: number): IEmoji[] => { const [recentEmoji, setRecentEmoji] = useState(() => getRecentEmojis(mx, limit)); diff --git a/src/app/hooks/useRegisterEmail.ts b/src/app/hooks/useRegisterEmail.ts index 9124f116f..d311d9b0e 100644 --- a/src/app/hooks/useRegisterEmail.ts +++ b/src/app/hooks/useRegisterEmail.ts @@ -1,7 +1,7 @@ -import { MatrixClient, MatrixError } from '$types/matrix-sdk'; +import { type MatrixClient, type MatrixError } from '$types/matrix-sdk'; import { useCallback, useRef } from 'react'; -import { AsyncState, useAsyncCallback } from './useAsyncCallback'; -import { RequestEmailTokenCallback, RequestEmailTokenResponse } from './types'; +import { type AsyncState, useAsyncCallback } from './useAsyncCallback'; +import { type RequestEmailTokenCallback, type RequestEmailTokenResponse } from './types'; export const useRegisterEmail = ( mx: MatrixClient diff --git a/src/app/hooks/useRoom.ts b/src/app/hooks/useRoom.ts index 80b148115..5de2f999c 100644 --- a/src/app/hooks/useRoom.ts +++ b/src/app/hooks/useRoom.ts @@ -1,4 +1,4 @@ -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { createContext, useContext } from 'react'; const RoomContext = createContext(null); diff --git a/src/app/hooks/useRoomAbbreviations.ts b/src/app/hooks/useRoomAbbreviations.ts index e2641b341..91a2b35a7 100644 --- a/src/app/hooks/useRoomAbbreviations.ts +++ b/src/app/hooks/useRoomAbbreviations.ts @@ -1,8 +1,8 @@ import { createContext, useContext, useCallback, useMemo } from 'react'; import { useAtomValue } from 'jotai'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { StateEvent } from '$types/matrix/room'; -import { buildAbbreviationsMap, RoomAbbreviationsContent } from '$utils/abbreviations'; +import { buildAbbreviationsMap, type RoomAbbreviationsContent } from '$utils/abbreviations'; import { getAllParents, getStateEvent } from '$utils/room'; import { roomToParentsAtom } from '$state/room/roomToParents'; import { useMatrixClient } from './useMatrixClient'; diff --git a/src/app/hooks/useRoomAccountData.ts b/src/app/hooks/useRoomAccountData.ts index 4d246fe49..5fd4ff520 100644 --- a/src/app/hooks/useRoomAccountData.ts +++ b/src/app/hooks/useRoomAccountData.ts @@ -1,4 +1,4 @@ -import { Room, RoomEvent, RoomEventHandlerMap } from '$types/matrix-sdk'; +import { type Room, RoomEvent, type RoomEventHandlerMap } from '$types/matrix-sdk'; import { useCallback, useEffect, useState } from 'react'; export const useRoomAccountData = (room: Room): Map => { diff --git a/src/app/hooks/useRoomAliases.ts b/src/app/hooks/useRoomAliases.ts index 36fff1ad9..ab6fcabae 100644 --- a/src/app/hooks/useRoomAliases.ts +++ b/src/app/hooks/useRoomAliases.ts @@ -1,8 +1,12 @@ import { useCallback, useEffect, useMemo } from 'react'; -import { MatrixError, Room, RoomCanonicalAliasEventContent } from '$types/matrix-sdk'; +import { + type MatrixError, + type Room, + type RoomCanonicalAliasEventContent, +} from '$types/matrix-sdk'; import { StateEvent } from '$types/matrix/room'; import { getStateEvent } from '$utils/room'; -import { AsyncState, useAsyncCallback } from './useAsyncCallback'; +import { type AsyncState, useAsyncCallback } from './useAsyncCallback'; import { useMatrixClient } from './useMatrixClient'; import { useAlive } from './useAlive'; import { useStateEvent } from './useStateEvent'; diff --git a/src/app/hooks/useRoomCreators.ts b/src/app/hooks/useRoomCreators.ts index 6c4f740c1..f041d0682 100644 --- a/src/app/hooks/useRoomCreators.ts +++ b/src/app/hooks/useRoomCreators.ts @@ -1,6 +1,6 @@ -import { MatrixClient, MatrixEvent, Room } from '$types/matrix-sdk'; +import { type MatrixClient, type MatrixEvent, type Room } from '$types/matrix-sdk'; import { useMemo } from 'react'; -import { IRoomCreateContent, StateEvent } from '$types/matrix/room'; +import { type IRoomCreateContent, StateEvent } from '$types/matrix/room'; import { creatorsSupported } from '$utils/matrix'; import { getStateEvent } from '$utils/room'; import { useStateEvent } from './useStateEvent'; diff --git a/src/app/hooks/useRoomCreatorsTag.ts b/src/app/hooks/useRoomCreatorsTag.ts index f1a31de15..081d61d43 100644 --- a/src/app/hooks/useRoomCreatorsTag.ts +++ b/src/app/hooks/useRoomCreatorsTag.ts @@ -1,4 +1,4 @@ -import { MemberPowerTag } from '$types/matrix/room'; +import { type MemberPowerTag } from '$types/matrix/room'; const DEFAULT_TAG: MemberPowerTag = { name: 'Founder', diff --git a/src/app/hooks/useRoomEvent.ts b/src/app/hooks/useRoomEvent.ts index 703353669..f5bf22dcb 100644 --- a/src/app/hooks/useRoomEvent.ts +++ b/src/app/hooks/useRoomEvent.ts @@ -1,10 +1,10 @@ import { - IEvent, + type IEvent, MatrixEvent, MatrixEventEvent, - Room, + type Room, RoomEvent, - CryptoBackend, + type CryptoBackend, } from '$types/matrix-sdk'; import { useCallback, useEffect, useMemo, useState } from 'react'; import to from 'await-to-js'; diff --git a/src/app/hooks/useRoomEventReaders.ts b/src/app/hooks/useRoomEventReaders.ts index 8a0236685..52147c60d 100644 --- a/src/app/hooks/useRoomEventReaders.ts +++ b/src/app/hooks/useRoomEventReaders.ts @@ -1,4 +1,4 @@ -import { Room, RoomEvent, RoomEventHandlerMap } from '$types/matrix-sdk'; +import { type Room, RoomEvent, type RoomEventHandlerMap } from '$types/matrix-sdk'; import { useEffect, useState } from 'react'; const getEventReaders = (room: Room, evtId?: string) => { diff --git a/src/app/hooks/useRoomLatestRenderedEvent.ts b/src/app/hooks/useRoomLatestRenderedEvent.ts index 07b2a28d9..9c5aa4526 100644 --- a/src/app/hooks/useRoomLatestRenderedEvent.ts +++ b/src/app/hooks/useRoomLatestRenderedEvent.ts @@ -1,5 +1,10 @@ /* eslint-disable no-continue */ -import { MatrixEvent, Room, RoomEvent, RoomEventHandlerMap } from '$types/matrix-sdk'; +import { + type MatrixEvent, + type Room, + RoomEvent, + type RoomEventHandlerMap, +} from '$types/matrix-sdk'; import { useEffect, useState } from 'react'; import { MessageEvent, StateEvent } from '$types/matrix/room'; import { settingsAtom } from '$state/settings'; diff --git a/src/app/hooks/useRoomMembers.ts b/src/app/hooks/useRoomMembers.ts index fbfdbdd3c..e7271b039 100644 --- a/src/app/hooks/useRoomMembers.ts +++ b/src/app/hooks/useRoomMembers.ts @@ -1,4 +1,9 @@ -import { MatrixClient, MatrixEvent, RoomMember, RoomMemberEvent } from '$types/matrix-sdk'; +import { + type MatrixClient, + type MatrixEvent, + type RoomMember, + RoomMemberEvent, +} from '$types/matrix-sdk'; import { useEffect, useState } from 'react'; export const useRoomMembers = (mx: MatrixClient, roomId: string): RoomMember[] => { diff --git a/src/app/hooks/useRoomMeta.ts b/src/app/hooks/useRoomMeta.ts index eee1385fd..6cc70b2e6 100644 --- a/src/app/hooks/useRoomMeta.ts +++ b/src/app/hooks/useRoomMeta.ts @@ -1,5 +1,10 @@ import { useEffect, useState } from 'react'; -import { RoomJoinRulesEventContent, Room, RoomEvent, RoomStateEvent } from '$types/matrix-sdk'; +import { + type RoomJoinRulesEventContent, + type Room, + RoomEvent, + RoomStateEvent, +} from '$types/matrix-sdk'; import { StateEvent } from '$types/matrix/room'; import { useStateEvent } from './useStateEvent'; import { useNickname } from './useNickname'; diff --git a/src/app/hooks/useRoomNavigate.ts b/src/app/hooks/useRoomNavigate.ts index 51555125c..387657b3f 100644 --- a/src/app/hooks/useRoomNavigate.ts +++ b/src/app/hooks/useRoomNavigate.ts @@ -1,5 +1,5 @@ import { useCallback } from 'react'; -import { NavigateOptions, useNavigate } from 'react-router-dom'; +import { type NavigateOptions, useNavigate } from 'react-router-dom'; import { useAtomValue } from 'jotai'; import { getCanonicalAliasOrRoomId } from '$utils/matrix'; import { diff --git a/src/app/hooks/useRoomPermissions.ts b/src/app/hooks/useRoomPermissions.ts index cb6f69a25..5046d6a10 100644 --- a/src/app/hooks/useRoomPermissions.ts +++ b/src/app/hooks/useRoomPermissions.ts @@ -1,8 +1,8 @@ import { useMemo } from 'react'; import { - IPowerLevels, - PowerLevelActions, - PowerLevelNotificationsAction, + type IPowerLevels, + type PowerLevelActions, + type PowerLevelNotificationsAction, readPowerLevel, } from './usePowerLevels'; diff --git a/src/app/hooks/useRoomPinnedEvents.ts b/src/app/hooks/useRoomPinnedEvents.ts index cb6106461..ae6dfeb4c 100644 --- a/src/app/hooks/useRoomPinnedEvents.ts +++ b/src/app/hooks/useRoomPinnedEvents.ts @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { RoomPinnedEventsEventContent, Room } from '$types/matrix-sdk'; +import { type RoomPinnedEventsEventContent, type Room } from '$types/matrix-sdk'; import { StateEvent } from '$types/matrix/room'; import { useStateEvent } from './useStateEvent'; diff --git a/src/app/hooks/useRoomState.ts b/src/app/hooks/useRoomState.ts index 532bfb7d8..3142e63bf 100644 --- a/src/app/hooks/useRoomState.ts +++ b/src/app/hooks/useRoomState.ts @@ -1,9 +1,9 @@ import { Direction, - MatrixEvent, - Room, + type MatrixEvent, + type Room, RoomStateEvent, - RoomStateEventHandlerMap, + type RoomStateEventHandlerMap, } from '$types/matrix-sdk'; import { useCallback, useEffect, useState } from 'react'; import { StateEvent } from '$types/matrix/room'; diff --git a/src/app/hooks/useRoomTypingMembers.ts b/src/app/hooks/useRoomTypingMembers.ts index 5d06baded..424bb7e20 100644 --- a/src/app/hooks/useRoomTypingMembers.ts +++ b/src/app/hooks/useRoomTypingMembers.ts @@ -2,8 +2,8 @@ import { useAtomValue } from 'jotai'; import { selectAtom } from 'jotai/utils'; import { useCallback } from 'react'; import { - IRoomIdToTypingMembers, - TypingReceipt, + type IRoomIdToTypingMembers, + type TypingReceipt, roomIdToTypingMembersAtom, } from '$state/typingMembers'; diff --git a/src/app/hooks/useRoomWidgets.ts b/src/app/hooks/useRoomWidgets.ts index 65381ddd3..3c1a43444 100644 --- a/src/app/hooks/useRoomWidgets.ts +++ b/src/app/hooks/useRoomWidgets.ts @@ -1,6 +1,6 @@ -import { Room, MatrixEvent, MatrixClient } from '$types/matrix-sdk'; +import { type Room, type MatrixEvent, type MatrixClient } from '$types/matrix-sdk'; import { useCallback, useMemo } from 'react'; -import { IWidget } from 'matrix-widget-api'; +import { type IWidget } from 'matrix-widget-api'; import { StateEvent } from '$types/matrix/room'; import { getStateEvents } from '$utils/room'; import { useStateEventCallback } from './useStateEventCallback'; diff --git a/src/app/hooks/useRoomsNotificationPreferences.ts b/src/app/hooks/useRoomsNotificationPreferences.ts index 65626bc12..e56ae0bbd 100644 --- a/src/app/hooks/useRoomsNotificationPreferences.ts +++ b/src/app/hooks/useRoomsNotificationPreferences.ts @@ -1,6 +1,6 @@ import { createContext, useCallback, useContext, useMemo } from 'react'; -import { ConditionKind, IPushRules, MatrixClient, PushRuleKind } from '$types/matrix-sdk'; -import { Icons, IconSrc } from 'folds'; +import { ConditionKind, type IPushRules, type MatrixClient, PushRuleKind } from '$types/matrix-sdk'; +import { Icons, type IconSrc } from 'folds'; import { AccountDataEvent } from '$types/matrix/accountData'; import { isRoomId } from '$utils/matrix'; import { useAccountData } from './useAccountData'; diff --git a/src/app/hooks/useSableCosmetics.ts b/src/app/hooks/useSableCosmetics.ts index b9b54c7e3..52a7d44fa 100644 --- a/src/app/hooks/useSableCosmetics.ts +++ b/src/app/hooks/useSableCosmetics.ts @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { usePowerLevels } from './usePowerLevels'; import { useRoomCreators } from './useRoomCreators'; import { useAccessiblePowerTagColors, useGetMemberPowerTag } from './useMemberPowerTag'; diff --git a/src/app/hooks/useSecretStorage.ts b/src/app/hooks/useSecretStorage.ts index 53829cf8d..970b430be 100644 --- a/src/app/hooks/useSecretStorage.ts +++ b/src/app/hooks/useSecretStorage.ts @@ -1,7 +1,7 @@ import { AccountDataEvent, - SecretStorageDefaultKeyContent, - SecretStorageKeyContent, + type SecretStorageDefaultKeyContent, + type SecretStorageKeyContent, } from '$types/matrix/accountData'; import { useAccountData } from './useAccountData'; diff --git a/src/app/hooks/useSessionProfiles.ts b/src/app/hooks/useSessionProfiles.ts index 2cb03c358..5effad9ea 100644 --- a/src/app/hooks/useSessionProfiles.ts +++ b/src/app/hooks/useSessionProfiles.ts @@ -1,5 +1,5 @@ import { useEffect, useRef, useState } from 'react'; -import { Session } from '$state/sessions'; +import { type Session } from '$state/sessions'; export type SessionProfile = { displayName?: string; diff --git a/src/app/hooks/useSettingsSync.ts b/src/app/hooks/useSettingsSync.ts index 9fd452963..86cdd392a 100644 --- a/src/app/hooks/useSettingsSync.ts +++ b/src/app/hooks/useSettingsSync.ts @@ -1,6 +1,6 @@ import { useCallback, useEffect, useRef } from 'react'; import { atom, useAtom, useSetAtom } from 'jotai'; -import { MatrixEvent } from '$types/matrix-sdk'; +import { type MatrixEvent } from '$types/matrix-sdk'; import { AccountDataEvent } from '$types/matrix/accountData'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useAccountDataCallback } from '$hooks/useAccountDataCallback'; diff --git a/src/app/hooks/useSidebarItems.ts b/src/app/hooks/useSidebarItems.ts index dba7b2f28..b3fa793a4 100644 --- a/src/app/hooks/useSidebarItems.ts +++ b/src/app/hooks/useSidebarItems.ts @@ -1,5 +1,5 @@ -import { Dispatch, SetStateAction, useCallback, useEffect, useState } from 'react'; -import { MatrixClient } from '$types/matrix-sdk'; +import { type Dispatch, type SetStateAction, useCallback, useEffect, useState } from 'react'; +import { type MatrixClient } from '$types/matrix-sdk'; import { AccountDataEvent } from '$types/matrix/accountData'; import { Membership } from '$types/matrix/room'; import { getAccountData, isSpace } from '$utils/room'; diff --git a/src/app/hooks/useSpace.ts b/src/app/hooks/useSpace.ts index ea53a0d0a..d9976a5ba 100644 --- a/src/app/hooks/useSpace.ts +++ b/src/app/hooks/useSpace.ts @@ -1,4 +1,4 @@ -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { createContext, useContext } from 'react'; const SpaceContext = createContext(null); diff --git a/src/app/hooks/useSpaceHierarchy.ts b/src/app/hooks/useSpaceHierarchy.ts index b5c088750..bea8a2a40 100644 --- a/src/app/hooks/useSpaceHierarchy.ts +++ b/src/app/hooks/useSpaceHierarchy.ts @@ -1,12 +1,12 @@ import { atom, useAtom, useAtomValue } from 'jotai'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import { MatrixError, MatrixEvent, Room, IHierarchyRoom } from '$types/matrix-sdk'; -import { QueryFunction, useInfiniteQuery } from '@tanstack/react-query'; -import { MSpaceChildContent, StateEvent } from '$types/matrix/room'; +import { MatrixError, type MatrixEvent, type Room, type IHierarchyRoom } from '$types/matrix-sdk'; +import { type QueryFunction, useInfiniteQuery } from '@tanstack/react-query'; +import { type MSpaceChildContent, StateEvent } from '$types/matrix/room'; import { roomToParentsAtom } from '$state/room/roomToParents'; import { getAllParents, getStateEvents, isValidChild } from '$utils/room'; import { isRoomId } from '$utils/matrix'; -import { SortFunc, byOrderKey, byTsOldToNew, factoryRoomIdByActivity } from '$utils/sort'; +import { type SortFunc, byOrderKey, byTsOldToNew, factoryRoomIdByActivity } from '$utils/sort'; import { useMatrixClient } from './useMatrixClient'; import { makeLobbyCategoryId } from '../state/closedLobbyCategories'; import { useStateEventCallback } from './useStateEventCallback'; diff --git a/src/app/hooks/useSpecVersions.ts b/src/app/hooks/useSpecVersions.ts index 42403c61c..20d17c98a 100644 --- a/src/app/hooks/useSpecVersions.ts +++ b/src/app/hooks/useSpecVersions.ts @@ -1,5 +1,5 @@ import { createContext, useContext } from 'react'; -import { SpecVersions } from '../cs-api'; +import { type SpecVersions } from '../cs-api'; const SpecVersionsContext = createContext(null); diff --git a/src/app/hooks/useSpoilerClickHandler.ts b/src/app/hooks/useSpoilerClickHandler.ts index b21011880..b92a788b7 100644 --- a/src/app/hooks/useSpoilerClickHandler.ts +++ b/src/app/hooks/useSpoilerClickHandler.ts @@ -1,4 +1,4 @@ -import { ReactEventHandler, useCallback } from 'react'; +import { type ReactEventHandler, useCallback } from 'react'; export const useSpoilerClickHandler = (): ReactEventHandler => { const handleClick: ReactEventHandler = useCallback((evt) => { diff --git a/src/app/hooks/useStateEvent.ts b/src/app/hooks/useStateEvent.ts index ba99eff51..f50b8f28c 100644 --- a/src/app/hooks/useStateEvent.ts +++ b/src/app/hooks/useStateEvent.ts @@ -1,6 +1,6 @@ -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useCallback, useMemo } from 'react'; -import { StateEvent } from '$types/matrix/room'; +import { type StateEvent } from '$types/matrix/room'; import { getStateEvent } from '$utils/room'; import { useStateEventCallback } from './useStateEventCallback'; import { useForceUpdate } from './useForceUpdate'; diff --git a/src/app/hooks/useStateEventCallback.ts b/src/app/hooks/useStateEventCallback.ts index 512378c3e..031af47aa 100644 --- a/src/app/hooks/useStateEventCallback.ts +++ b/src/app/hooks/useStateEventCallback.ts @@ -1,4 +1,9 @@ -import { MatrixClient, MatrixEvent, RoomState, RoomStateEvent } from '$types/matrix-sdk'; +import { + type MatrixClient, + type MatrixEvent, + type RoomState, + RoomStateEvent, +} from '$types/matrix-sdk'; import { useEffect } from 'react'; export type StateEventCallback = ( diff --git a/src/app/hooks/useSyncState.ts b/src/app/hooks/useSyncState.ts index d7763050d..d8ee3c89b 100644 --- a/src/app/hooks/useSyncState.ts +++ b/src/app/hooks/useSyncState.ts @@ -1,4 +1,4 @@ -import { ClientEvent, ClientEventHandlerMap, MatrixClient } from '$types/matrix-sdk'; +import { ClientEvent, type ClientEventHandlerMap, type MatrixClient } from '$types/matrix-sdk'; import { useEffect } from 'react'; export const useSyncState = ( diff --git a/src/app/hooks/useTextAreaCodeEditor.ts b/src/app/hooks/useTextAreaCodeEditor.ts index ff44e934e..c8c673782 100644 --- a/src/app/hooks/useTextAreaCodeEditor.ts +++ b/src/app/hooks/useTextAreaCodeEditor.ts @@ -1,7 +1,7 @@ -import { useMemo, useCallback, KeyboardEventHandler, MutableRefObject } from 'react'; +import { useMemo, useCallback, type KeyboardEventHandler, type MutableRefObject } from 'react'; import { isKeyHotkey } from 'is-hotkey'; import { TextArea, Intent, TextAreaOperations, Cursor } from '$plugins/text-area'; -import { GetTarget } from '$plugins/text-area/type'; +import { type GetTarget } from '$plugins/text-area/type'; import { useTextAreaIntentHandler } from './useTextAreaIntent'; export const useTextAreaCodeEditor = ( diff --git a/src/app/hooks/useTextAreaIntent.ts b/src/app/hooks/useTextAreaIntent.ts index e3e355145..4acf7d68f 100644 --- a/src/app/hooks/useTextAreaIntent.ts +++ b/src/app/hooks/useTextAreaIntent.ts @@ -1,6 +1,6 @@ import { isKeyHotkey } from 'is-hotkey'; -import { KeyboardEventHandler, useCallback } from 'react'; -import { Cursor, Intent, Operations, TextArea } from '$plugins/text-area'; +import { type KeyboardEventHandler, useCallback } from 'react'; +import { Cursor, type Intent, type Operations, type TextArea } from '$plugins/text-area'; export const useTextAreaIntentHandler = ( textArea: TextArea, diff --git a/src/app/hooks/useTypingStatusUpdater.ts b/src/app/hooks/useTypingStatusUpdater.ts index 9bbda0900..b1ccaee1b 100644 --- a/src/app/hooks/useTypingStatusUpdater.ts +++ b/src/app/hooks/useTypingStatusUpdater.ts @@ -1,4 +1,4 @@ -import { MatrixClient } from '$types/matrix-sdk'; +import { type MatrixClient } from '$types/matrix-sdk'; import { useMemo, useRef } from 'react'; import { TYPING_TIMEOUT_MS } from '$state/typingMembers'; diff --git a/src/app/hooks/useUIAFlows.ts b/src/app/hooks/useUIAFlows.ts index f7e04f2e3..d2f94d956 100644 --- a/src/app/hooks/useUIAFlows.ts +++ b/src/app/hooks/useUIAFlows.ts @@ -1,4 +1,4 @@ -import { AuthType, IAuthData, MatrixError, UIAFlow } from '$types/matrix-sdk'; +import { AuthType, type IAuthData, type MatrixError, type UIAFlow } from '$types/matrix-sdk'; import { useCallback, useMemo } from 'react'; import { getSupportedUIAFlows, diff --git a/src/app/hooks/useUserPresence.ts b/src/app/hooks/useUserPresence.ts index f1b858422..3541b205f 100644 --- a/src/app/hooks/useUserPresence.ts +++ b/src/app/hooks/useUserPresence.ts @@ -1,5 +1,5 @@ import { useEffect, useMemo, useState } from 'react'; -import { User, UserEvent, UserEventHandlerMap } from '$types/matrix-sdk'; +import { type User, UserEvent, type UserEventHandlerMap } from '$types/matrix-sdk'; import { useMatrixClient } from './useMatrixClient'; export enum Presence { diff --git a/src/app/hooks/useUserProfile.ts b/src/app/hooks/useUserProfile.ts index d1de6e890..4b31a60c3 100644 --- a/src/app/hooks/useUserProfile.ts +++ b/src/app/hooks/useUserProfile.ts @@ -1,13 +1,13 @@ import { useEffect, useMemo } from 'react'; import { useAtomValue, useSetAtom } from 'jotai'; import { selectAtom } from 'jotai/utils'; -import { EventTimeline, Room } from '$types/matrix-sdk'; +import { EventTimeline, type Room } from '$types/matrix-sdk'; import { StateEvent } from '$types/matrix/room'; import colorMXID from '$utils/colorMXID'; import { profilesCacheAtom } from '$state/userRoomProfile'; import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; -import { MSC1767Text } from '$types/matrix/common'; +import { type MSC1767Text } from '$types/matrix/common'; import { useMatrixClient } from './useMatrixClient'; const inFlightProfiles = new Map>(); diff --git a/src/app/hooks/useVerificationRequest.ts b/src/app/hooks/useVerificationRequest.ts index 38d08d859..a571a1539 100644 --- a/src/app/hooks/useVerificationRequest.ts +++ b/src/app/hooks/useVerificationRequest.ts @@ -1,14 +1,14 @@ import { useCallback, useEffect, useState } from 'react'; import { CryptoEvent, - CryptoEventHandlerMap, - VerificationPhase, - VerificationRequest, + type CryptoEventHandlerMap, + type VerificationPhase, + type VerificationRequest, VerificationRequestEvent, - VerificationRequestEventHandlerMap, - Verifier, + type VerificationRequestEventHandlerMap, + type Verifier, VerifierEvent, - VerifierEventHandlerMap, + type VerifierEventHandlerMap, } from '$types/matrix-sdk'; import { useMatrixClient } from './useMatrixClient'; diff --git a/src/app/i18n.ts b/src/app/i18n.ts index 9e83805d3..08750eeb7 100644 --- a/src/app/i18n.ts +++ b/src/app/i18n.ts @@ -1,6 +1,6 @@ import i18n from 'i18next'; import LanguageDetector from 'i18next-browser-languagedetector'; -import Backend, { HttpBackendOptions } from 'i18next-http-backend'; +import Backend, { type HttpBackendOptions } from 'i18next-http-backend'; import { initReactI18next } from 'react-i18next'; import { trimTrailingSlash } from './utils/common'; diff --git a/src/app/pages/FeatureCheck.tsx b/src/app/pages/FeatureCheck.tsx index dd621c90a..64eb54981 100644 --- a/src/app/pages/FeatureCheck.tsx +++ b/src/app/pages/FeatureCheck.tsx @@ -1,4 +1,4 @@ -import { ReactNode, useEffect } from 'react'; +import { type ReactNode, useEffect } from 'react'; import { Box, Dialog, Text, config } from 'folds'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { checkIndexedDBSupport } from '$utils/featureCheck'; diff --git a/src/app/pages/MobileFriendly.tsx b/src/app/pages/MobileFriendly.tsx index 2fe174fe5..f49327ff2 100644 --- a/src/app/pages/MobileFriendly.tsx +++ b/src/app/pages/MobileFriendly.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { useMatch } from 'react-router-dom'; import { ScreenSize, useScreenSizeContext } from '$hooks/useScreenSize'; import { DIRECT_PATH, EXPLORE_PATH, HOME_PATH, INBOX_PATH, SPACE_PATH } from './paths'; diff --git a/src/app/pages/Router.tsx b/src/app/pages/Router.tsx index 15fecbda9..ee27caa76 100644 --- a/src/app/pages/Router.tsx +++ b/src/app/pages/Router.tsx @@ -8,7 +8,7 @@ import { } from 'react-router-dom'; import * as Sentry from '@sentry/react'; -import { ClientConfig } from '$hooks/useClientConfig'; +import { type ClientConfig } from '$hooks/useClientConfig'; import { ErrorPage } from '$components/DefaultErrorPage'; import { Room } from '$features/room'; import { Lobby } from '$features/lobby'; @@ -22,7 +22,7 @@ import { UserRoomProfileRenderer } from '$components/UserRoomProfileRenderer'; import { CreateRoomModalRenderer } from '$features/create-room'; import { CreateSpaceModalRenderer } from '$features/create-space'; import { BugReportModalRenderer } from '$features/bug-report'; -import { getFallbackSession, MATRIX_SESSIONS_KEY, Sessions } from '$state/sessions'; +import { getFallbackSession, MATRIX_SESSIONS_KEY, type Sessions } from '$state/sessions'; import { getLocalStorageItem } from '$state/utils/atomWithLocalStorage'; import { NotificationJumper } from '$hooks/useNotificationJumper'; import { SearchModalRenderer } from '$features/search'; diff --git a/src/app/pages/ThemeManager.tsx b/src/app/pages/ThemeManager.tsx index 90a7e5783..2510c5ff1 100644 --- a/src/app/pages/ThemeManager.tsx +++ b/src/app/pages/ThemeManager.tsx @@ -1,4 +1,4 @@ -import { ReactNode, useEffect } from 'react'; +import { type ReactNode, useEffect } from 'react'; import { configClass, varsClass } from 'folds'; import { DarkTheme, diff --git a/src/app/pages/auth/SSOLogin.tsx b/src/app/pages/auth/SSOLogin.tsx index eabb23602..436bf2e5c 100644 --- a/src/app/pages/auth/SSOLogin.tsx +++ b/src/app/pages/auth/SSOLogin.tsx @@ -1,5 +1,5 @@ import { Avatar, AvatarImage, Box, Button, Text } from 'folds'; -import { IIdentityProvider, SSOAction, createClient } from '$types/matrix-sdk'; +import { type IIdentityProvider, type SSOAction, createClient } from '$types/matrix-sdk'; import { useMemo } from 'react'; import { useAutoDiscoveryInfo } from '$hooks/useAutoDiscoveryInfo'; diff --git a/src/app/pages/auth/ServerPicker.tsx b/src/app/pages/auth/ServerPicker.tsx index e8a4984b2..3542ee2f2 100644 --- a/src/app/pages/auth/ServerPicker.tsx +++ b/src/app/pages/auth/ServerPicker.tsx @@ -1,8 +1,8 @@ import { - ChangeEventHandler, - FocusEventHandler, - KeyboardEventHandler, - MouseEventHandler, + type ChangeEventHandler, + type FocusEventHandler, + type KeyboardEventHandler, + type MouseEventHandler, useEffect, useRef, useState, @@ -16,7 +16,7 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Text, config, } from 'folds'; diff --git a/src/app/pages/auth/login/Login.tsx b/src/app/pages/auth/login/Login.tsx index fe895332b..2a2da65c9 100644 --- a/src/app/pages/auth/login/Login.tsx +++ b/src/app/pages/auth/login/Login.tsx @@ -7,7 +7,7 @@ import { useAuthServer } from '$hooks/useAuthServer'; import { useParsedLoginFlows } from '$hooks/useParsedLoginFlows'; import { getLoginPath, getRegisterPath, withSearchParam } from '$pages/pathUtils'; import { usePathWithOrigin } from '$hooks/usePathWithOrigin'; -import { LoginPathSearchParams } from '$pages/paths'; +import { type LoginPathSearchParams } from '$pages/paths'; import { useClientConfig } from '$hooks/useClientConfig'; import { SSOLogin } from '$pages/auth/SSOLogin'; import { OrDivider } from '$pages/auth/OrDivider'; diff --git a/src/app/pages/auth/login/PasswordLoginForm.tsx b/src/app/pages/auth/login/PasswordLoginForm.tsx index ba888bda5..f4875177f 100644 --- a/src/app/pages/auth/login/PasswordLoginForm.tsx +++ b/src/app/pages/auth/login/PasswordLoginForm.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, MouseEventHandler, useCallback, useState } from 'react'; +import { type FormEventHandler, type MouseEventHandler, useCallback, useState } from 'react'; import { Box, Button, @@ -12,14 +12,14 @@ import { OverlayBackdrop, OverlayCenter, PopOut, - RectCords, + type RectCords, Spinner, Text, config, } from 'folds'; import FocusTrap from 'focus-trap-react'; import { Link } from 'react-router-dom'; -import { MatrixError } from '$types/matrix-sdk'; +import { type MatrixError } from '$types/matrix-sdk'; import { getMxIdLocalPart, getMxIdServer, isUserId } from '$utils/matrix'; import { EMAIL_REGEX } from '$utils/regex'; import { useAutoDiscoveryInfo } from '$hooks/useAutoDiscoveryInfo'; @@ -32,7 +32,7 @@ import { stopPropagation } from '$utils/keyboard'; import { FieldError } from '$pages/auth/FiledError'; import { deviceDisplayName } from '$utils/user-agent'; import { - CustomLoginResponse, + type CustomLoginResponse, LoginError, factoryGetBaseUrl, login, diff --git a/src/app/pages/auth/login/TokenLogin.tsx b/src/app/pages/auth/login/TokenLogin.tsx index 7acf3e9b8..50ba7892e 100644 --- a/src/app/pages/auth/login/TokenLogin.tsx +++ b/src/app/pages/auth/login/TokenLogin.tsx @@ -11,11 +11,11 @@ import { config, } from 'folds'; import { useCallback, useEffect } from 'react'; -import { MatrixError } from '$types/matrix-sdk'; +import { type MatrixError } from '$types/matrix-sdk'; import { useAutoDiscoveryInfo } from '$hooks/useAutoDiscoveryInfo'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { deviceDisplayName } from '$utils/user-agent'; -import { CustomLoginResponse, LoginError, login, useLoginComplete } from './loginUtil'; +import { type CustomLoginResponse, LoginError, login, useLoginComplete } from './loginUtil'; function LoginTokenError({ message }: { message: string }) { return ( diff --git a/src/app/pages/auth/login/loginUtil.ts b/src/app/pages/auth/login/loginUtil.ts index 81371a614..fc7ace99d 100644 --- a/src/app/pages/auth/login/loginUtil.ts +++ b/src/app/pages/auth/login/loginUtil.ts @@ -1,10 +1,15 @@ import to from 'await-to-js'; -import { createClient, LoginRequest, LoginResponse, MatrixError } from '$types/matrix-sdk'; +import { + createClient, + type LoginRequest, + type LoginResponse, + MatrixError, +} from '$types/matrix-sdk'; import { useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { useSetAtom } from 'jotai'; import * as Sentry from '@sentry/react'; -import { clientAllowedServer, ClientConfig } from '$hooks/useClientConfig'; +import { clientAllowedServer, type ClientConfig } from '$hooks/useClientConfig'; import { deleteAfterLoginRedirectPath, getAfterLoginRedirectPath, diff --git a/src/app/pages/auth/register/PasswordRegisterForm.tsx b/src/app/pages/auth/register/PasswordRegisterForm.tsx index e8e991022..660a1d3f7 100644 --- a/src/app/pages/auth/register/PasswordRegisterForm.tsx +++ b/src/app/pages/auth/register/PasswordRegisterForm.tsx @@ -10,14 +10,14 @@ import { Text, color, } from 'folds'; -import { ChangeEventHandler, useCallback, useMemo, useState } from 'react'; +import { type ChangeEventHandler, useCallback, useMemo, useState } from 'react'; import { - AuthDict, + type AuthDict, AuthType, - IAuthData, - MatrixError, - RegisterRequest, - UIAFlow, + type IAuthData, + type MatrixError, + type RegisterRequest, + type UIAFlow, createClient, } from '$types/matrix-sdk'; import { PasswordInput } from '$components/password-input'; @@ -28,7 +28,7 @@ import { requiredStageInFlows, } from '$utils/matrix-uia'; import { useUIACompleted, useUIAFlow, useUIAParams } from '$hooks/useUIAFlows'; -import { AsyncState, AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; +import { type AsyncState, AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useAutoDiscoveryInfo } from '$hooks/useAutoDiscoveryInfo'; import { AutoDummyStageDialog, @@ -40,10 +40,10 @@ import { import { useRegisterEmail } from '$hooks/useRegisterEmail'; import { ConfirmPasswordMatch } from '$components/ConfirmPasswordMatch'; import { UIAFlowOverlay } from '$components/UIAFlowOverlay'; -import { RequestEmailTokenCallback, RequestEmailTokenResponse } from '$hooks/types'; +import { type RequestEmailTokenCallback, type RequestEmailTokenResponse } from '$hooks/types'; import { FieldError } from '$pages/auth/FiledError'; import { deviceDisplayName } from '$utils/user-agent'; -import { RegisterError, RegisterResult, register, useRegisterComplete } from './registerUtil'; +import { RegisterError, type RegisterResult, register, useRegisterComplete } from './registerUtil'; export const SUPPORTED_REGISTER_STAGES = [ AuthType.RegistrationToken, diff --git a/src/app/pages/auth/register/Register.tsx b/src/app/pages/auth/register/Register.tsx index 11bee338e..5e48cc819 100644 --- a/src/app/pages/auth/register/Register.tsx +++ b/src/app/pages/auth/register/Register.tsx @@ -8,7 +8,7 @@ import { useParsedLoginFlows } from '$hooks/useParsedLoginFlows'; import { SupportedUIAFlowsLoader } from '$components/SupportedUIAFlowsLoader'; import { getLoginPath } from '$pages/pathUtils'; import { usePathWithOrigin } from '$hooks/usePathWithOrigin'; -import { RegisterPathSearchParams } from '$pages/paths'; +import { type RegisterPathSearchParams } from '$pages/paths'; import { SSOLogin } from '$pages/auth/SSOLogin'; import { OrDivider } from '$pages/auth/OrDivider'; import { PasswordRegisterForm, SUPPORTED_REGISTER_STAGES } from './PasswordRegisterForm'; diff --git a/src/app/pages/auth/register/registerUtil.ts b/src/app/pages/auth/register/registerUtil.ts index 513aabfc0..2013312c2 100644 --- a/src/app/pages/auth/register/registerUtil.ts +++ b/src/app/pages/auth/register/registerUtil.ts @@ -1,15 +1,15 @@ import to from 'await-to-js'; import { - IAuthData, - MatrixClient, + type IAuthData, + type MatrixClient, MatrixError, - RegisterRequest, - RegisterResponse, + type RegisterRequest, + type RegisterResponse, } from '$types/matrix-sdk'; import { useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { useSetAtom } from 'jotai'; -import { LoginPathSearchParams } from '$pages/paths'; +import { type LoginPathSearchParams } from '$pages/paths'; import { deleteAfterLoginRedirectPath, getAfterLoginRedirectPath, diff --git a/src/app/pages/auth/reset-password/PasswordResetForm.tsx b/src/app/pages/auth/reset-password/PasswordResetForm.tsx index af4c57526..8ed1d654a 100644 --- a/src/app/pages/auth/reset-password/PasswordResetForm.tsx +++ b/src/app/pages/auth/reset-password/PasswordResetForm.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, useCallback, useEffect, useMemo, useState } from 'react'; +import { type FormEventHandler, useCallback, useEffect, useMemo, useState } from 'react'; import { Box, Button, @@ -14,7 +14,7 @@ import { } from 'folds'; import { useNavigate } from 'react-router-dom'; import FocusTrap from 'focus-trap-react'; -import { AuthDict, AuthType, MatrixError, createClient } from '$types/matrix-sdk'; +import { type AuthDict, AuthType, type MatrixError, createClient } from '$types/matrix-sdk'; import { useAutoDiscoveryInfo } from '$hooks/useAutoDiscoveryInfo'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { useAuthServer } from '$hooks/useAuthServer'; @@ -24,10 +24,10 @@ import { ConfirmPasswordMatch } from '$components/ConfirmPasswordMatch'; import { UIAFlowOverlay } from '$components/UIAFlowOverlay'; import { EmailStageDialog } from '$components/uia-stages'; import { getLoginPath, withSearchParam } from '$pages/pathUtils'; -import { LoginPathSearchParams } from '$pages/paths'; +import { type LoginPathSearchParams } from '$pages/paths'; import { getUIAError, getUIAErrorCode } from '$utils/matrix-uia'; import { FieldError } from '$pages/auth/FiledError'; -import { ResetPasswordResult, resetPassword } from './resetPasswordUtil'; +import { type ResetPasswordResult, resetPassword } from './resetPasswordUtil'; type FormData = { email: string; diff --git a/src/app/pages/auth/reset-password/ResetPassword.tsx b/src/app/pages/auth/reset-password/ResetPassword.tsx index 718101fab..439e35af4 100644 --- a/src/app/pages/auth/reset-password/ResetPassword.tsx +++ b/src/app/pages/auth/reset-password/ResetPassword.tsx @@ -3,7 +3,7 @@ import { useMemo } from 'react'; import { Link, useSearchParams } from 'react-router-dom'; import { getLoginPath } from '$pages/pathUtils'; import { useAuthServer } from '$hooks/useAuthServer'; -import { ResetPasswordPathSearchParams } from '$pages/paths'; +import { type ResetPasswordPathSearchParams } from '$pages/paths'; import { PasswordResetForm } from './PasswordResetForm'; const useResetPasswordSearchParams = ( diff --git a/src/app/pages/auth/reset-password/resetPasswordUtil.ts b/src/app/pages/auth/reset-password/resetPasswordUtil.ts index 65f0c7e7c..98e0891b7 100644 --- a/src/app/pages/auth/reset-password/resetPasswordUtil.ts +++ b/src/app/pages/auth/reset-password/resetPasswordUtil.ts @@ -1,5 +1,10 @@ import to from 'await-to-js'; -import { AuthDict, IAuthData, MatrixClient, MatrixError } from '$types/matrix-sdk'; +import { + type AuthDict, + type IAuthData, + type MatrixClient, + type MatrixError, +} from '$types/matrix-sdk'; export type ResetPasswordResponse = Record; export type ResetPasswordResult = [IAuthData, undefined] | [undefined, ResetPasswordResponse]; diff --git a/src/app/pages/client/AutoDiscovery.tsx b/src/app/pages/client/AutoDiscovery.tsx index c39f16cd3..797d55248 100644 --- a/src/app/pages/client/AutoDiscovery.tsx +++ b/src/app/pages/client/AutoDiscovery.tsx @@ -1,7 +1,7 @@ -import { ReactNode, useCallback, useMemo } from 'react'; +import { type ReactNode, useCallback, useMemo } from 'react'; import { AutoDiscoveryInfoProvider } from '../../hooks/useAutoDiscoveryInfo'; import { AsyncStatus, useAsyncCallbackValue } from '../../hooks/useAsyncCallback'; -import { autoDiscovery, AutoDiscoveryInfo } from '../../cs-api'; +import { autoDiscovery, type AutoDiscoveryInfo } from '../../cs-api'; import { getMxIdServer } from '../../utils/matrix'; type AutoDiscoveryProps = { diff --git a/src/app/pages/client/BackgroundNotifications.tsx b/src/app/pages/client/BackgroundNotifications.tsx index 395718223..44af1ed91 100644 --- a/src/app/pages/client/BackgroundNotifications.tsx +++ b/src/app/pages/client/BackgroundNotifications.tsx @@ -2,10 +2,10 @@ import { useEffect, useMemo, useRef } from 'react'; import { ClientEvent, createClient, - MatrixClient, - MatrixEvent, + type MatrixClient, + type MatrixEvent, MatrixEventEvent, - Room, + type Room, RoomEvent, SyncState, PushProcessor, @@ -14,7 +14,7 @@ import { useAtom, useAtomValue, useSetAtom } from 'jotai'; import { sessionsAtom, activeSessionIdAtom, - Session, + type Session, pendingNotificationAtom, backgroundUnreadCountsAtom, inAppBannerAtom, diff --git a/src/app/pages/client/ClientBindAtoms.ts b/src/app/pages/client/ClientBindAtoms.ts index aac351062..5ddfb67dc 100644 --- a/src/app/pages/client/ClientBindAtoms.ts +++ b/src/app/pages/client/ClientBindAtoms.ts @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useBindAtoms } from '$state/hooks/useBindAtoms'; diff --git a/src/app/pages/client/ClientInitStorageAtom.tsx b/src/app/pages/client/ClientInitStorageAtom.tsx index 90f6d914f..1eab6ceee 100644 --- a/src/app/pages/client/ClientInitStorageAtom.tsx +++ b/src/app/pages/client/ClientInitStorageAtom.tsx @@ -1,4 +1,4 @@ -import { ReactNode, useMemo } from 'react'; +import { type ReactNode, useMemo } from 'react'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { makeClosedNavCategoriesAtom } from '$state/closedNavCategories'; import { ClosedNavCategoriesProvider } from '$state/hooks/closedNavCategories'; diff --git a/src/app/pages/client/ClientLayout.tsx b/src/app/pages/client/ClientLayout.tsx index 4bbd4068f..a9a97483a 100644 --- a/src/app/pages/client/ClientLayout.tsx +++ b/src/app/pages/client/ClientLayout.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { Box } from 'folds'; type ClientLayoutProps = { diff --git a/src/app/pages/client/ClientNonUIFeatures.tsx b/src/app/pages/client/ClientNonUIFeatures.tsx index dc9bf984f..556fd6140 100644 --- a/src/app/pages/client/ClientNonUIFeatures.tsx +++ b/src/app/pages/client/ClientNonUIFeatures.tsx @@ -1,13 +1,13 @@ import { useAtomValue, useSetAtom } from 'jotai'; import * as Sentry from '@sentry/react'; -import { ReactNode, useCallback, useEffect, useRef } from 'react'; +import { type ReactNode, useCallback, useEffect, useRef } from 'react'; import { useNavigate } from 'react-router-dom'; import { MatrixEvent, MatrixEventEvent, PushProcessor, RoomEvent, - RoomEventHandlerMap, + type RoomEventHandlerMap, SetPresence, } from '$types/matrix-sdk'; import parse from 'html-react-parser'; diff --git a/src/app/pages/client/ClientRoomsNotificationPreferences.tsx b/src/app/pages/client/ClientRoomsNotificationPreferences.tsx index c6ef04a4c..056072097 100644 --- a/src/app/pages/client/ClientRoomsNotificationPreferences.tsx +++ b/src/app/pages/client/ClientRoomsNotificationPreferences.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { RoomsNotificationPreferencesProvider, useRoomsNotificationPreferences, diff --git a/src/app/pages/client/ClientRoot.tsx b/src/app/pages/client/ClientRoot.tsx index 1a653e950..daade38e9 100644 --- a/src/app/pages/client/ClientRoot.tsx +++ b/src/app/pages/client/ClientRoot.tsx @@ -9,13 +9,20 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Spinner, Text, } from 'folds'; -import { HttpApiEvent, HttpApiEventHandlerMap, MatrixClient } from '$types/matrix-sdk'; +import { HttpApiEvent, type HttpApiEventHandlerMap, type MatrixClient } from '$types/matrix-sdk'; import FocusTrap from 'focus-trap-react'; -import { useRef, MouseEventHandler, ReactNode, useCallback, useEffect, useState } from 'react'; +import { + useRef, + type MouseEventHandler, + type ReactNode, + useCallback, + useEffect, + useState, +} from 'react'; import * as Sentry from '@sentry/react'; import { useNavigate } from 'react-router-dom'; import { useAtom, useAtomValue, useSetAtom } from 'jotai'; diff --git a/src/app/pages/client/SidebarNav.tsx b/src/app/pages/client/SidebarNav.tsx index 507fa37c4..b563216c7 100644 --- a/src/app/pages/client/SidebarNav.tsx +++ b/src/app/pages/client/SidebarNav.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, useRef, useState } from 'react'; +import { type MouseEventHandler, useRef, useState } from 'react'; import { Box, Checkbox, config, Line, Menu, MenuItem, PopOut, Scroll, Text, toRem } from 'folds'; import FocusTrap from 'focus-trap-react'; import { stopPropagation } from '$utils/keyboard'; diff --git a/src/app/pages/client/SpecVersions.tsx b/src/app/pages/client/SpecVersions.tsx index 75cb3cafc..f5c16a855 100644 --- a/src/app/pages/client/SpecVersions.tsx +++ b/src/app/pages/client/SpecVersions.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { Box, Dialog, config, Text, Button, Spinner } from 'folds'; import { SpecVersionsLoader } from '$components/SpecVersionsLoader'; import { SpecVersionsProvider } from '$hooks/useSpecVersions'; diff --git a/src/app/pages/client/SyncStatus.tsx b/src/app/pages/client/SyncStatus.tsx index f55fe5e59..4c3398bda 100644 --- a/src/app/pages/client/SyncStatus.tsx +++ b/src/app/pages/client/SyncStatus.tsx @@ -1,4 +1,4 @@ -import { MatrixClient, SyncState } from '$types/matrix-sdk'; +import { type MatrixClient, SyncState } from '$types/matrix-sdk'; import { useCallback, useState } from 'react'; import { Box, config, Line, Text } from 'folds'; import * as Sentry from '@sentry/react'; diff --git a/src/app/pages/client/direct/Direct.tsx b/src/app/pages/client/direct/Direct.tsx index 43ccb6be1..67c1cdb71 100644 --- a/src/app/pages/client/direct/Direct.tsx +++ b/src/app/pages/client/direct/Direct.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, forwardRef, useEffect, useMemo, useRef, useState } from 'react'; +import { type MouseEventHandler, forwardRef, useEffect, useMemo, useRef, useState } from 'react'; import { useAtom, useAtomValue } from 'jotai'; import { Avatar, @@ -10,7 +10,7 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Text, config, toRem, diff --git a/src/app/pages/client/direct/RoomProvider.tsx b/src/app/pages/client/direct/RoomProvider.tsx index 1780fa728..5a00678aa 100644 --- a/src/app/pages/client/direct/RoomProvider.tsx +++ b/src/app/pages/client/direct/RoomProvider.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { useParams } from 'react-router-dom'; import { useSelectedRoom } from '$hooks/router/useSelectedRoom'; import { IsDirectRoomProvider, RoomProvider } from '$hooks/useRoom'; diff --git a/src/app/pages/client/explore/Explore.tsx b/src/app/pages/client/explore/Explore.tsx index 9ac55e2d2..dcdb670bd 100644 --- a/src/app/pages/client/explore/Explore.tsx +++ b/src/app/pages/client/explore/Explore.tsx @@ -1,4 +1,4 @@ -import { FormEventHandler, useCallback, useRef, useState } from 'react'; +import { type FormEventHandler, useCallback, useRef, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import FocusTrap from 'focus-trap-react'; import { diff --git a/src/app/pages/client/explore/Server.tsx b/src/app/pages/client/explore/Server.tsx index d58aa2a10..403d15ff5 100644 --- a/src/app/pages/client/explore/Server.tsx +++ b/src/app/pages/client/explore/Server.tsx @@ -1,7 +1,7 @@ import { - FormEventHandler, - MouseEventHandler, - RefObject, + type FormEventHandler, + type MouseEventHandler, + type RefObject, useCallback, useEffect, useMemo, @@ -20,7 +20,7 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Scroll, Spinner, Text, @@ -31,12 +31,12 @@ import { useNavigate, useParams, useSearchParams } from 'react-router-dom'; import FocusTrap from 'focus-trap-react'; import { useAtomValue } from 'jotai'; import { useQuery } from '@tanstack/react-query'; -import { MatrixClient, Method, RoomType } from '$types/matrix-sdk'; +import { type MatrixClient, Method, RoomType } from '$types/matrix-sdk'; import { Page, PageContent, PageContentCenter, PageHeader } from '$components/page'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { RoomTopicViewer } from '$components/room-topic-viewer'; import { RoomCard, RoomCardBase, RoomCardGrid } from '$components/room-card'; -import { ExploreServerPathSearchParams } from '$pages/paths'; +import { type ExploreServerPathSearchParams } from '$pages/paths'; import { getExploreServerPath, withSearchParam } from '$pages/pathUtils'; import { allRoomsAtom } from '$state/room-list/roomList'; import { useRoomNavigate } from '$hooks/useRoomNavigate'; diff --git a/src/app/pages/client/home/Home.tsx b/src/app/pages/client/home/Home.tsx index c25d99e30..8a114f07d 100644 --- a/src/app/pages/client/home/Home.tsx +++ b/src/app/pages/client/home/Home.tsx @@ -1,4 +1,4 @@ -import { MouseEventHandler, forwardRef, useMemo, useRef, useState } from 'react'; +import { type MouseEventHandler, forwardRef, useMemo, useRef, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { Avatar, @@ -10,7 +10,7 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Text, config, toRem, @@ -60,7 +60,7 @@ import { } from '$hooks/useRoomsNotificationPreferences'; import { UseStateProvider } from '$components/UseStateProvider'; import { JoinAddressPrompt } from '$components/join-address-prompt'; -import { RoomSearchParams } from '$pages/paths'; +import { type RoomSearchParams } from '$pages/paths'; import { useHomeRooms } from './useHomeRooms'; type HomeMenuProps = { diff --git a/src/app/pages/client/home/RoomProvider.tsx b/src/app/pages/client/home/RoomProvider.tsx index b6f7ba7e3..6d04c8c60 100644 --- a/src/app/pages/client/home/RoomProvider.tsx +++ b/src/app/pages/client/home/RoomProvider.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { useParams } from 'react-router-dom'; import { useSelectedRoom } from '$hooks/router/useSelectedRoom'; import { IsDirectRoomProvider, RoomProvider } from '$hooks/useRoom'; diff --git a/src/app/pages/client/inbox/Invites.tsx b/src/app/pages/client/inbox/Invites.tsx index 8eeff6ad4..831a50238 100644 --- a/src/app/pages/client/inbox/Invites.tsx +++ b/src/app/pages/client/inbox/Invites.tsx @@ -19,7 +19,12 @@ import { } from 'folds'; import { useAtomValue } from 'jotai'; import { nicknamesAtom } from '$state/nicknames'; -import { RoomTopicEventContent, MatrixClient, MatrixError, Room } from '$types/matrix-sdk'; +import { + type RoomTopicEventContent, + type MatrixClient, + type MatrixError, + type Room, +} from '$types/matrix-sdk'; import FocusTrap from 'focus-trap-react'; import { Page, diff --git a/src/app/pages/client/inbox/Notifications.tsx b/src/app/pages/client/inbox/Notifications.tsx index dc3d35297..87613dec1 100644 --- a/src/app/pages/client/inbox/Notifications.tsx +++ b/src/app/pages/client/inbox/Notifications.tsx @@ -1,5 +1,5 @@ /* eslint-disable react/destructuring-assignment */ -import { MouseEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { type MouseEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Avatar, Box, @@ -15,23 +15,23 @@ import { } from 'folds'; import { useSearchParams } from 'react-router-dom'; import { - INotification, - INotificationsResponse, - IRoomEvent, + type INotification, + type INotificationsResponse, + type IRoomEvent, JoinRule, Method, RelationType, - Room, + type Room, } from '$types/matrix-sdk'; import { useVirtualizer } from '@tanstack/react-virtual'; -import { HTMLReactParserOptions } from 'html-react-parser'; -import { Opts as LinkifyOpts } from 'linkifyjs'; +import { type HTMLReactParserOptions } from 'html-react-parser'; +import { type Opts as LinkifyOpts } from 'linkifyjs'; import { useAtomValue } from 'jotai'; import { nicknamesAtom } from '$state/nicknames'; import { Page, PageContent, PageContentCenter, PageHeader } from '$components/page'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { getMxIdLocalPart, mxcUrlToHttp } from '$utils/matrix'; -import { InboxNotificationsPathSearchParams } from '$pages/paths'; +import { type InboxNotificationsPathSearchParams } from '$pages/paths'; import { AsyncStatus, useAsyncCallback } from '$hooks/useAsyncCallback'; import { SequenceCard } from '$components/sequence-card'; import { RoomAvatar, RoomIcon } from '$components/room-avatar'; @@ -68,7 +68,7 @@ import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; import { Image } from '$components/media'; import { ImageViewer } from '$components/image-viewer'; -import { GetContentCallback, MessageEvent, StateEvent } from '$types/matrix/room'; +import { type GetContentCallback, MessageEvent, StateEvent } from '$types/matrix/room'; import { useMatrixEventRenderer } from '$hooks/useMatrixEventRenderer'; import * as customHtmlCss from '$styles/CustomHtml.css'; import { useRoomNavigate } from '$hooks/useRoomNavigate'; diff --git a/src/app/pages/client/sidebar/AccountSwitcherTab.tsx b/src/app/pages/client/sidebar/AccountSwitcherTab.tsx index 089c7b84b..28c3a413c 100644 --- a/src/app/pages/client/sidebar/AccountSwitcherTab.tsx +++ b/src/app/pages/client/sidebar/AccountSwitcherTab.tsx @@ -1,4 +1,4 @@ -import { MouseEvent, MouseEventHandler, useCallback, useState } from 'react'; +import { type MouseEvent, type MouseEventHandler, useCallback, useState } from 'react'; import { Box, Button, @@ -9,7 +9,7 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Text, config, toRem, @@ -23,7 +23,7 @@ import { useNavigate } from 'react-router-dom'; import { sessionsAtom, activeSessionIdAtom, - Session, + type Session, backgroundUnreadCountsAtom, } from '$state/sessions'; import { diff --git a/src/app/pages/client/sidebar/CreateTab.tsx b/src/app/pages/client/sidebar/CreateTab.tsx index 0d93621a9..bc579520d 100644 --- a/src/app/pages/client/sidebar/CreateTab.tsx +++ b/src/app/pages/client/sidebar/CreateTab.tsx @@ -1,5 +1,5 @@ -import { MouseEventHandler, useState } from 'react'; -import { Box, config, Icon, Icons, Menu, PopOut, RectCords, Text } from 'folds'; +import { type MouseEventHandler, useState } from 'react'; +import { Box, config, Icon, Icons, Menu, PopOut, type RectCords, Text } from 'folds'; import FocusTrap from 'focus-trap-react'; import { useNavigate } from 'react-router-dom'; import { SidebarAvatar, SidebarItem, SidebarItemTooltip } from '$components/sidebar'; @@ -15,7 +15,7 @@ import { } from '$pages/pathUtils'; import { useCreateSelected } from '$hooks/router/useCreateSelected'; import { JoinAddressPrompt } from '$components/join-address-prompt'; -import { RoomSearchParams } from '$pages/paths'; +import { type RoomSearchParams } from '$pages/paths'; export function CreateTab() { const createSelected = useCreateSelected(); diff --git a/src/app/pages/client/sidebar/DirectDMsList.tsx b/src/app/pages/client/sidebar/DirectDMsList.tsx index 16e829ce5..b7a1927ed 100644 --- a/src/app/pages/client/sidebar/DirectDMsList.tsx +++ b/src/app/pages/client/sidebar/DirectDMsList.tsx @@ -3,7 +3,7 @@ import * as Sentry from '@sentry/react'; import { useNavigate } from 'react-router-dom'; import { Avatar, Text, Box } from 'folds'; import { useAtomValue } from 'jotai'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { roomToUnreadAtom } from '$state/room/roomToUnread'; import { getDirectRoomPath } from '$pages/pathUtils'; diff --git a/src/app/pages/client/sidebar/DirectTab.tsx b/src/app/pages/client/sidebar/DirectTab.tsx index 17c88a042..4b06a46c8 100644 --- a/src/app/pages/client/sidebar/DirectTab.tsx +++ b/src/app/pages/client/sidebar/DirectTab.tsx @@ -1,6 +1,17 @@ -import { MouseEventHandler, forwardRef, useMemo, useState } from 'react'; +import { type MouseEventHandler, forwardRef, useMemo, useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import { Box, Icon, Icons, Menu, MenuItem, PopOut, RectCords, Text, config, toRem } from 'folds'; +import { + Box, + Icon, + Icons, + Menu, + MenuItem, + PopOut, + type RectCords, + Text, + config, + toRem, +} from 'folds'; import FocusTrap from 'focus-trap-react'; import { useAtomValue } from 'jotai'; import { useDirects } from '$state/hooks/roomList'; diff --git a/src/app/pages/client/sidebar/HomeTab.tsx b/src/app/pages/client/sidebar/HomeTab.tsx index 4d32c0304..d345c8dec 100644 --- a/src/app/pages/client/sidebar/HomeTab.tsx +++ b/src/app/pages/client/sidebar/HomeTab.tsx @@ -1,6 +1,17 @@ -import { MouseEventHandler, forwardRef, useState } from 'react'; +import { type MouseEventHandler, forwardRef, useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import { Box, Icon, Icons, Menu, MenuItem, PopOut, RectCords, Text, config, toRem } from 'folds'; +import { + Box, + Icon, + Icons, + Menu, + MenuItem, + PopOut, + type RectCords, + Text, + config, + toRem, +} from 'folds'; import { useAtomValue } from 'jotai'; import FocusTrap from 'focus-trap-react'; import { useOrphanRooms } from '$state/hooks/roomList'; diff --git a/src/app/pages/client/sidebar/SpaceTabs.tsx b/src/app/pages/client/sidebar/SpaceTabs.tsx index 5370aff2e..e34873cfe 100644 --- a/src/app/pages/client/sidebar/SpaceTabs.tsx +++ b/src/app/pages/client/sidebar/SpaceTabs.tsx @@ -1,7 +1,7 @@ import { - MouseEventHandler, - ReactNode, - RefObject, + type MouseEventHandler, + type ReactNode, + type RefObject, forwardRef, useCallback, useEffect, @@ -19,13 +19,13 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Text, config, toRem, } from 'folds'; import { useAtom, useAtomValue } from 'jotai'; -import { Room } from '$types/matrix-sdk'; +import { type Room } from '$types/matrix-sdk'; import { draggable, dropTargetForElements, @@ -34,7 +34,7 @@ import { import { attachInstruction, extractInstruction, - Instruction, + type Instruction, } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item'; import { autoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-scroll/element'; import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine'; @@ -64,9 +64,9 @@ import { getCanonicalAliasOrRoomId, isRoomAlias } from '$utils/matrix'; import { RoomAvatar } from '$components/room-avatar'; import { nameInitials, randomStr } from '$utils/common'; import { - ISidebarFolder, - SidebarItems, - TSidebarItem, + type ISidebarFolder, + type SidebarItems, + type TSidebarItem, makeCinnySpacesContent, parseSidebar, sidebarItemWithout, diff --git a/src/app/pages/client/space/RoomProvider.tsx b/src/app/pages/client/space/RoomProvider.tsx index 411efc163..26df3f26e 100644 --- a/src/app/pages/client/space/RoomProvider.tsx +++ b/src/app/pages/client/space/RoomProvider.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { useParams } from 'react-router-dom'; import { useAtom, useAtomValue } from 'jotai'; import { useSelectedRoom } from '$hooks/router/useSelectedRoom'; diff --git a/src/app/pages/client/space/Space.tsx b/src/app/pages/client/space/Space.tsx index 4eb7b117c..6d710f8b5 100644 --- a/src/app/pages/client/space/Space.tsx +++ b/src/app/pages/client/space/Space.tsx @@ -1,6 +1,6 @@ import { - MouseEventHandler, - ReactElement, + type MouseEventHandler, + type ReactElement, forwardRef, useCallback, useEffect, @@ -20,17 +20,17 @@ import { Menu, MenuItem, PopOut, - RectCords, + type RectCords, Spinner, Text, color, config, toRem, } from 'folds'; -import { useVirtualizer, VirtualItem } from '@tanstack/react-virtual'; +import { useVirtualizer, type VirtualItem } from '@tanstack/react-virtual'; import FocusTrap from 'focus-trap-react'; import { useNavigate } from 'react-router-dom'; -import { JoinRule, Room, RoomJoinRulesEventContent } from '$types/matrix-sdk'; +import { JoinRule, type Room, type RoomJoinRulesEventContent } from '$types/matrix-sdk'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { mDirectAtom } from '$state/mDirectList'; import { NavCategory, NavCategoryHeader, NavItem, NavItemContent, NavLink } from '$components/nav'; @@ -48,7 +48,7 @@ import { roomToUnreadAtom } from '$state/room/roomToUnread'; import { useCategoryHandler } from '$hooks/useCategoryHandler'; import { useNavToActivePathMapper } from '$hooks/useNavToActivePathMapper'; import { useRoomName } from '$hooks/useRoomMeta'; -import { HierarchyItem, useSpaceJoinedHierarchy } from '$hooks/useSpaceHierarchy'; +import { type HierarchyItem, useSpaceJoinedHierarchy } from '$hooks/useSpaceHierarchy'; import { allRoomsAtom } from '$state/room-list/roomList'; import { PageNav, PageNavContent, PageNavHeader } from '$components/page'; import { usePowerLevels } from '$hooks/usePowerLevels'; diff --git a/src/app/pages/client/space/SpaceProvider.tsx b/src/app/pages/client/space/SpaceProvider.tsx index cc2eb5bde..16ec9c199 100644 --- a/src/app/pages/client/space/SpaceProvider.tsx +++ b/src/app/pages/client/space/SpaceProvider.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { useParams } from 'react-router-dom'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useSpaces } from '$state/hooks/roomList'; diff --git a/src/app/pages/pathSearchParam.ts b/src/app/pages/pathSearchParam.ts index 813abc3d9..9bfedc3ea 100644 --- a/src/app/pages/pathSearchParam.ts +++ b/src/app/pages/pathSearchParam.ts @@ -1,4 +1,4 @@ -import { RoomSearchParams, DirectCreateSearchParams } from './paths'; +import { type RoomSearchParams, type DirectCreateSearchParams } from './paths'; type SearchParamsGetter = (searchParams: URLSearchParams) => T; diff --git a/src/app/pages/pathUtils.ts b/src/app/pages/pathUtils.ts index 3872c9290..778becc83 100644 --- a/src/app/pages/pathUtils.ts +++ b/src/app/pages/pathUtils.ts @@ -1,6 +1,6 @@ -import { generatePath, Path } from 'react-router-dom'; +import { generatePath, type Path } from 'react-router-dom'; import { trimLeadingSlash, trimTrailingSlash } from '$utils/common'; -import { HashRouterConfig } from '$hooks/useClientConfig'; +import { type HashRouterConfig } from '$hooks/useClientConfig'; import { DIRECT_CREATE_PATH, DIRECT_PATH, diff --git a/src/app/plugins/call/CallControl.ts b/src/app/plugins/call/CallControl.ts index c30ffc1c7..84c571cc1 100644 --- a/src/app/plugins/call/CallControl.ts +++ b/src/app/plugins/call/CallControl.ts @@ -1,7 +1,11 @@ -import { ClientWidgetApi } from 'matrix-widget-api'; +import { type ClientWidgetApi } from 'matrix-widget-api'; import EventEmitter from 'eventemitter3'; import { CallControlState } from './CallControlState'; -import { ElementMediaStateDetail, ElementMediaStatePayload, ElementWidgetActions } from './types'; +import { + type ElementMediaStateDetail, + type ElementMediaStatePayload, + ElementWidgetActions, +} from './types'; export enum CallControlEvent { StateUpdate = 'state_update', diff --git a/src/app/plugins/call/CallEmbed.ts b/src/app/plugins/call/CallEmbed.ts index 1a12211d4..f746e5969 100644 --- a/src/app/plugins/call/CallEmbed.ts +++ b/src/app/plugins/call/CallEmbed.ts @@ -1,28 +1,28 @@ import { ClientEvent, KnownMembership, - MatrixClient, - MatrixEvent, + type MatrixClient, + type MatrixEvent, MatrixEventEvent, - Room, + type Room, RoomStateEvent, } from 'matrix-js-sdk'; import { ClientWidgetApi, type IWidgetApiRequest, - IRoomEvent, - IWidget, + type IRoomEvent, + type IWidget, Widget, WidgetApiFromWidgetAction, WidgetApiToWidgetAction, - WidgetDriver, + type WidgetDriver, } from 'matrix-widget-api'; import { CallWidgetDriver } from './CallWidgetDriver'; import { trimTrailingSlash } from '../../utils/common'; import { ElementCallIntent, - ElementCallThemeKind, - ElementMediaStateDetail, + type ElementCallThemeKind, + type ElementMediaStateDetail, ElementWidgetActions, } from './types'; import { CallControl } from './CallControl'; diff --git a/src/app/plugins/call/CallWidgetDriver.ts b/src/app/plugins/call/CallWidgetDriver.ts index 6d94891f8..a53a7dca6 100644 --- a/src/app/plugins/call/CallWidgetDriver.ts +++ b/src/app/plugins/call/CallWidgetDriver.ts @@ -10,8 +10,8 @@ import { type IGetMediaConfigResult, UpdateDelayedEventAction, OpenIDRequestState, - SimpleObservable, - IOpenIDUpdate, + type SimpleObservable, + type IOpenIDUpdate, } from 'matrix-widget-api'; import { EventType, @@ -22,7 +22,7 @@ import { type SendDelayedEventResponse, type StateEvents, type TimelineEvents, - MatrixClient, + type MatrixClient, } from 'matrix-js-sdk'; import { getCallCapabilities } from './utils'; import { downloadMedia, mxcUrlToHttp } from '../../utils/matrix'; diff --git a/src/app/plugins/call/hooks.ts b/src/app/plugins/call/hooks.ts index f5b3ff933..25cf04f39 100644 --- a/src/app/plugins/call/hooks.ts +++ b/src/app/plugins/call/hooks.ts @@ -1,11 +1,11 @@ import { - ClientWidgetApi, - IWidgetApiAcknowledgeResponseData, - IWidgetApiRequestData, + type ClientWidgetApi, + type IWidgetApiAcknowledgeResponseData, + type IWidgetApiRequestData, } from 'matrix-widget-api'; import { useCallback, useEffect, useState } from 'react'; -import { CallControl, CallControlEvent } from './CallControl'; -import { CallControlState } from './CallControlState'; +import { type CallControl, CallControlEvent } from './CallControl'; +import { type CallControlState } from './CallControlState'; export const useClientWidgetApiEvent = ( api: ClientWidgetApi | undefined, diff --git a/src/app/plugins/custom-emoji/ImagePack.ts b/src/app/plugins/custom-emoji/ImagePack.ts index d7aa9941a..127b558ba 100644 --- a/src/app/plugins/custom-emoji/ImagePack.ts +++ b/src/app/plugins/custom-emoji/ImagePack.ts @@ -1,9 +1,9 @@ -import { MatrixEvent } from '$types/matrix-sdk'; +import { type MatrixEvent } from '$types/matrix-sdk'; import { PackAddress } from './PackAddress'; -import { PackImageReader } from './PackImageReader'; +import { type PackImageReader } from './PackImageReader'; import { PackImagesReader } from './PackImagesReader'; import { PackMetaReader } from './PackMetaReader'; -import { ImageUsage, PackContent } from './types'; +import { ImageUsage, type PackContent } from './types'; export class ImagePack { public readonly id: string; diff --git a/src/app/plugins/custom-emoji/PackImageReader.ts b/src/app/plugins/custom-emoji/PackImageReader.ts index 51e5114f2..0b083fcef 100644 --- a/src/app/plugins/custom-emoji/PackImageReader.ts +++ b/src/app/plugins/custom-emoji/PackImageReader.ts @@ -1,5 +1,5 @@ -import { IImageInfo } from '$types/matrix/common'; -import { ImageUsage, PackImage } from './types'; +import { type IImageInfo } from '$types/matrix/common'; +import { ImageUsage, type PackImage } from './types'; export class PackImageReader { public readonly shortcode: string; diff --git a/src/app/plugins/custom-emoji/PackImagesReader.ts b/src/app/plugins/custom-emoji/PackImagesReader.ts index 1531218ae..a75657d10 100644 --- a/src/app/plugins/custom-emoji/PackImagesReader.ts +++ b/src/app/plugins/custom-emoji/PackImagesReader.ts @@ -1,5 +1,5 @@ import { PackImageReader } from './PackImageReader'; -import { PackImages } from './types'; +import { type PackImages } from './types'; export class PackImagesReader { private readonly rawImages: PackImages; diff --git a/src/app/plugins/custom-emoji/PackMetaReader.ts b/src/app/plugins/custom-emoji/PackMetaReader.ts index 537addf46..5153e2deb 100644 --- a/src/app/plugins/custom-emoji/PackMetaReader.ts +++ b/src/app/plugins/custom-emoji/PackMetaReader.ts @@ -1,4 +1,4 @@ -import { PackMeta, ImageUsage } from './types'; +import { type PackMeta, ImageUsage } from './types'; export class PackMetaReader { private readonly meta: PackMeta; diff --git a/src/app/plugins/custom-emoji/imagePackCache.ts b/src/app/plugins/custom-emoji/imagePackCache.ts index f15f1fba0..3773d00f0 100644 --- a/src/app/plugins/custom-emoji/imagePackCache.ts +++ b/src/app/plugins/custom-emoji/imagePackCache.ts @@ -15,7 +15,7 @@ import { PackAddress } from './PackAddress'; import { ImagePack } from './ImagePack'; -import { PackContent, PackImages } from './types'; +import { type PackContent, type PackImages } from './types'; // -------------------------------------------------------------------------- // Types stored in localStorage diff --git a/src/app/plugins/custom-emoji/types.ts b/src/app/plugins/custom-emoji/types.ts index 8794beda5..8d84f4c37 100644 --- a/src/app/plugins/custom-emoji/types.ts +++ b/src/app/plugins/custom-emoji/types.ts @@ -1,4 +1,4 @@ -import { IImageInfo } from '$types/matrix/common'; +import { type IImageInfo } from '$types/matrix/common'; // https://github.com/Sorunome/matrix-doc/blob/soru/emotes/proposals/2545-emotes.md diff --git a/src/app/plugins/custom-emoji/utils.ts b/src/app/plugins/custom-emoji/utils.ts index 4b35cad19..7e7f3d04b 100644 --- a/src/app/plugins/custom-emoji/utils.ts +++ b/src/app/plugins/custom-emoji/utils.ts @@ -1,11 +1,11 @@ -import { MatrixClient, MatrixEvent, Room } from '$types/matrix-sdk'; +import { type MatrixClient, type MatrixEvent, type Room } from '$types/matrix-sdk'; import { StateEvent } from '$types/matrix/room'; import { getAccountData, getStateEvent, getStateEvents } from '$utils/room'; import { AccountDataEvent } from '$types/matrix/accountData'; -import { ImageUsage } from './types'; +import { type ImageUsage } from './types'; import { ImagePack } from './ImagePack'; -import { PackMetaReader } from './PackMetaReader'; -import { PackAddress } from './PackAddress'; +import { type PackMetaReader } from './PackMetaReader'; +import { type PackAddress } from './PackAddress'; export function packAddressEqual(a1?: PackAddress, a2?: PackAddress): boolean { if (!a1 && !a2) return true; diff --git a/src/app/plugins/emoji.ts b/src/app/plugins/emoji.ts index 2462b7ffe..d75491b38 100644 --- a/src/app/plugins/emoji.ts +++ b/src/app/plugins/emoji.ts @@ -1,4 +1,4 @@ -import { CompactEmoji, fromUnicodeToHexcode } from 'emojibase'; +import { type CompactEmoji, fromUnicodeToHexcode } from 'emojibase'; import emojisData from 'emojibase-data/en/compact.json'; import joypixels from 'emojibase-data/en/shortcodes/joypixels.json'; import emojibase from 'emojibase-data/en/shortcodes/emojibase.json'; diff --git a/src/app/plugins/markdown/block/parser.ts b/src/app/plugins/markdown/block/parser.ts index b56d3e3b6..75b457df5 100644 --- a/src/app/plugins/markdown/block/parser.ts +++ b/src/app/plugins/markdown/block/parser.ts @@ -10,7 +10,7 @@ import { HorizontalRuleRule, } from './rules'; import { runBlockRule } from './runner'; -import { BlockMDParser } from './type'; +import { type BlockMDParser } from './type'; /** * Parses block-level markdown text into HTML using defined block rules. diff --git a/src/app/plugins/markdown/block/rules.ts b/src/app/plugins/markdown/block/rules.ts index a5bfe2635..38d3d3f82 100644 --- a/src/app/plugins/markdown/block/rules.ts +++ b/src/app/plugins/markdown/block/rules.ts @@ -1,4 +1,4 @@ -import { BlockMDRule } from './type'; +import { type BlockMDRule } from './type'; const HEADING_REG_1 = /^(#{1,6}) +(.+)\n?/m; export const HeadingRule: BlockMDRule = { diff --git a/src/app/plugins/markdown/block/runner.ts b/src/app/plugins/markdown/block/runner.ts index 8e80c95ff..a151ab5d0 100644 --- a/src/app/plugins/markdown/block/runner.ts +++ b/src/app/plugins/markdown/block/runner.ts @@ -1,5 +1,5 @@ import { replaceMatch } from '$plugins/markdown/internal'; -import { BlockMDParser, BlockMDRule } from './type'; +import { type BlockMDParser, type BlockMDRule } from './type'; /** * Parses block-level markdown text into HTML using defined block rules. diff --git a/src/app/plugins/markdown/block/type.ts b/src/app/plugins/markdown/block/type.ts index 9462e1d50..8bebe6f2c 100644 --- a/src/app/plugins/markdown/block/type.ts +++ b/src/app/plugins/markdown/block/type.ts @@ -1,4 +1,4 @@ -import { MatchResult, MatchRule } from '$plugins/markdown/internal'; +import { type MatchResult, type MatchRule } from '$plugins/markdown/internal'; /** * Type for a function that parses block-level markdown into HTML. diff --git a/src/app/plugins/markdown/inline/parser.ts b/src/app/plugins/markdown/inline/parser.ts index 37c71a661..f8ded2459 100644 --- a/src/app/plugins/markdown/inline/parser.ts +++ b/src/app/plugins/markdown/inline/parser.ts @@ -10,7 +10,7 @@ import { UnderlineRule, } from './rules'; import { runInlineRule, runInlineRules } from './runner'; -import { InlineMDParser } from './type'; +import { type InlineMDParser } from './type'; const LeveledRules = [ BoldRule, diff --git a/src/app/plugins/markdown/inline/rules.ts b/src/app/plugins/markdown/inline/rules.ts index 77bcbd57a..fae82a458 100644 --- a/src/app/plugins/markdown/inline/rules.ts +++ b/src/app/plugins/markdown/inline/rules.ts @@ -1,4 +1,4 @@ -import { InlineMDRule } from './type'; +import { type InlineMDRule } from './type'; const MIN_ANY = '(.+?)'; const URL_NEG_LB = '(? = (item) => { const shortcode = `:${item.shortcode}:`; diff --git a/src/app/plugins/via-servers.ts b/src/app/plugins/via-servers.ts index e789e5f8f..8e7c44c3b 100644 --- a/src/app/plugins/via-servers.ts +++ b/src/app/plugins/via-servers.ts @@ -1,6 +1,6 @@ -import { Room } from '$types/matrix-sdk'; -import { IRoomCreateContent, StateEvent } from '$types/matrix/room'; -import { IPowerLevels } from '$hooks/usePowerLevels'; +import { type Room } from '$types/matrix-sdk'; +import { type IRoomCreateContent, StateEvent } from '$types/matrix/room'; +import { type IPowerLevels } from '$hooks/usePowerLevels'; import { creatorsSupported, getMxIdServer } from '$utils/matrix'; import { getStateEvent } from '$utils/room'; diff --git a/src/app/state/backupRestore.ts b/src/app/state/backupRestore.ts index 9c1c11479..223a8e0fc 100644 --- a/src/app/state/backupRestore.ts +++ b/src/app/state/backupRestore.ts @@ -1,5 +1,5 @@ import { atom } from 'jotai'; -import { ImportRoomKeyProgressData, ImportRoomKeyStage } from '$types/matrix-sdk'; +import { type ImportRoomKeyProgressData, ImportRoomKeyStage } from '$types/matrix-sdk'; export enum BackupProgressStatus { Idle, diff --git a/src/app/state/callEmbed.ts b/src/app/state/callEmbed.ts index b05055c43..126520122 100644 --- a/src/app/state/callEmbed.ts +++ b/src/app/state/callEmbed.ts @@ -1,6 +1,6 @@ import { atom } from 'jotai'; import * as Sentry from '@sentry/react'; -import { CallEmbed } from '../plugins/call'; +import { type CallEmbed } from '../plugins/call'; const baseCallEmbedAtom = atom(undefined); diff --git a/src/app/state/callPreferences.ts b/src/app/state/callPreferences.ts index a8e82067f..541f610c3 100644 --- a/src/app/state/callPreferences.ts +++ b/src/app/state/callPreferences.ts @@ -1,4 +1,4 @@ -import { WritableAtom } from 'jotai'; +import { type WritableAtom } from 'jotai'; import { atomWithLocalStorage, getLocalStorageItem, diff --git a/src/app/state/closedLobbyCategories.ts b/src/app/state/closedLobbyCategories.ts index 3c5c99e16..6e1b2325e 100644 --- a/src/app/state/closedLobbyCategories.ts +++ b/src/app/state/closedLobbyCategories.ts @@ -1,4 +1,4 @@ -import { WritableAtom, atom } from 'jotai'; +import { type WritableAtom, atom } from 'jotai'; import { produce } from 'immer'; import { atomWithLocalStorage, diff --git a/src/app/state/closedNavCategories.ts b/src/app/state/closedNavCategories.ts index 8c2348902..4126d6e73 100644 --- a/src/app/state/closedNavCategories.ts +++ b/src/app/state/closedNavCategories.ts @@ -1,4 +1,4 @@ -import { WritableAtom, atom } from 'jotai'; +import { type WritableAtom, atom } from 'jotai'; import { produce } from 'immer'; import { atomWithLocalStorage, diff --git a/src/app/state/createRoomModal.ts b/src/app/state/createRoomModal.ts index 16757ec71..d341da2bc 100644 --- a/src/app/state/createRoomModal.ts +++ b/src/app/state/createRoomModal.ts @@ -1,5 +1,5 @@ import { atom } from 'jotai'; -import { CreateRoomType } from '$components/create-room/types'; +import { type CreateRoomType } from '$components/create-room/types'; export type CreateRoomModalState = { spaceId?: string; diff --git a/src/app/state/hooks/callPreferences.ts b/src/app/state/hooks/callPreferences.ts index d02700f05..ce75555a3 100644 --- a/src/app/state/hooks/callPreferences.ts +++ b/src/app/state/hooks/callPreferences.ts @@ -1,6 +1,6 @@ import { createContext, useCallback, useContext } from 'react'; import { useAtom } from 'jotai'; -import { CallPreferences, CallPreferencesAtom } from '../callPreferences'; +import { type CallPreferences, type CallPreferencesAtom } from '../callPreferences'; const CallPreferencesAtomContext = createContext(null); export const CallPreferencesProvider = CallPreferencesAtomContext.Provider; diff --git a/src/app/state/hooks/closedLobbyCategories.ts b/src/app/state/hooks/closedLobbyCategories.ts index 19843b6e6..eed808009 100644 --- a/src/app/state/hooks/closedLobbyCategories.ts +++ b/src/app/state/hooks/closedLobbyCategories.ts @@ -1,5 +1,5 @@ import { createContext, useContext } from 'react'; -import { ClosedLobbyCategoriesAtom } from '$state/closedLobbyCategories'; +import { type ClosedLobbyCategoriesAtom } from '$state/closedLobbyCategories'; const ClosedLobbyCategoriesAtomContext = createContext(null); export const ClosedLobbyCategoriesProvider = ClosedLobbyCategoriesAtomContext.Provider; diff --git a/src/app/state/hooks/closedNavCategories.ts b/src/app/state/hooks/closedNavCategories.ts index 38a962e48..ee95e19b6 100644 --- a/src/app/state/hooks/closedNavCategories.ts +++ b/src/app/state/hooks/closedNavCategories.ts @@ -1,5 +1,5 @@ import { createContext, useContext } from 'react'; -import { ClosedNavCategoriesAtom } from '$state/closedNavCategories'; +import { type ClosedNavCategoriesAtom } from '$state/closedNavCategories'; const ClosedNavCategoriesAtomContext = createContext(null); export const ClosedNavCategoriesProvider = ClosedNavCategoriesAtomContext.Provider; diff --git a/src/app/state/hooks/createRoomModal.ts b/src/app/state/hooks/createRoomModal.ts index 8c1ec8b70..cb7f076b9 100644 --- a/src/app/state/hooks/createRoomModal.ts +++ b/src/app/state/hooks/createRoomModal.ts @@ -1,7 +1,7 @@ import { useCallback } from 'react'; import { useAtomValue, useSetAtom } from 'jotai'; -import { CreateRoomType } from '$components/create-room/types'; -import { createRoomModalAtom, CreateRoomModalState } from '$state/createRoomModal'; +import { type CreateRoomType } from '$components/create-room/types'; +import { createRoomModalAtom, type CreateRoomModalState } from '$state/createRoomModal'; export const useCreateRoomModalState = (): CreateRoomModalState | undefined => { const data = useAtomValue(createRoomModalAtom); diff --git a/src/app/state/hooks/createSpaceModal.ts b/src/app/state/hooks/createSpaceModal.ts index 4661712d0..7edf1a0e1 100644 --- a/src/app/state/hooks/createSpaceModal.ts +++ b/src/app/state/hooks/createSpaceModal.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react'; import { useAtomValue, useSetAtom } from 'jotai'; -import { createSpaceModalAtom, CreateSpaceModalState } from '$state/createSpaceModal'; +import { createSpaceModalAtom, type CreateSpaceModalState } from '$state/createSpaceModal'; export const useCreateSpaceModalState = (): CreateSpaceModalState | undefined => { const data = useAtomValue(createSpaceModalAtom); diff --git a/src/app/state/hooks/navToActivePath.ts b/src/app/state/hooks/navToActivePath.ts index 412247600..cdd22253c 100644 --- a/src/app/state/hooks/navToActivePath.ts +++ b/src/app/state/hooks/navToActivePath.ts @@ -1,5 +1,5 @@ import { createContext, useContext } from 'react'; -import { NavToActivePathAtom } from '$state/navToActivePath'; +import { type NavToActivePathAtom } from '$state/navToActivePath'; const NavToActivePathAtomContext = createContext(null); export const NavToActivePathProvider = NavToActivePathAtomContext.Provider; diff --git a/src/app/state/hooks/openedSidebarFolder.ts b/src/app/state/hooks/openedSidebarFolder.ts index 6a5e61f92..1d8f32339 100644 --- a/src/app/state/hooks/openedSidebarFolder.ts +++ b/src/app/state/hooks/openedSidebarFolder.ts @@ -1,5 +1,5 @@ import { createContext, useContext } from 'react'; -import { OpenedSidebarFolderAtom } from '$state/openedSidebarFolder'; +import { type OpenedSidebarFolderAtom } from '$state/openedSidebarFolder'; const OpenedSidebarFolderAtomContext = createContext(null); export const OpenedSidebarFolderProvider = OpenedSidebarFolderAtomContext.Provider; diff --git a/src/app/state/hooks/roomList.ts b/src/app/state/hooks/roomList.ts index 708909266..7de175f6a 100644 --- a/src/app/state/hooks/roomList.ts +++ b/src/app/state/hooks/roomList.ts @@ -1,9 +1,9 @@ -import { Atom, useAtomValue } from 'jotai'; +import { type Atom, useAtomValue } from 'jotai'; import { selectAtom } from 'jotai/utils'; -import { MatrixClient } from '$types/matrix-sdk'; +import { type MatrixClient } from '$types/matrix-sdk'; import { useCallback, useMemo } from 'react'; import { getAllParents, isRoom, isSpace, isUnsupportedRoom } from '$utils/room'; -import { RoomToParents } from '$types/matrix/room'; +import { type RoomToParents } from '$types/matrix/room'; import { compareRoomsEqual } from '$state/room-list/utils'; export type RoomsAtom = Atom; diff --git a/src/app/state/hooks/roomSettings.ts b/src/app/state/hooks/roomSettings.ts index 8a0784870..f53b29f93 100644 --- a/src/app/state/hooks/roomSettings.ts +++ b/src/app/state/hooks/roomSettings.ts @@ -1,6 +1,10 @@ import { useCallback } from 'react'; import { useAtomValue, useSetAtom } from 'jotai'; -import { roomSettingsAtom, RoomSettingsPage, RoomSettingsState } from '$state/roomSettings'; +import { + roomSettingsAtom, + type RoomSettingsPage, + type RoomSettingsState, +} from '$state/roomSettings'; export const useRoomSettingsState = (): RoomSettingsState | undefined => { const data = useAtomValue(roomSettingsAtom); diff --git a/src/app/state/hooks/settings.ts b/src/app/state/hooks/settings.ts index d28c48336..2f49f98fd 100644 --- a/src/app/state/hooks/settings.ts +++ b/src/app/state/hooks/settings.ts @@ -1,7 +1,7 @@ import { atom, useAtomValue, useSetAtom } from 'jotai'; import { selectAtom } from 'jotai/utils'; import { useMemo } from 'react'; -import { Settings, settingsAtom as sAtom } from '$state/settings'; +import { type Settings, type settingsAtom as sAtom } from '$state/settings'; export type SettingSetter = | Settings[K] diff --git a/src/app/state/hooks/spaceSettings.ts b/src/app/state/hooks/spaceSettings.ts index ab3b8da20..e5672efc6 100644 --- a/src/app/state/hooks/spaceSettings.ts +++ b/src/app/state/hooks/spaceSettings.ts @@ -1,6 +1,10 @@ import { useCallback } from 'react'; import { useAtomValue, useSetAtom } from 'jotai'; -import { spaceSettingsAtom, SpaceSettingsPage, SpaceSettingsState } from '$state/spaceSettings'; +import { + spaceSettingsAtom, + type SpaceSettingsPage, + type SpaceSettingsState, +} from '$state/spaceSettings'; export const useSpaceSettingsState = (): SpaceSettingsState | undefined => { const data = useAtomValue(spaceSettingsAtom); diff --git a/src/app/state/hooks/unread.ts b/src/app/state/hooks/unread.ts index ac94bb6a3..87e705a37 100644 --- a/src/app/state/hooks/unread.ts +++ b/src/app/state/hooks/unread.ts @@ -1,8 +1,8 @@ import { useCallback } from 'react'; import { useAtomValue } from 'jotai'; import { selectAtom } from 'jotai/utils'; -import { RoomToUnread, Unread } from '$types/matrix/room'; -import { roomToUnreadAtom, unreadEqual } from '$state/room/roomToUnread'; +import { type RoomToUnread, type Unread } from '$types/matrix/room'; +import { type roomToUnreadAtom, unreadEqual } from '$state/room/roomToUnread'; const compareUnreadEqual = (u1?: Unread, u2?: Unread): boolean => { if (!u1 || !u2) return false; diff --git a/src/app/state/hooks/useBindAtoms.ts b/src/app/state/hooks/useBindAtoms.ts index 1d68295d0..6c1d602ed 100644 --- a/src/app/state/hooks/useBindAtoms.ts +++ b/src/app/state/hooks/useBindAtoms.ts @@ -1,4 +1,4 @@ -import { MatrixClient } from '$types/matrix-sdk'; +import { type MatrixClient } from '$types/matrix-sdk'; import { allInvitesAtom, useBindAllInvitesAtom } from '$state/room-list/inviteList'; import { allRoomsAtom, useBindAllRoomsAtom } from '$state/room-list/roomList'; import { mDirectAtom, useBindMDirectAtom } from '$state/mDirectList'; diff --git a/src/app/state/hooks/userRoomProfile.ts b/src/app/state/hooks/userRoomProfile.ts index c0e8edcb6..fe8a2df00 100644 --- a/src/app/state/hooks/userRoomProfile.ts +++ b/src/app/state/hooks/userRoomProfile.ts @@ -1,8 +1,8 @@ import { useCallback } from 'react'; import { useAtomValue, useSetAtom } from 'jotai'; -import { Position, RectCords } from 'folds'; -import { UserProfile } from '$hooks/useUserProfile'; -import { userRoomProfileAtom, UserRoomProfileState } from '$state/userRoomProfile'; +import { type Position, type RectCords } from 'folds'; +import { type UserProfile } from '$hooks/useUserProfile'; +import { userRoomProfileAtom, type UserRoomProfileState } from '$state/userRoomProfile'; export const useUserRoomProfileState = (): UserRoomProfileState | undefined => { const data = useAtomValue(userRoomProfileAtom); diff --git a/src/app/state/mDirectList.ts b/src/app/state/mDirectList.ts index 89b3721f4..a80b085b2 100644 --- a/src/app/state/mDirectList.ts +++ b/src/app/state/mDirectList.ts @@ -1,5 +1,5 @@ import { atom, useSetAtom } from 'jotai'; -import { ClientEvent, MatrixClient, MatrixEvent } from '$types/matrix-sdk'; +import { ClientEvent, type MatrixClient, type MatrixEvent } from '$types/matrix-sdk'; import { useEffect } from 'react'; import { AccountDataEvent } from '$types/matrix/accountData'; import { getAccountData, getMDirects } from '$utils/room'; diff --git a/src/app/state/modal.ts b/src/app/state/modal.ts index 5b54dc637..bc027ec7d 100644 --- a/src/app/state/modal.ts +++ b/src/app/state/modal.ts @@ -1,5 +1,5 @@ import { atom } from 'jotai'; -import { MatrixEvent, Room, Relations } from '$types/matrix-sdk'; +import { type MatrixEvent, type Room, type Relations } from '$types/matrix-sdk'; export enum ModalType { Delete = 'delete', diff --git a/src/app/state/navToActivePath.ts b/src/app/state/navToActivePath.ts index affc313da..47191f177 100644 --- a/src/app/state/navToActivePath.ts +++ b/src/app/state/navToActivePath.ts @@ -1,6 +1,6 @@ -import { WritableAtom, atom } from 'jotai'; +import { type WritableAtom, atom } from 'jotai'; import { produce } from 'immer'; -import { Path } from 'react-router-dom'; +import { type Path } from 'react-router-dom'; import { atomWithLocalStorage, getLocalStorageItem, diff --git a/src/app/state/nicknames.ts b/src/app/state/nicknames.ts index ca67302a1..d55f73620 100644 --- a/src/app/state/nicknames.ts +++ b/src/app/state/nicknames.ts @@ -1,5 +1,5 @@ import { atom } from 'jotai'; -import { MatrixClient } from '$types/matrix-sdk'; +import { type MatrixClient } from '$types/matrix-sdk'; import { AccountDataEvent } from '$types/matrix/accountData'; export const NICKNAMES_KEY = 'sableNicknames'; diff --git a/src/app/state/openedSidebarFolder.ts b/src/app/state/openedSidebarFolder.ts index 743160d4b..837335064 100644 --- a/src/app/state/openedSidebarFolder.ts +++ b/src/app/state/openedSidebarFolder.ts @@ -1,4 +1,4 @@ -import { WritableAtom, atom } from 'jotai'; +import { type WritableAtom, atom } from 'jotai'; import { produce } from 'immer'; import { atomWithLocalStorage, diff --git a/src/app/state/room-list/inviteList.ts b/src/app/state/room-list/inviteList.ts index 4d33b3323..132856039 100644 --- a/src/app/state/room-list/inviteList.ts +++ b/src/app/state/room-list/inviteList.ts @@ -1,8 +1,8 @@ -import { atom, WritableAtom } from 'jotai'; -import { MatrixClient } from '$types/matrix-sdk'; +import { atom, type WritableAtom } from 'jotai'; +import { type MatrixClient } from '$types/matrix-sdk'; import { useMemo } from 'react'; import { Membership } from '$types/matrix/room'; -import { RoomsAction, useBindRoomsWithMembershipsAtom } from './utils'; +import { type RoomsAction, useBindRoomsWithMembershipsAtom } from './utils'; const baseRoomsAtom = atom([]); export const allInvitesAtom = atom( diff --git a/src/app/state/room-list/roomList.ts b/src/app/state/room-list/roomList.ts index c3437d930..5e1fce982 100644 --- a/src/app/state/room-list/roomList.ts +++ b/src/app/state/room-list/roomList.ts @@ -1,8 +1,8 @@ import { atom } from 'jotai'; -import { MatrixClient } from '$types/matrix-sdk'; +import { type MatrixClient } from '$types/matrix-sdk'; import { useMemo } from 'react'; import { Membership } from '$types/matrix/room'; -import { RoomsAction, useBindRoomsWithMembershipsAtom } from './utils'; +import { type RoomsAction, useBindRoomsWithMembershipsAtom } from './utils'; const baseRoomsAtom = atom([]); export const allRoomsAtom = atom( diff --git a/src/app/state/room-list/utils.ts b/src/app/state/room-list/utils.ts index 9758a1ba6..aad1ecf44 100644 --- a/src/app/state/room-list/utils.ts +++ b/src/app/state/room-list/utils.ts @@ -1,7 +1,7 @@ -import { useSetAtom, WritableAtom } from 'jotai'; -import { ClientEvent, MatrixClient, Room, RoomEvent } from '$types/matrix-sdk'; +import { useSetAtom, type WritableAtom } from 'jotai'; +import { ClientEvent, type MatrixClient, type Room, RoomEvent } from '$types/matrix-sdk'; import { useEffect } from 'react'; -import { Membership } from '$types/matrix/room'; +import { type Membership } from '$types/matrix/room'; export type RoomsAction = | { diff --git a/src/app/state/room/roomInputDrafts.ts b/src/app/state/room/roomInputDrafts.ts index 4b167f220..852c84ac2 100644 --- a/src/app/state/room/roomInputDrafts.ts +++ b/src/app/state/room/roomInputDrafts.ts @@ -1,9 +1,9 @@ import { atom } from 'jotai'; import { atomFamily } from 'jotai/utils'; -import { Descendant } from 'slate'; -import { EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; -import { IEventRelation } from '$types/matrix-sdk'; -import { TUploadContent } from '$utils/matrix'; +import { type Descendant } from 'slate'; +import { type EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; +import { type IEventRelation } from '$types/matrix-sdk'; +import { type TUploadContent } from '$utils/matrix'; import { createUploadAtomFamily } from '$state/upload'; import { createListAtom } from '$state/list'; diff --git a/src/app/state/room/roomToParents.ts b/src/app/state/room/roomToParents.ts index 65b0a3a36..eda09678f 100644 --- a/src/app/state/room/roomToParents.ts +++ b/src/app/state/room/roomToParents.ts @@ -2,15 +2,15 @@ import { produce } from 'immer'; import { atom, useSetAtom } from 'jotai'; import { ClientEvent, - MatrixClient, - MatrixEvent, - Room, + type MatrixClient, + type MatrixEvent, + type Room, RoomEvent, RoomStateEvent, SyncState, } from '$types/matrix-sdk'; import { useCallback, useEffect } from 'react'; -import { Membership, RoomToParents, StateEvent } from '$types/matrix/room'; +import { Membership, type RoomToParents, StateEvent } from '$types/matrix/room'; import { getRoomToParents, getSpaceChildren, diff --git a/src/app/state/room/roomToUnread.ts b/src/app/state/room/roomToUnread.ts index e70271d2c..06a4b8421 100644 --- a/src/app/state/room/roomToUnread.ts +++ b/src/app/state/room/roomToUnread.ts @@ -1,14 +1,14 @@ import { produce } from 'immer'; import { atom, useAtomValue, useSetAtom } from 'jotai'; import { - IRoomTimelineData, - MatrixClient, - MatrixEvent, - Room, + type IRoomTimelineData, + type MatrixClient, + type MatrixEvent, + type Room, RoomEvent, SyncState, - ReceiptContent, - ReceiptType, + type ReceiptContent, + type ReceiptType, EventType, ClientEvent, } from '$types/matrix-sdk'; @@ -16,9 +16,9 @@ import { useCallback, useEffect, useRef } from 'react'; import { Membership, NotificationType, - RoomToUnread, - UnreadInfo, - Unread, + type RoomToUnread, + type UnreadInfo, + type Unread, StateEvent, } from '$types/matrix/room'; import { diff --git a/src/app/state/sessions.ts b/src/app/state/sessions.ts index aadf20ce9..b90e2e650 100644 --- a/src/app/state/sessions.ts +++ b/src/app/state/sessions.ts @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { atom } from 'jotai'; import { createLogger } from '$utils/debug'; import { diff --git a/src/app/state/typingMembers.ts b/src/app/state/typingMembers.ts index 9f2a357b7..1e31cab0b 100644 --- a/src/app/state/typingMembers.ts +++ b/src/app/state/typingMembers.ts @@ -1,6 +1,10 @@ import { produce } from 'immer'; import { atom, useSetAtom } from 'jotai'; -import { MatrixClient, RoomMemberEvent, RoomMemberEventHandlerMap } from '$types/matrix-sdk'; +import { + type MatrixClient, + RoomMemberEvent, + type RoomMemberEventHandlerMap, +} from '$types/matrix-sdk'; import { useEffect } from 'react'; import { useSetting } from './hooks/settings'; import { settingsAtom } from './settings'; diff --git a/src/app/state/upload.ts b/src/app/state/upload.ts index 827e4bfd4..125db34f2 100644 --- a/src/app/state/upload.ts +++ b/src/app/state/upload.ts @@ -1,9 +1,14 @@ import { atom, useAtom } from 'jotai'; import { atomFamily } from 'jotai/utils'; -import { MatrixClient, UploadResponse, UploadProgress, MatrixError } from '$types/matrix-sdk'; +import { + type MatrixClient, + type UploadResponse, + type UploadProgress, + type MatrixError, +} from '$types/matrix-sdk'; import { useCallback } from 'react'; import { useThrottle } from '$hooks/useThrottle'; -import { uploadContent, TUploadContent } from '$utils/matrix'; +import { uploadContent, type TUploadContent } from '$utils/matrix'; export enum UploadStatus { Idle = 'idle', diff --git a/src/app/state/userRoomProfile.ts b/src/app/state/userRoomProfile.ts index 04540fcd2..1ed20a3a0 100644 --- a/src/app/state/userRoomProfile.ts +++ b/src/app/state/userRoomProfile.ts @@ -1,4 +1,4 @@ -import { Position, RectCords } from 'folds'; +import { type Position, type RectCords } from 'folds'; import { atom } from 'jotai'; import type { UserProfile } from '$hooks/useUserProfile'; diff --git a/src/app/styles/ContainerColor.css.ts b/src/app/styles/ContainerColor.css.ts index cefc5256a..2f8310751 100644 --- a/src/app/styles/ContainerColor.css.ts +++ b/src/app/styles/ContainerColor.css.ts @@ -1,6 +1,6 @@ -import { ComplexStyleRule } from '@vanilla-extract/css'; -import { RecipeVariants, recipe } from '@vanilla-extract/recipes'; -import { ContainerColor as TContainerColor, DefaultReset, color, config } from 'folds'; +import { type ComplexStyleRule } from '@vanilla-extract/css'; +import { type RecipeVariants, recipe } from '@vanilla-extract/recipes'; +import { type ContainerColor as TContainerColor, DefaultReset, color, config } from 'folds'; const getVariant = (variant: TContainerColor): ComplexStyleRule => ({ vars: { diff --git a/src/app/utils/addStickerToDefaultStickerPack.ts b/src/app/utils/addStickerToDefaultStickerPack.ts index a9715a05f..d0d40d8b0 100644 --- a/src/app/utils/addStickerToDefaultStickerPack.ts +++ b/src/app/utils/addStickerToDefaultStickerPack.ts @@ -1,7 +1,7 @@ -import { PackContent, ImageUsage } from '$plugins/custom-emoji'; +import { type PackContent, ImageUsage } from '$plugins/custom-emoji'; import { AccountDataEvent } from '$types/matrix/accountData'; -import { IImageInfo } from '$types/matrix/common'; -import { MatrixClient } from 'matrix-js-sdk'; +import { type IImageInfo } from '$types/matrix/common'; +import { type MatrixClient } from 'matrix-js-sdk'; // Utility function to add a sticker to the default sticker pack // For now this only works for unencrypted stickers diff --git a/src/app/utils/common.ts b/src/app/utils/common.ts index fb1e0b16b..8a7fd79a5 100644 --- a/src/app/utils/common.ts +++ b/src/app/utils/common.ts @@ -1,4 +1,4 @@ -import { IconName, IconSrc } from 'folds'; +import { type IconName, type IconSrc } from 'folds'; export const bytesToSize = (bytes: number): string => { const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; diff --git a/src/app/utils/delayedEvents.ts b/src/app/utils/delayedEvents.ts index 488c51d1c..bbf6245f4 100644 --- a/src/app/utils/delayedEvents.ts +++ b/src/app/utils/delayedEvents.ts @@ -1,12 +1,13 @@ import { EventType, - IContent, - MatrixClient, + type IContent, + type MatrixClient, MatrixEvent, - Room, + type Room, UpdateDelayedEventAction, + type DelayedEventInfo, + type SendDelayedEventResponse, } from '$types/matrix-sdk'; -import type { DelayedEventInfo, SendDelayedEventResponse } from '$types/matrix-sdk'; // Grab types needed for encryption interface EncryptableBackend { diff --git a/src/app/utils/keyboard.ts b/src/app/utils/keyboard.ts index ad0463dd1..5933deeef 100644 --- a/src/app/utils/keyboard.ts +++ b/src/app/utils/keyboard.ts @@ -1,5 +1,5 @@ import { isKeyHotkey } from 'is-hotkey'; -import { KeyboardEventHandler } from 'react'; +import { type KeyboardEventHandler } from 'react'; export interface KeyboardEventLike { key: string; diff --git a/src/app/utils/matrix-crypto.ts b/src/app/utils/matrix-crypto.ts index 144a51dfe..da69e01cc 100644 --- a/src/app/utils/matrix-crypto.ts +++ b/src/app/utils/matrix-crypto.ts @@ -1,4 +1,4 @@ -import { CryptoApi } from '$types/matrix-sdk'; +import { type CryptoApi } from '$types/matrix-sdk'; export const verifiedDevice = async ( api: CryptoApi, diff --git a/src/app/utils/matrix-uia.ts b/src/app/utils/matrix-uia.ts index 4fc10e448..6a6af369f 100644 --- a/src/app/utils/matrix-uia.ts +++ b/src/app/utils/matrix-uia.ts @@ -1,4 +1,4 @@ -import { AuthType, IAuthData, UIAFlow } from '$types/matrix-sdk'; +import { AuthType, type IAuthData, type UIAFlow } from '$types/matrix-sdk'; export const getSupportedUIAFlows = (uiaFlows: UIAFlow[], supportedStages: string[]): UIAFlow[] => { const supportedUIAFlows = uiaFlows.filter((flow) => diff --git a/src/app/utils/matrix.ts b/src/app/utils/matrix.ts index f04f71d90..f7562ce29 100644 --- a/src/app/utils/matrix.ts +++ b/src/app/utils/matrix.ts @@ -1,21 +1,21 @@ import { - EncryptedAttachmentInfo, + type EncryptedAttachmentInfo, decryptAttachment, encryptAttachment, } from 'browser-encrypt-attachment'; import { EventTimeline, - EventTimelineSet, - MatrixClient, + type EventTimelineSet, + type MatrixClient, MatrixError, - MatrixEvent, - Room, - RoomMember, - UploadProgress, - UploadResponse, + type MatrixEvent, + type Room, + type RoomMember, + type UploadProgress, + type UploadResponse, } from '$types/matrix-sdk'; import to from 'await-to-js'; -import { IImageInfo, IThumbnailContent, IVideoInfo } from '$types/matrix/common'; +import { type IImageInfo, type IThumbnailContent, type IVideoInfo } from '$types/matrix/common'; import { AccountDataEvent } from '$types/matrix/accountData'; import { Membership, MessageEvent, StateEvent } from '$types/matrix/room'; import * as Sentry from '@sentry/react'; diff --git a/src/app/utils/notifications.ts b/src/app/utils/notifications.ts index a6d47b7a8..2454b4f32 100644 --- a/src/app/utils/notifications.ts +++ b/src/app/utils/notifications.ts @@ -1,4 +1,4 @@ -import { MatrixClient, ReceiptType } from '$types/matrix-sdk'; +import { type MatrixClient, ReceiptType } from '$types/matrix-sdk'; export async function markAsRead(mx: MatrixClient, roomId: string, privateReceipt: boolean) { const room = mx.getRoom(roomId); diff --git a/src/app/utils/room.ts b/src/app/utils/room.ts index 34fb527d8..4cc6a1af7 100644 --- a/src/app/utils/room.ts +++ b/src/app/utils/room.ts @@ -1,34 +1,34 @@ -import { IconName, IconSrc } from 'folds'; +import { type IconName, type IconSrc } from 'folds'; import { EventTimeline, - EventTimelineSet, + type EventTimelineSet, EventType, - IMentions, - IPowerLevelsContent, - IPushRule, - IPushRules, + type IMentions, + type IPowerLevelsContent, + type IPushRule, + type IPushRules, JoinRule, - MatrixClient, - MatrixEvent, + type MatrixClient, + type MatrixEvent, NotificationCountType, PushProcessor, RelationType, - Room, - RoomMember, - CryptoBackend, + type Room, + type RoomMember, + type CryptoBackend, MsgType, } from '$types/matrix-sdk'; -import { AccountDataEvent } from '$types/matrix/accountData'; +import { type AccountDataEvent } from '$types/matrix/accountData'; import { - IRoomCreateContent, + type IRoomCreateContent, Membership, NotificationType, - RoomToParents, + type RoomToParents, RoomType, MessageEvent, StateEvent, - UnreadInfo, + type UnreadInfo, } from '$types/matrix/room'; import * as Sentry from '@sentry/react'; diff --git a/src/app/utils/sanitize.ts b/src/app/utils/sanitize.ts index e862fa9f3..524357f45 100644 --- a/src/app/utils/sanitize.ts +++ b/src/app/utils/sanitize.ts @@ -1,4 +1,4 @@ -import sanitizeHtml, { Transformer } from 'sanitize-html'; +import sanitizeHtml, { type Transformer } from 'sanitize-html'; const MAX_TAG_NESTING = 100; diff --git a/src/app/utils/sendFeedbackToUser.ts b/src/app/utils/sendFeedbackToUser.ts index c1fa7ab42..8f44b53b3 100644 --- a/src/app/utils/sendFeedbackToUser.ts +++ b/src/app/utils/sendFeedbackToUser.ts @@ -1,4 +1,4 @@ -import { MatrixEvent, Room } from 'matrix-js-sdk'; +import { MatrixEvent, type Room } from 'matrix-js-sdk'; export function sendFeedback(msg: string, room: Room, userId: string) { const localNotice = new MatrixEvent({ diff --git a/src/app/utils/settingsSync.ts b/src/app/utils/settingsSync.ts index a154ff92d..3493187cf 100644 --- a/src/app/utils/settingsSync.ts +++ b/src/app/utils/settingsSync.ts @@ -1,4 +1,4 @@ -import { Settings } from '$state/settings'; +import { type Settings } from '$state/settings'; /** * Keys excluded from cross-device sync. diff --git a/src/app/utils/sort.ts b/src/app/utils/sort.ts index 2f99e757a..42e12801e 100644 --- a/src/app/utils/sort.ts +++ b/src/app/utils/sort.ts @@ -1,4 +1,4 @@ -import { MatrixClient } from '$types/matrix-sdk'; +import { type MatrixClient } from '$types/matrix-sdk'; export type SortFunc = (a: T, b: T) => number; diff --git a/src/app/utils/timeline.ts b/src/app/utils/timeline.ts index 4ed92ab16..3bf61fadf 100644 --- a/src/app/utils/timeline.ts +++ b/src/app/utils/timeline.ts @@ -1,4 +1,4 @@ -import { Direction, EventTimeline, MatrixEvent, Room } from '$types/matrix-sdk'; +import { Direction, type EventTimeline, type MatrixEvent, type Room } from '$types/matrix-sdk'; import { roomHaveNotification, roomHaveUnread, reactionOrEditEvent } from '$utils/room'; export const PAGINATION_LIMIT = 60; diff --git a/src/client/initMatrix.ts b/src/client/initMatrix.ts index 18809c5d2..67dc1ee43 100644 --- a/src/client/initMatrix.ts +++ b/src/client/initMatrix.ts @@ -1,18 +1,18 @@ import { ClientEvent, createClient, - MatrixClient, + type MatrixClient, IndexedDBStore, IndexedDBCryptoStore, SyncState, - ISyncStateData, + type ISyncStateData, } from '$types/matrix-sdk'; import { clearNavToActivePathStore } from '$state/navToActivePath'; import { - Session, - Sessions, - SessionStoreName, + type Session, + type Sessions, + type SessionStoreName, getSessionStoreName, MATRIX_SESSIONS_KEY, } from '$state/sessions'; @@ -22,7 +22,11 @@ import { createDebugLogger } from '$utils/debugLogger'; import * as Sentry from '@sentry/react'; import { pushSessionToSW } from '../sw-session'; import { cryptoCallbacks } from './secretStorageKeys'; -import { SlidingSyncConfig, SlidingSyncDiagnostics, SlidingSyncManager } from './slidingSync'; +import { + type SlidingSyncConfig, + type SlidingSyncDiagnostics, + SlidingSyncManager, +} from './slidingSync'; const log = createLogger('initMatrix'); const debugLog = createDebugLogger('initMatrix'); diff --git a/src/client/slidingSync.ts b/src/client/slidingSync.ts index 096f77f43..2e11750ac 100644 --- a/src/client/slidingSync.ts +++ b/src/client/slidingSync.ts @@ -1,13 +1,13 @@ /* eslint-disable max-classes-per-file */ import { ClientEvent, - Extension, + type Extension, ExtensionState, KnownMembership, - MatrixClient, - MSC3575List, - MSC3575RoomData, - MSC3575RoomSubscription, + type MatrixClient, + type MSC3575List, + type MSC3575RoomData, + type MSC3575RoomSubscription, MSC3575_WILDCARD, RoomMemberEvent, SlidingSync, diff --git a/src/index.tsx b/src/index.tsx index 4f2e57245..614ff3dbb 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -21,7 +21,7 @@ import { pushSessionToSW } from './sw-session'; import { getFallbackSession, MATRIX_SESSIONS_KEY, - Sessions, + type Sessions, ACTIVE_SESSION_KEY, } from './app/state/sessions'; import { createLogger } from './app/utils/debug'; diff --git a/src/types/matrix/common.ts b/src/types/matrix/common.ts index e91993578..e0f3a064e 100644 --- a/src/types/matrix/common.ts +++ b/src/types/matrix/common.ts @@ -1,5 +1,5 @@ -import { EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; -import { MsgType } from '$types/matrix-sdk'; +import { type EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; +import { type MsgType } from '$types/matrix-sdk'; export const MATRIX_BLUR_HASH_PROPERTY_NAME = 'xyz.amorgan.blurhash'; export const MATRIX_SPOILER_PROPERTY_NAME = 'page.codeberg.everypizza.msc4193.spoiler'; diff --git a/src/types/matrix/room.ts b/src/types/matrix/room.ts index f851b9e42..eac297412 100644 --- a/src/types/matrix/room.ts +++ b/src/types/matrix/room.ts @@ -1,4 +1,4 @@ -import { IImageInfo } from './common'; +import { type IImageInfo } from './common'; export enum Membership { Invite = 'invite', diff --git a/tsconfig.json b/tsconfig.json index 35f50caf8..80d6c8ece 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,7 +15,7 @@ "composite": true, "forceConsistentCasingInFileNames": true, "isolatedModules": true, - // "verbatimModuleSyntax": true, + "verbatimModuleSyntax": true, "noEmit": true, "tsBuildInfoFile": "./.tsbuildinfo/tsconfig.tsbuildinfo", "baseUrl": ".", From 94f7ce909ab0d9b426d45a1776606c86f9525844 Mon Sep 17 00:00:00 2001 From: hazre Date: Mon, 30 Mar 2026 00:19:34 +0200 Subject: [PATCH 06/23] feat: add code quality enforcement Apply code quality enforcement across ESLint, storage guards, coverage checks, and contributor docs. Co-authored-by: Evie Gauthier --- .github/workflows/quality-checks.yml | 106 +++++++++++ CONTRIBUTING.md | 2 + docs/CODE_QUALITY.md | 161 ++++++++++++++++ eslint.config.js | 54 +++++- .../components/GlobalKeyboardShortcuts.tsx | 6 +- src/app/components/LogoutDialog.tsx | 2 +- src/app/components/RenderMessageContent.tsx | 4 +- src/app/components/SwipeableChatWrapper.tsx | 4 +- .../components/SwipeableOverlayWrapper.tsx | 4 +- .../create-room/AdditionalCreatorInput.tsx | 4 +- src/app/components/editor/Editor.tsx | 2 +- src/app/components/editor/Elements.tsx | 7 +- src/app/components/editor/Toolbar.tsx | 2 +- src/app/components/editor/input.ts | 30 +-- src/app/components/editor/output.ts | 2 +- src/app/components/editor/utils.ts | 20 +- src/app/components/emoji-board/EmojiBoard.tsx | 4 +- .../image-pack-view/ImagePackContent.tsx | 8 +- src/app/components/media/Video.tsx | 12 +- .../message/content/AudioContent.tsx | 11 +- .../NotificationBanner.tsx | 2 +- .../TelemetryConsentBanner.tsx | 13 +- src/app/components/time-date/DatePicker.tsx | 111 ++++++----- src/app/components/time-date/TimePicker.tsx | 46 +++-- .../components/url-preview/ClientPreview.tsx | 19 +- src/app/features/add-existing/AddExisting.tsx | 2 +- .../features/call-status/MemberSpeaking.tsx | 3 +- src/app/features/call/CallMemberCard.tsx | 4 +- src/app/features/call/CallView.tsx | 4 +- .../developer-tools/DevelopTools.tsx | 178 +++++++++--------- .../common-settings/general/RoomUpgrade.tsx | 2 +- .../common-settings/members/Members.tsx | 5 +- .../permissions/PowersEditor.tsx | 2 +- src/app/features/lobby/Lobby.tsx | 10 +- src/app/features/lobby/SpaceHierarchyItem.tsx | 2 +- .../features/message-search/MessageSearch.tsx | 4 +- .../features/message-search/SearchFilters.tsx | 2 +- .../message-search/useMessageSearch.ts | 2 +- .../abbreviations/RoomAbbreviations.tsx | 2 +- src/app/features/room/RoomCallButton.tsx | 4 +- src/app/features/room/RoomInput.tsx | 42 ++--- src/app/features/room/RoomTimeline.tsx | 4 +- src/app/features/room/RoomViewHeader.tsx | 8 +- src/app/features/room/ThreadDrawer.tsx | 8 +- src/app/features/room/message/Message.tsx | 2 +- .../features/room/message/MessageEditor.tsx | 2 +- src/app/features/room/message/Reactions.tsx | 2 +- .../room/reaction-viewer/ReactionViewer.tsx | 2 +- .../room/room-pin-menu/RoomPinMenu.tsx | 2 +- src/app/features/search/Search.tsx | 8 +- .../settings/account/TimezoneEditor.tsx | 4 +- .../settings/developer-tools/AccountData.tsx | 4 +- .../developer-tools/SentrySettings.tsx | 3 +- .../developer-tools/SyncDiagnostics.tsx | 6 +- .../settings/devices/OtherDevices.tsx | 2 +- .../settings/emojis-stickers/GlobalPacks.tsx | 18 +- src/app/features/settings/general/General.tsx | 26 +-- .../keyboard-shortcuts/KeyboardShortcuts.tsx | 2 +- .../features/widgets/IntegrationManager.tsx | 4 +- src/app/features/widgets/WidgetIframe.tsx | 8 +- .../hooks/timeline/useProcessedTimeline.ts | 8 +- src/app/hooks/timeline/useTimelineActions.ts | 4 +- .../timeline/useTimelineEventRenderer.tsx | 4 +- src/app/hooks/timeline/useTimelineSync.ts | 4 +- src/app/hooks/useAsyncSearch.ts | 2 +- src/app/hooks/useCallSignaling.ts | 6 +- src/app/hooks/useCommands.ts | 13 +- src/app/hooks/useComposingCheck.ts | 8 +- src/app/hooks/useDebounce.ts | 4 +- src/app/hooks/useImageGestures.ts | 4 +- src/app/hooks/useImagePackRooms.ts | 2 +- src/app/hooks/useImagePacks.ts | 17 +- src/app/hooks/useIntegrationManager.ts | 4 +- src/app/hooks/useMediaConfig.ts | 4 +- src/app/hooks/usePerMessageProfile.ts | 2 +- src/app/hooks/usePowerLevelTags.ts | 2 +- src/app/hooks/usePowerLevels.ts | 2 +- src/app/hooks/useRoomAbbreviations.ts | 2 +- src/app/hooks/useRoomAccountData.ts | 2 +- src/app/hooks/useRoomWidgets.ts | 4 +- src/app/hooks/useSidebarItems.ts | 4 +- src/app/hooks/useThrottle.ts | 4 +- .../pages/client/BackgroundNotifications.tsx | 4 +- src/app/pages/client/ClientRoot.tsx | 3 +- src/app/pages/client/direct/Direct.tsx | 2 +- src/app/pages/client/explore/Server.tsx | 2 +- src/app/pages/client/home/Home.tsx | 2 +- src/app/pages/client/inbox/Invites.tsx | 2 +- src/app/pages/client/inbox/Notifications.tsx | 4 +- src/app/pages/client/sidebar/SpaceTabs.tsx | 4 +- src/app/pages/client/space/Space.tsx | 13 +- src/app/plugins/bad-words.ts | 7 +- src/app/plugins/call/CallEmbed.ts | 4 +- src/app/plugins/call/CallWidgetDriver.ts | 2 +- src/app/plugins/custom-emoji/ImagePack.ts | 2 +- src/app/plugins/react-custom-html-parser.tsx | 2 +- src/app/plugins/text-area/Operations.ts | 4 +- src/app/plugins/text-area/TextUtils.ts | 2 +- src/app/plugins/utils.ts | 2 +- src/app/plugins/via-servers.ts | 2 +- .../voice-recorder-kit/useVoiceRecorder.ts | 14 +- src/app/state/closedLobbyCategories.ts | 2 +- src/app/state/closedNavCategories.ts | 2 +- src/app/state/mediaVolume.ts | 21 +++ src/app/state/openedSidebarFolder.ts | 2 +- src/app/state/room-list/utils.ts | 2 +- src/app/state/sentryStorage.ts | 28 +++ src/app/state/settings.ts | 4 +- src/app/state/spaceRooms.ts | 4 +- src/app/utils/AsyncSearch.ts | 2 +- src/app/utils/MegolmExportEncryption.ts | 2 +- src/app/utils/abbreviations.ts | 2 +- src/app/utils/debugLogger.ts | 6 +- src/app/utils/delayedEvents.ts | 4 +- src/app/utils/featureCheck.ts | 2 +- src/app/utils/keyboard.ts | 4 +- src/app/utils/matrix.ts | 4 +- src/app/utils/room.ts | 12 +- src/client/initMatrix.ts | 2 +- src/client/slidingSync.test.ts | 3 +- src/client/slidingSync.ts | 2 +- src/sw.ts | 4 +- vitest.config.ts | 8 + 123 files changed, 828 insertions(+), 496 deletions(-) create mode 100644 docs/CODE_QUALITY.md create mode 100644 src/app/state/mediaVolume.ts create mode 100644 src/app/state/sentryStorage.ts diff --git a/.github/workflows/quality-checks.yml b/.github/workflows/quality-checks.yml index a9ac43708..5d56101fd 100644 --- a/.github/workflows/quality-checks.yml +++ b/.github/workflows/quality-checks.yml @@ -97,6 +97,112 @@ jobs: - name: Run tests run: pnpm run test:run + coverage: + name: Coverage thresholds + runs-on: ubuntu-latest + if: github.head_ref != 'release' + permissions: + contents: read + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Setup app + uses: ./.github/actions/setup + + - name: Run tests with coverage + run: pnpm run test:coverage + + missing-tests: + name: Check for missing tests + runs-on: ubuntu-latest + if: github.event_name == 'pull_request' && github.head_ref != 'release' + permissions: + contents: read + pull-requests: write + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + fetch-depth: 0 + + - name: Check changed logic files for missing tests + id: check + run: | + BASE=${{ github.event.pull_request.base.sha }} + HEAD=${{ github.event.pull_request.head.sha }} + changed=$(git diff --name-only "$BASE" "$HEAD" -- 'src/**/*.ts' 'src/**/*.tsx' \ + | grep -v '\.test\.' | grep -v '\.spec\.' | grep -v '\.d\.ts' \ + | grep -v 'src/index\.tsx' | grep -v 'src/sw' | grep -v 'src/instrument' \ + | grep -v 'src/test/' || true) + missing="" + for f in $changed; do + base="${f%.*}" + if ! ls "${base}.test."* "${base}.spec."* 2>/dev/null | grep -q .; then + missing="$missing\n- $f" + fi + done + if [ -n "$missing" ]; then + echo "missing=true" >> $GITHUB_OUTPUT + printf 'files<> $GITHUB_OUTPUT + fi + + - name: Update PR comment + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + continue-on-error: true + with: + script: | + const marker = ''; + const missing = '${{ steps.check.outputs.missing }}' === 'true'; + const files = `${{ steps.check.outputs.files }}`; + + const { data: comments } = await github.rest.issues.listComments({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + }); + const existing = comments.find(c => c.body && c.body.includes(marker)); + + if (!missing) { + if (existing) { + await github.rest.issues.deleteComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: existing.id, + }); + } + return; + } + + const body = [ + marker, + '## ⚠️ Logic changes without tests', + '', + 'The following changed files have no corresponding `.test.` file.', + 'Consider adding tests, or note in your PR description why tests are not needed for these changes.', + '', + files, + ].join('\n'); + + if (existing) { + await github.rest.issues.updateComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: existing.id, + body, + }); + } else { + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + body, + }); + } + build: name: Build runs-on: ubuntu-latest diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 29f53db0b..82eb8b9e2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -47,6 +47,8 @@ Also, we use [ESLint](https://eslint.org/) for clean and stylistically consisten If your change touches logic with testable behaviour, please include tests. See [docs/TESTING.md](./docs/TESTING.md) for a guide on how to write them. +For conventions on code style, naming, and project patterns, see [docs/CODE_QUALITY.md](./docs/CODE_QUALITY.md). + ## Restrictions on Generative AI Usage We expect and appreciate authentic engagement in our community. diff --git a/docs/CODE_QUALITY.md b/docs/CODE_QUALITY.md new file mode 100644 index 000000000..4f4c9cf6e --- /dev/null +++ b/docs/CODE_QUALITY.md @@ -0,0 +1,161 @@ +# Code Quality Guide + +This document describes the coding conventions and standards used throughout Sable. Most rules are enforced automatically in CI or by local linting. Read this to understand the why behind them and to get the conventions right the first time. + +## Enforcement layers + +| Layer | When it runs | What it checks | +| ----------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------- | +| **CI — format / lint / typecheck / knip** | On every PR and push to `dev` | Prettier format, ESLint, TypeScript, Knip dead-code analysis | +| **CI — tests** | On every PR and push to `dev` | Runs the full Vitest suite; fails if any test fails | +| **CI — coverage thresholds** | On every PR and push to `dev` | `pnpm test:coverage`; fails if overall coverage drops below the locked baseline | +| **CI — missing tests warning** | On PRs only | Comments listing changed logic files that have no `.test.` counterpart | +| **Editor** | As you type | ESLint + Prettier via VS Code extensions | + +PRs are not merged unless all CI quality checks are green. + +To fix all violations in the repo at once: + +```sh +pnpm run lint:fix +pnpm run fmt +``` + +## TypeScript + +### Prefer `type` over `interface` + +Use `type` for all type declarations. `interface` is not used in this codebase. + +```ts +type RoomAvatarProps = { + roomId: string; + src?: string; +}; +``` + +Rule: `@typescript-eslint/consistent-type-definitions: ['error', 'type']` + +### Use `import type` for type-only imports + +When an import is used only as a type and not at runtime, annotate it with `type`. + +```ts +import { type MatrixClient, MatrixError } from '$types/matrix-sdk'; +``` + +Rule: `@typescript-eslint/consistent-type-imports` with `inline-type-imports` style. + +### Strict null checks + +The project uses `strict: true`. Do not paper over nullability with unsafe casts. Handle the null or undefined case explicitly or use optional chaining. + +### Enums + +Use string enums for sets of related constants when they improve readability and debug output. + +## Imports + +### Ordering + +Group imports in this order, with a blank line between groups: + +1. External packages. +2. Internal path aliases. +3. Relative imports. + +```ts +import { useState } from 'react'; +import { Box, Text } from 'folds'; + +import { type MatrixClient } from '$types/matrix-sdk'; +import { useMatrixClient } from '$hooks/useMatrixClient'; + +import * as css from './RoomAvatar.css'; +``` + +### Path aliases + +Prefer the `$`-prefixed aliases over deep relative traversal for anything outside the current directory. + +## Naming conventions + +| Thing | Convention | Example | +| ---------------------- | ---------------------------------------- | ------------------------------ | +| React component | `PascalCase` function | `RoomAvatar` | +| Component props type | `[ComponentName]Props` | `RoomAvatarProps` | +| Custom hook | `use` prefix, `camelCase` | `useMatrixClient` | +| Jotai atom | `camelCase` + `Atom` suffix | `settingsAtom` | +| Jotai atom family | `camelCase` + `AtomFamily` suffix | `roomIdToOpenThreadAtomFamily` | +| Utility function | `camelCase` | `getMemberDisplayName` | +| Enum | `PascalCase` type + `PascalCase` members | `AsyncStatus.Loading` | +| CSS module file | `[ComponentName].css.ts` | `RoomAvatar.css.ts` | +| File (component) | `PascalCase.tsx` | `RoomAvatar.tsx` | +| File (hook/util/state) | `camelCase.ts` | `useMatrixClient.ts` | + +## React components + +### Named exports, not default exports + +Use named exports for components, hooks, and utilities. Default exports make refactors worse. + +### Keep components focused + +- One component per file is the default. +- Derive values from props and state instead of duplicating derived state. +- Move non-trivial logic into hooks or state helpers instead of burying it in JSX. + +### localStorage access + +Direct `localStorage` access is banned in `src/app/components/**` and `src/app/features/**`. + +Use one of these patterns instead: + +- Reactive state read by JSX: use `atomWithLocalStorage` in a state file. +- Values needed before React mounts or applied directly to DOM refs: use plain helper functions in `src/app/state/`. + +Examples: + +- [src/app/state/sentryStorage.ts](../src/app/state/sentryStorage.ts) +- [src/app/state/mediaVolume.ts](../src/app/state/mediaVolume.ts) + +## Styling + +Styles live in co-located `*.css.ts` files alongside the component. + +- Avoid inline `style={{}}` for static styling that should be a class. +- Do not import global CSS from component files. + +## Testing + +See [TESTING.md](./TESTING.md) for the full guide. + +- Put tests adjacent to the code they cover, or under `src/test/` for shared fixtures. +- Use `*.test.ts` / `*.test.tsx`. +- Use `@testing-library/react` for component tests. +- If your change touches logic with clear input/output, add or update tests. + +### Coverage thresholds + +Coverage thresholds are locked in `vitest.config.ts` and enforced by CI. They should only go up, never down. + +### Missing-tests advisory + +PRs get an advisory comment when changed logic files have no corresponding test file. That job is informational only. + +## What the linter enforces automatically + +| Rule | Enforced as | +| ----------------------------------------------------------------------- | ------------------------- | +| `@typescript-eslint/consistent-type-definitions` | error | +| `@typescript-eslint/consistent-type-imports` | error | +| `@typescript-eslint/no-unused-vars` | error | +| `@typescript-eslint/no-shadow` | error | +| `react-hooks/rules-of-hooks` | error | +| `react-hooks/exhaustive-deps` | error | +| `react/no-unstable-nested-components` | error | +| No direct `localStorage` in `components/` or `features/` | error | +| Prettier formatting | error | +| Knip dead exports and unused files | error | +| Coverage thresholds (statements/functions/lines >= 1.5%, branches >= 1) | CI error | +| Logic files without a `.test.` counterpart | CI advisory comment on PR | diff --git a/eslint.config.js b/eslint.config.js index 27f5642d9..07303ad44 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -13,6 +13,14 @@ import globals from 'globals'; const gitignorePath = path.resolve('.', '.gitignore'); const { jsFiles, tsFiles } = helpers.extensions; +const recommendedConfig = e18ePlugin.configs?.recommended; +const e18eRecommendedRules = + recommendedConfig && + !Array.isArray(recommendedConfig) && + 'rules' in recommendedConfig && + recommendedConfig.rules + ? recommendedConfig.rules + : {}; const jsConfig = defineConfig([ // ESLint recommended config @@ -70,16 +78,15 @@ const prettierConfig = defineConfig([ const e18eConfig = defineConfig([ { - name: 'e18e/scripts', - files: ['scripts/**/*.js'], + name: 'e18e/recommended', + files: ['src/**/*.{js,jsx,ts,tsx}', 'scripts/**/*.js'], + ignores: ['src/**/*.{test,spec}.{js,jsx,ts,tsx}', 'src/**/*.d.ts'], plugins: { e18e: e18ePlugin, }, rules: { - 'e18e/prefer-array-at': 'error', - 'e18e/prefer-array-some': 'error', - 'e18e/prefer-array-to-sorted': 'error', - 'e18e/prefer-spread-syntax': 'error', + ...e18eRecommendedRules, + 'e18e/prefer-static-regex': 'off', }, }, ]); @@ -163,8 +170,11 @@ const projectOverrides = defineConfig([ }, }, rules: { - // disabled for now to get eslint to pass - '@typescript-eslint/consistent-type-definitions': 'off', + '@typescript-eslint/consistent-type-definitions': ['error', 'type'], + '@typescript-eslint/consistent-type-imports': [ + 'error', + { prefer: 'type-imports', fixStyle: 'inline-type-imports' }, + ], '@typescript-eslint/no-unsafe-enum-comparison': 'off', '@typescript-eslint/only-throw-error': 'off', '@typescript-eslint/array-type': 'off', @@ -183,6 +193,34 @@ const projectOverrides = defineConfig([ 'no-undef': 'off', }, }, + { + name: 'project/no-direct-localstorage-in-ui', + files: ['src/app/components/**/*.{ts,tsx}', 'src/app/features/**/*.{ts,tsx}'], + ignores: ['src/app/components/**/*.test.{ts,tsx}', 'src/app/features/**/*.test.{ts,tsx}'], + rules: { + 'no-restricted-properties': [ + 'error', + { + object: 'localStorage', + message: + 'Direct localStorage access is not allowed in components or features. Use an atom (atomWithLocalStorage) or a storage utility from src/app/state/ instead.', + }, + { + object: 'window', + property: 'localStorage', + message: + 'Direct localStorage access is not allowed in components or features. Use an atom (atomWithLocalStorage) or a storage utility from src/app/state/ instead.', + }, + ], + }, + }, + { + name: 'project/typescript-definition-files', + files: ['**/*.d.ts'], + rules: { + '@typescript-eslint/consistent-type-definitions': 'off', + }, + }, ]); export default defineConfig([ diff --git a/src/app/components/GlobalKeyboardShortcuts.tsx b/src/app/components/GlobalKeyboardShortcuts.tsx index 44daf7fd6..f2de4fd03 100644 --- a/src/app/components/GlobalKeyboardShortcuts.tsx +++ b/src/app/components/GlobalKeyboardShortcuts.tsx @@ -62,7 +62,7 @@ export function GlobalKeyboardShortcuts() { } else { const parents = roomToParents.get(roomId); if (parents && parents.size > 0) { - const spaceId = Array.from(parents)[0]; + const spaceId = [...parents][0]; const spaceIdOrAlias = getCanonicalAliasOrRoomId(mx, spaceId); navigate(getSpaceRoomPath(spaceIdOrAlias, roomIdOrAliasToNav)); } else { @@ -80,7 +80,7 @@ export function GlobalKeyboardShortcuts() { const handleNextUnreadKeyDown = useCallback( (evt: KeyboardEvent) => { if (!isKeyHotkey('alt+n', evt)) return; - const unreadEntries = Array.from(roomToUnread.entries()) + const unreadEntries = [...roomToUnread.entries()] .filter(([id, u]) => u.total > 0 && id !== currentRoom?.roomId) .sort((a, b) => b[1].highlight - a[1].highlight || b[1].total - a[1].total); if (unreadEntries.length === 0) return; @@ -98,7 +98,7 @@ export function GlobalKeyboardShortcuts() { const isDown = isKeyHotkey('alt+shift+down', evt); const isUp = isKeyHotkey('alt+shift+up', evt); if (!isDown && !isUp) return; - const unreadEntries = Array.from(roomToUnread.entries()) + const unreadEntries = [...roomToUnread.entries()] .filter(([, u]) => u.total > 0) .sort((a, b) => b[1].highlight - a[1].highlight || b[1].total - a[1].total); if (unreadEntries.length === 0) return; diff --git a/src/app/components/LogoutDialog.tsx b/src/app/components/LogoutDialog.tsx index c1cf9d1ce..96fcd5990 100644 --- a/src/app/components/LogoutDialog.tsx +++ b/src/app/components/LogoutDialog.tsx @@ -16,7 +16,7 @@ type LogoutDialogProps = { export const LogoutDialog = forwardRef( ({ handleClose }, ref) => { const mx = useMatrixClient(); - const hasEncryptedRoom = !!mx.getRooms().find((room) => room.hasEncryptionStateEvent()); + const hasEncryptedRoom = mx.getRooms().some((room) => room.hasEncryptionStateEvent()); const crossSigningActive = useCrossSigningActive(); const verificationStatus = useDeviceVerificationStatus( mx.getCrypto(), diff --git a/src/app/components/RenderMessageContent.tsx b/src/app/components/RenderMessageContent.tsx index 5cbbed6fc..71fa0897e 100644 --- a/src/app/components/RenderMessageContent.tsx +++ b/src/app/components/RenderMessageContent.tsx @@ -53,8 +53,8 @@ type RenderMessageContentProps = { const getMediaType = (url: string) => { const cleanUrl = url.toLowerCase(); - if (cleanUrl.match(/\.(mp4|webm|ogg)$/i)) return 'video'; - if (cleanUrl.match(/\.(png|jpg|jpeg|gif|webp)$/i) || cleanUrl.match(/@(jpeg|webp|png|jpg)$/i)) + if (/\.(mp4|webm|ogg)$/i.test(cleanUrl)) return 'video'; + if (/\.(png|jpg|jpeg|gif|webp)$/i.test(cleanUrl) || /@(jpeg|webp|png|jpg)$/i.test(cleanUrl)) return 'image'; return null; }; diff --git a/src/app/components/SwipeableChatWrapper.tsx b/src/app/components/SwipeableChatWrapper.tsx index 050fa440c..0811c54be 100644 --- a/src/app/components/SwipeableChatWrapper.tsx +++ b/src/app/components/SwipeableChatWrapper.tsx @@ -5,12 +5,12 @@ import { useAtomValue } from 'jotai'; import { settingsAtom, RightSwipeAction } from '$state/settings'; import { mobileOrTablet } from '$utils/user-agent'; -interface SwipeableChatWrapperProps { +type SwipeableChatWrapperProps = { children: ReactNode; onOpenSidebar?: () => void; onOpenMembers?: () => void; onReply?: () => void; -} +}; export function SwipeableChatWrapper({ children, diff --git a/src/app/components/SwipeableOverlayWrapper.tsx b/src/app/components/SwipeableOverlayWrapper.tsx index 0c06de91c..6cc488204 100644 --- a/src/app/components/SwipeableOverlayWrapper.tsx +++ b/src/app/components/SwipeableOverlayWrapper.tsx @@ -5,11 +5,11 @@ import { useAtomValue } from 'jotai'; import { settingsAtom } from '$state/settings'; import { mobileOrTablet } from '$utils/user-agent'; -interface SwipeableOverlayWrapperProps { +type SwipeableOverlayWrapperProps = { children: ReactNode; onClose: () => void; direction: 'left' | 'right'; -} +}; export function SwipeableOverlayWrapper({ children, diff --git a/src/app/components/create-room/AdditionalCreatorInput.tsx b/src/app/components/create-room/AdditionalCreatorInput.tsx index 4ef005125..3ee2b331c 100644 --- a/src/app/components/create-room/AdditionalCreatorInput.tsx +++ b/src/app/components/create-room/AdditionalCreatorInput.tsx @@ -44,7 +44,7 @@ export const useAdditionalCreators = (defaultCreators?: string[]) => { setAdditionalCreators((creators) => { const creatorsSet = new Set(creators); creatorsSet.add(userId); - return Array.from(creatorsSet); + return [...creatorsSet]; }); }; @@ -52,7 +52,7 @@ export const useAdditionalCreators = (defaultCreators?: string[]) => { setAdditionalCreators((creators) => { const creatorsSet = new Set(creators); creatorsSet.delete(userId); - return Array.from(creatorsSet); + return [...creatorsSet]; }); }; diff --git a/src/app/components/editor/Editor.tsx b/src/app/components/editor/Editor.tsx index 2b6c902b6..32d332c4e 100644 --- a/src/app/components/editor/Editor.tsx +++ b/src/app/components/editor/Editor.tsx @@ -25,7 +25,7 @@ import { withHistory } from 'slate-history'; import { mobileOrTablet } from '$utils/user-agent'; import { BlockType } from './types'; import { RenderElement, RenderLeaf } from './Elements'; -import { type CustomElement } from './slate'; +import type { CustomElement } from './slate'; import * as css from './Editor.css'; import { toggleKeyboardShortcut } from './keyboard'; diff --git a/src/app/components/editor/Elements.tsx b/src/app/components/editor/Elements.tsx index bdf361788..8663f019b 100644 --- a/src/app/components/editor/Elements.tsx +++ b/src/app/components/editor/Elements.tsx @@ -15,12 +15,7 @@ import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; import { nicknamesAtom } from '$state/nicknames'; import { BlockType } from './types'; import { getBeginCommand } from './utils'; -import { - type CommandElement, - type EmoticonElement, - type LinkElement, - type MentionElement, -} from './slate'; +import type { CommandElement, EmoticonElement, LinkElement, MentionElement } from './slate'; // Put this at the start and end of an inline component to work around this Chromium bug: // https://bugs.chromium.org/p/chromium/issues/detail?id=1249405 diff --git a/src/app/components/editor/Toolbar.tsx b/src/app/components/editor/Toolbar.tsx index 10c7c21d9..90441431f 100644 --- a/src/app/components/editor/Toolbar.tsx +++ b/src/app/components/editor/Toolbar.tsx @@ -25,7 +25,7 @@ import { useSetting } from '$state/hooks/settings'; import { settingsAtom } from '$state/settings'; import { stopPropagation } from '$utils/keyboard'; import { floatingToolbar } from '$styles/overrides/Composer.css'; -import { type HeadingLevel } from './slate'; +import type { HeadingLevel } from './slate'; import { BlockType, MarkType } from './types'; import * as css from './Editor.css'; import { diff --git a/src/app/components/editor/input.ts b/src/app/components/editor/input.ts index 8a919ab84..7d3d00167 100644 --- a/src/app/components/editor/input.ts +++ b/src/app/components/editor/input.ts @@ -11,20 +11,20 @@ import { } from '$plugins/matrix-to'; import { escapeMarkdownInlineSequences, escapeMarkdownBlockSequences } from '$plugins/markdown'; import { BlockType, MarkType } from './types'; -import { - type BlockQuoteElement, - type CodeBlockElement, - type CodeLineElement, - type EmoticonElement, - type HeadingElement, - type HeadingLevel, - type HorizontalRuleElement, - type InlineElement, - type MentionElement, - type OrderedListElement, - type ParagraphElement, - type SmallElement, - type UnorderedListElement, +import type { + BlockQuoteElement, + CodeBlockElement, + CodeLineElement, + EmoticonElement, + HeadingElement, + HeadingLevel, + HorizontalRuleElement, + InlineElement, + MentionElement, + OrderedListElement, + ParagraphElement, + SmallElement, + UnorderedListElement, } from './slate'; import { createEmoticonElement, createMentionElement } from './utils'; @@ -450,7 +450,7 @@ export const domToEditorInput = ( return; } - if (node.name.match(/^h[123456]$/)) { + if (/^h[123456]$/.test(node.name)) { appendLine(); children.push(parseHeadingNode(node, processText)); return; diff --git a/src/app/components/editor/output.ts b/src/app/components/editor/output.ts index 2e21b4b61..1d48c40a0 100644 --- a/src/app/components/editor/output.ts +++ b/src/app/components/editor/output.ts @@ -10,7 +10,7 @@ import { import { findAndReplace } from '$utils/findAndReplace'; import { sanitizeForRegex } from '$utils/regex'; import { isUserId } from '$utils/matrix'; -import { type CustomElement } from './slate'; +import type { CustomElement } from './slate'; import { BlockType } from './types'; export type OutputOptions = { diff --git a/src/app/components/editor/utils.ts b/src/app/components/editor/utils.ts index de3928e89..29df43ade 100644 --- a/src/app/components/editor/utils.ts +++ b/src/app/components/editor/utils.ts @@ -9,13 +9,13 @@ import { Transforms, } from 'slate'; import { BlockType, MarkType } from './types'; -import { - type CommandElement, - type EmoticonElement, - type FormattedText, - type HeadingLevel, - type LinkElement, - type MentionElement, +import type { + CommandElement, + EmoticonElement, + FormattedText, + HeadingLevel, + LinkElement, + MentionElement, } from './slate'; const ALL_MARK_TYPE: MarkType[] = [ @@ -34,7 +34,7 @@ export const isMarkActive = (editor: Editor, format: MarkType) => { export const isAnyMarkActive = (editor: Editor) => { const marks = Editor.marks(editor); - return marks && !!ALL_MARK_TYPE.find((type) => marks[type] === true); + return marks && ALL_MARK_TYPE.some((type) => marks[type] === true); }; export const toggleMark = (editor: Editor, format: MarkType) => { @@ -229,10 +229,10 @@ export const moveCursor = (editor: Editor, withSpace?: boolean) => { Transforms.collapse(editor, { edge: 'end' }); }; -interface PointUntilCharOptions { +type PointUntilCharOptions = { match: (char: string) => boolean; reverse?: boolean; -} +}; export const getPointUntilChar = ( editor: Editor, cursorPoint: BasePoint, diff --git a/src/app/components/emoji-board/EmojiBoard.tsx b/src/app/components/emoji-board/EmojiBoard.tsx index ce43c387c..214ebbc49 100644 --- a/src/app/components/emoji-board/EmojiBoard.tsx +++ b/src/app/components/emoji-board/EmojiBoard.tsx @@ -417,8 +417,8 @@ export function EmojiBoard({ const searchList = useMemo(() => { let list: Array = []; - list = list.concat(imagePacks.flatMap((pack) => pack.getImages(usage))); - if (emojiTab) list = list.concat(emojis); + list = [...list, ...imagePacks.flatMap((pack) => pack.getImages(usage))]; + if (emojiTab) list = [...list, ...emojis]; return list; }, [emojiTab, usage, imagePacks]); diff --git a/src/app/components/image-pack-view/ImagePackContent.tsx b/src/app/components/image-pack-view/ImagePackContent.tsx index e89108254..41132718d 100644 --- a/src/app/components/image-pack-view/ImagePackContent.tsx +++ b/src/app/components/image-pack-view/ImagePackContent.tsx @@ -39,7 +39,7 @@ export const ImagePackContent = as<'div', ImagePackContentProps>( const [savedMeta, setSavedMeta] = useState(); const currentMeta = savedMeta ?? imagePack.meta; - const images = useMemo(() => Array.from(imagePack.images.collection.values()), [imagePack]); + const images = useMemo(() => [...imagePack.images.collection.values()], [imagePack]); const [files, setFiles] = useState([]); const [uploadedImages, setUploadedImages] = useState([]); const [imagesEditing, setImagesEditing] = useState>(new Set()); @@ -50,11 +50,9 @@ export const ImagePackContent = as<'div', ImagePackContentProps>( (shortcode: string): boolean => { const hasInPack = imagePack.images.collection.has(shortcode); if (hasInPack) return true; - const hasInUploaded = - uploadedImages.find((img) => img.shortcode === shortcode) !== undefined; + const hasInUploaded = uploadedImages.some((img) => img.shortcode === shortcode); if (hasInUploaded) return true; - const hasInSaved = - Array.from(savedImages).find(([, img]) => img.shortcode === shortcode) !== undefined; + const hasInSaved = [...savedImages].some(([, img]) => img.shortcode === shortcode); return hasInSaved; }, [imagePack, savedImages, uploadedImages] diff --git a/src/app/components/media/Video.tsx b/src/app/components/media/Video.tsx index 073b6b0d6..2d65fb2f3 100644 --- a/src/app/components/media/Video.tsx +++ b/src/app/components/media/Video.tsx @@ -1,5 +1,6 @@ import { type VideoHTMLAttributes, forwardRef, useEffect, useRef } from 'react'; import classNames from 'classnames'; +import { getMediaVolume, setMediaVolume } from '$state/mediaVolume'; import * as css from './media.css'; export const Video = forwardRef>( @@ -9,8 +10,6 @@ export const Video = forwardRef(null); useEffect(() => { - const stored = localStorage.getItem(MEDIA_VOLUME_KEY); - if (innerRef.current && stored !== null) { - const parsed = parseFloat(stored); - if (!Number.isNaN(parsed)) innerRef.current.volume = parsed; - } + const volume = getMediaVolume(); + if (innerRef.current && volume !== undefined) innerRef.current.volume = volume; }, []); return ( @@ -30,7 +26,7 @@ export function PersistedVolumeVideo({ {...props} ref={innerRef} onVolumeChange={(e) => { - localStorage.setItem(MEDIA_VOLUME_KEY, String((e.target as HTMLVideoElement).volume)); + setMediaVolume((e.target as HTMLVideoElement).volume); onVolumeChange?.(e); }} /> diff --git a/src/app/components/message/content/AudioContent.tsx b/src/app/components/message/content/AudioContent.tsx index 34fc1d3f3..871918fd9 100644 --- a/src/app/components/message/content/AudioContent.tsx +++ b/src/app/components/message/content/AudioContent.tsx @@ -18,7 +18,7 @@ import { useThrottle } from '$hooks/useThrottle'; import { secondsToMinutesAndSeconds } from '$utils/common'; import { decryptFile, downloadEncryptedMedia, downloadMedia, mxcUrlToHttp } from '$utils/matrix'; import { useMediaAuthentication } from '$hooks/useMediaAuthentication'; -import { MEDIA_VOLUME_KEY } from '$components/media'; +import { getMediaVolume, setMediaVolume } from '$state/mediaVolume'; const PLAY_TIME_THROTTLE_OPS = { wait: 500, @@ -62,11 +62,8 @@ export function AudioContent({ const audioRef = useRef(null); useEffect(() => { - const stored = localStorage.getItem(MEDIA_VOLUME_KEY); - if (audioRef.current && stored !== null) { - const parsed = parseFloat(stored); - if (!Number.isNaN(parsed)) audioRef.current.volume = parsed; - } + const volume = getMediaVolume(); + if (audioRef.current && volume !== undefined) audioRef.current.volume = volume; }, []); const [currentTime, setCurrentTime] = useState(0); @@ -225,7 +222,7 @@ export function AudioContent({ autoPlay ref={audioRef} onVolumeChange={(e) => { - localStorage.setItem(MEDIA_VOLUME_KEY, String((e.target as HTMLAudioElement).volume)); + setMediaVolume((e.target as HTMLAudioElement).volume); }} > {srcState.status === AsyncStatus.Success && } diff --git a/src/app/components/notification-banner/NotificationBanner.tsx b/src/app/components/notification-banner/NotificationBanner.tsx index 38b163863..553080642 100644 --- a/src/app/components/notification-banner/NotificationBanner.tsx +++ b/src/app/components/notification-banner/NotificationBanner.tsx @@ -65,7 +65,7 @@ function BannerItem({ notification, onDismiss }: BannerItemProps) { if (dismissedRef.current) return; dismissedRef.current = true; setDismissing(true); - dismissAnimTimerRef.current = setTimeout(() => onDismiss(notification.id), 200); + dismissAnimTimerRef.current = setTimeout(onDismiss, 200, notification.id); }, [notification.id, onDismiss]); // Auto-dismiss timer — only runs when not paused. diff --git a/src/app/components/telemetry-consent/TelemetryConsentBanner.tsx b/src/app/components/telemetry-consent/TelemetryConsentBanner.tsx index 5c1e90a08..6335cf7af 100644 --- a/src/app/components/telemetry-consent/TelemetryConsentBanner.tsx +++ b/src/app/components/telemetry-consent/TelemetryConsentBanner.tsx @@ -1,14 +1,11 @@ import { useEffect, useRef, useState } from 'react'; import { Box, Button, Icon, Icons, Text } from 'folds'; +import { isSentryDecided, setSentryEnabled } from '$state/sentryStorage'; import * as css from './TelemetryConsentBanner.css'; -const SENTRY_KEY = 'sable_sentry_enabled'; - export function TelemetryConsentBanner() { const isSentryConfigured = Boolean(import.meta.env.VITE_SENTRY_DSN); - const [visible, setVisible] = useState( - isSentryConfigured && localStorage.getItem(SENTRY_KEY) === null - ); + const [visible, setVisible] = useState(isSentryConfigured && !isSentryDecided()); const [dismissing, setDismissing] = useState(false); const dismissTimerRef = useRef | null>(null); @@ -22,14 +19,14 @@ export function TelemetryConsentBanner() { if (!visible) return null; const handleEnable = () => { - localStorage.setItem(SENTRY_KEY, 'true'); + setSentryEnabled(true); window.location.reload(); }; const handleDecline = () => { - localStorage.setItem(SENTRY_KEY, 'false'); + setSentryEnabled(false); setDismissing(true); - dismissTimerRef.current = setTimeout(() => setVisible(false), 220); + dismissTimerRef.current = setTimeout(setVisible, 220, false); }; return ( diff --git a/src/app/components/time-date/DatePicker.tsx b/src/app/components/time-date/DatePicker.tsx index 078d91d8e..1d92ccff7 100644 --- a/src/app/components/time-date/DatePicker.tsx +++ b/src/app/components/time-date/DatePicker.tsx @@ -60,67 +60,64 @@ export const DatePicker = forwardRef( - {Array.from(new Array(daysInMonth(selectedMonth, selectedYear)).keys()) - .map((i) => i + 1) - .map((day) => ( - handleDay(day)} - disabled={ - (selectedYear === minYear && selectedMonth === minMonth && day < minDay) || - (selectedYear === maxYear && selectedMonth === maxMonth && day > maxDay) - } - > - {day} - - ))} + {Array.from( + new Array(daysInMonth(selectedMonth, selectedYear)).keys(), + (i) => i + 1 + ).map((day) => ( + handleDay(day)} + disabled={ + (selectedYear === minYear && selectedMonth === minMonth && day < minDay) || + (selectedYear === maxYear && selectedMonth === maxMonth && day > maxDay) + } + > + {day} + + ))} - {Array.from(new Array(12).keys()) - .map((i) => i + 1) - .map((month) => ( - handleMonth(month)} - disabled={ - (selectedYear === minYear && month < minMonth) || - (selectedYear === maxYear && month > maxMonth) - } - > - - {dayjs() - .month(month - 1) - .format('MMM')} - - - ))} + {Array.from(new Array(12).keys(), (i) => i + 1).map((month) => ( + handleMonth(month)} + disabled={ + (selectedYear === minYear && month < minMonth) || + (selectedYear === maxYear && month > maxMonth) + } + > + + {dayjs() + .month(month - 1) + .format('MMM')} + + + ))} - {Array.from(new Array(yearsRange).keys()) - .map((i) => minYear + i) - .map((year) => ( - handleYear(year)} - > - {year} - - ))} + {Array.from(new Array(yearsRange).keys(), (i) => minYear + i).map((year) => ( + handleYear(year)} + > + {year} + + ))} diff --git a/src/app/components/time-date/TimePicker.tsx b/src/app/components/time-date/TimePicker.tsx index c16ad7caa..039d3d5a7 100644 --- a/src/app/components/time-date/TimePicker.tsx +++ b/src/app/components/time-date/TimePicker.tsx @@ -64,7 +64,7 @@ export const TimePicker = forwardRef( {hour24Clock - ? Array.from(new Array(24).keys()).map((hour) => ( + ? Array.from(new Array(24).keys(), (hour) => ( ( {hour < 10 ? `0${hour}` : hour} )) - : Array.from(new Array(12).keys()) - .map((i) => { - if (i === 0) return 12; - return i; - }) - .map((hour) => ( - handleHour(hour)} - disabled={ - (minDay && hour12to24(hour, selectedPM) < minHour24) || - (maxDay && hour12to24(hour, selectedPM) > maxHour24) - } - > - {hour < 10 ? `0${hour}` : hour} - - ))} + : Array.from(new Array(12).keys(), (i) => { + if (i === 0) return 12; + return i; + }).map((hour) => ( + handleHour(hour)} + disabled={ + (minDay && hour12to24(hour, selectedPM) < minHour24) || + (maxDay && hour12to24(hour, selectedPM) > maxHour24) + } + > + {hour < 10 ? `0${hour}` : hour} + + ))} - {Array.from(new Array(60).keys()).map((minute) => ( + {Array.from(new Array(60).keys(), (minute) => ( { const data = await fetch(url).then((resp) => resp.json()); @@ -158,18 +158,21 @@ type YoutubeLink = { function parseYoutubeLink(url: string): YoutubeLink | null { const urlsplit = url.split('/'); - const path = urlsplit[urlsplit.length - 1]; + const path = urlsplit.at(-1); + + if (!path) return null; let videoId: string | undefined; let params: string[]; if (url.includes('youtu.be')) { - const split = path.split('?'); - [videoId] = split; - params = split[1].split('&'); + const [shortVideoId, query = ''] = path.split('?'); + videoId = shortVideoId; + params = query ? query.split('&') : []; } else { - params = path.split('?')[1].split('&'); - videoId = params.find((s) => s.startsWith('v='), params)?.split('v=')[1]; + const [, query = ''] = path.split('?'); + params = query ? query.split('&') : []; + videoId = params.find((s) => s.startsWith('v='))?.split('v=')[1]; } if (!videoId) return null; diff --git a/src/app/features/add-existing/AddExisting.tsx b/src/app/features/add-existing/AddExisting.tsx index fdee02b0c..77fc73cc3 100644 --- a/src/app/features/add-existing/AddExisting.tsx +++ b/src/app/features/add-existing/AddExisting.tsx @@ -108,7 +108,7 @@ export function AddExistingModal({ parentId, space, requestClose }: AddExistingM return true; } - return Array.from(parentIds).some((id) => isAncestor(sourceId, id, visited)); + return [...parentIds].some((id) => isAncestor(sourceId, id, visited)); }, [roomIdToParents] ); diff --git a/src/app/features/call-status/MemberSpeaking.tsx b/src/app/features/call-status/MemberSpeaking.tsx index 3c7206e5b..b5fc30a2c 100644 --- a/src/app/features/call-status/MemberSpeaking.tsx +++ b/src/app/features/call-status/MemberSpeaking.tsx @@ -8,7 +8,8 @@ type MemberSpeakingProps = { speakers: Set; }; export function MemberSpeaking({ room, speakers }: MemberSpeakingProps) { - const speakingNames = Array.from(speakers).map( + const speakingNames = Array.from( + speakers, (userId) => getMemberDisplayName(room, userId) ?? getMxIdLocalPart(userId) ?? userId ); return ( diff --git a/src/app/features/call/CallMemberCard.tsx b/src/app/features/call/CallMemberCard.tsx index 0c4ca7601..698cc998a 100644 --- a/src/app/features/call/CallMemberCard.tsx +++ b/src/app/features/call/CallMemberCard.tsx @@ -15,11 +15,11 @@ import { UserAvatar } from '../../components/user-avatar'; import { getMouseEventCords } from '../../utils/dom'; import * as css from './styles.css'; -interface MemberWithMembershipData { +type MemberWithMembershipData = { membershipData?: SessionMembershipData & { 'm.call.intent': 'video' | 'audio'; }; -} +}; type CallMemberCardProps = { member: CallMembership; diff --git a/src/app/features/call/CallView.tsx b/src/app/features/call/CallView.tsx index e79a7f6ac..9e802b961 100644 --- a/src/app/features/call/CallView.tsx +++ b/src/app/features/call/CallView.tsx @@ -147,9 +147,9 @@ function CallJoined({ joined, containerRef }: CallJoinedProps) { ); } -interface CallViewProps { +type CallViewProps = { resizable?: boolean; -} +}; export function CallView({ resizable }: CallViewProps) { const room = useRoom(); diff --git a/src/app/features/common-settings/developer-tools/DevelopTools.tsx b/src/app/features/common-settings/developer-tools/DevelopTools.tsx index 705ab1983..8f3d82cbe 100644 --- a/src/app/features/common-settings/developer-tools/DevelopTools.tsx +++ b/src/app/features/common-settings/developer-tools/DevelopTools.tsx @@ -78,15 +78,15 @@ export function DeveloperTools({ requestClose }: DeveloperToolsProps) { const userId = mx.getUserId(); const clientSyncState = mx.getSyncState(); const liveEvents = room.getLiveTimeline().getEvents(); - const latestTimelineEvent = liveEvents[liveEvents.length - 1]; + const latestTimelineEvent = liveEvents.at(-1); const latestTimelineEventId = latestTimelineEvent?.getId() ?? null; - const latestMessageEvent = [...liveEvents].reverse().find((event) => { + const latestMessageEvent = liveEvents.toReversed().find((event) => { const type = event.getType(); return type === 'm.room.message' || type === 'm.room.encrypted' || type === 'm.sticker'; }); const latestMessageEventId = latestMessageEvent?.getId() ?? null; - const latestNotificationEvent = [...liveEvents] - .reverse() + const latestNotificationEvent = liveEvents + .toReversed() .find((event) => isNotificationEvent(event)); const latestNotificationEventId = latestNotificationEvent?.getId() ?? null; const fullyReadEventId = @@ -475,89 +475,85 @@ export function DeveloperTools({ requestClose }: DeveloperToolsProps) { - {Array.from(roomState.keys()) - .sort() - .map((eventType) => { - const expanded = eventType === expandStateType; - const stateKeyToEvents = roomState.get(eventType); - if (!stateKeyToEvents) return null; + {[...roomState.keys()].sort().map((eventType) => { + const expanded = eventType === expandStateType; + const stateKeyToEvents = roomState.get(eventType); + if (!stateKeyToEvents) return null; - return ( - - - setExpandStateType(expanded ? undefined : eventType) - } - variant="Surface" - fill="None" - size="300" - radii="0" - before={ - - } - after={{stateKeyToEvents.size}} + return ( + + + setExpandStateType(expanded ? undefined : eventType) + } + variant="Surface" + fill="None" + size="300" + radii="0" + before={ + + } + after={{stateKeyToEvents.size}} + > + + + {eventType} + + + + {expanded && ( +
- - - {eventType} - - - - {expanded && ( -
+ setComposeEvent({ type: eventType, stateKey: '' }) + } + variant="Surface" + fill="None" + size="300" + radii="0" + before={} > + + + Add New + + + + {[...stateKeyToEvents.keys()].sort().map((stateKey) => ( - setComposeEvent({ type: eventType, stateKey: '' }) - } + onClick={() => { + setOpenStateEvent({ + type: eventType, + stateKey, + }); + }} + key={stateKey} variant="Surface" fill="None" size="300" radii="0" - before={} + after={} > - Add New + {stateKey ? `"${stateKey}"` : 'Default'} - {Array.from(stateKeyToEvents.keys()) - .sort() - .map((stateKey) => ( - { - setOpenStateEvent({ - type: eventType, - stateKey, - }); - }} - key={stateKey} - variant="Surface" - fill="None" - size="300" - radii="0" - after={} - > - - - {stateKey ? `"${stateKey}"` : 'Default'} - - - - ))} -
- )} - - ); - })} + ))} +
+ )} +
+ ); + })}
)} @@ -612,25 +608,23 @@ export function DeveloperTools({ requestClose }: DeveloperToolsProps) { - {Array.from(accountData.keys()) - .sort() - .map((type) => ( - } - onClick={() => setAccountDataType(type)} - > - - - {type} - - - - ))} + {[...accountData.keys()].sort().map((type) => ( + } + onClick={() => setAccountDataType(type)} + > + + + {type} + + + + ))} )} diff --git a/src/app/features/common-settings/general/RoomUpgrade.tsx b/src/app/features/common-settings/general/RoomUpgrade.tsx index ac738ff77..56f0e795f 100644 --- a/src/app/features/common-settings/general/RoomUpgrade.tsx +++ b/src/app/features/common-settings/general/RoomUpgrade.tsx @@ -55,7 +55,7 @@ function RoomUpgradeDialog({ requestClose }: { requestClose: () => void }) { const allowAdditionalCreators = creatorsSupported(selectedRoomVersion); const { additionalCreators, addAdditionalCreator, removeAdditionalCreator } = - useAdditionalCreators(Array.from(creators)); + useAdditionalCreators([...creators]); const [upgradeState, upgrade] = useAsyncCallback( useCallback( diff --git a/src/app/features/common-settings/members/Members.tsx b/src/app/features/common-settings/members/Members.tsx index 6a7abc10f..57e3ca02f 100644 --- a/src/app/features/common-settings/members/Members.tsx +++ b/src/app/features/common-settings/members/Members.tsx @@ -98,10 +98,7 @@ export function Members({ requestClose }: MembersProps) { const sortedMembers = useMemo( () => - Array.from(members) - .filter(membershipFilter.filterFn) - .sort(memberSort.sortFn) - .sort(memberPowerSort), + [...members].filter(membershipFilter.filterFn).sort(memberSort.sortFn).sort(memberPowerSort), [members, membershipFilter, memberSort, memberPowerSort] ); diff --git a/src/app/features/common-settings/permissions/PowersEditor.tsx b/src/app/features/common-settings/permissions/PowersEditor.tsx index 06cfd8337..05d18ecec 100644 --- a/src/app/features/common-settings/permissions/PowersEditor.tsx +++ b/src/app/features/common-settings/permissions/PowersEditor.tsx @@ -320,7 +320,7 @@ export function PowersEditor({ powerLevels, requestClose }: Readonly { const up = getUsedPowers(powerLevels); - return [up, Math.max(...Array.from(up))]; + return [up, Math.max(...[...up])]; }, [powerLevels]); const powerLevelTags = usePowerLevelTags(room, powerLevels); diff --git a/src/app/features/lobby/Lobby.tsx b/src/app/features/lobby/Lobby.tsx index 7c9213bad..c3032583d 100644 --- a/src/app/features/lobby/Lobby.tsx +++ b/src/app/features/lobby/Lobby.tsx @@ -271,7 +271,7 @@ export function Lobby() { // As a subspace can be in multiple spaces, // only return true if all parent spaces are closed. - const allClosed = !Array.from(parentParentIds).some( + const allClosed = ![...parentParentIds].some( (id) => !getInClosedCategories(spaceId, id, parentId, visited) ); visited.delete(categoryId); @@ -295,7 +295,7 @@ export function Lobby() { return false; } - return !Array.from(parentIds).some((id) => !getInClosedCategories(spaceId, id, roomId)); + return ![...parentIds].some((id) => !getInClosedCategories(spaceId, id, roomId)); }; const [subspaceHierarchyLimit] = useSetting(settingsAtom, 'subspaceHierarchyLimit'); @@ -439,9 +439,9 @@ export function Lobby() { } } - const itemSpaces = Array.from( - hierarchy?.find((i) => i.space.roomId === containerParentId)?.rooms ?? [] - ); + const itemSpaces = [ + ...(hierarchy?.find((i) => i.space.roomId === containerParentId)?.rooms ?? []), + ]; const beforeItem: HierarchyItem | undefined = 'space' in containerItem ? undefined : containerItem; diff --git a/src/app/features/lobby/SpaceHierarchyItem.tsx b/src/app/features/lobby/SpaceHierarchyItem.tsx index 917f25de8..9158583ed 100644 --- a/src/app/features/lobby/SpaceHierarchyItem.tsx +++ b/src/app/features/lobby/SpaceHierarchyItem.tsx @@ -95,7 +95,7 @@ export const SpaceHierarchyItem = forwardRef { - onSpacesFound(Array.from(subspaces.values())); + onSpacesFound([...subspaces.values()]); }, [subspaces, onSpacesFound]); let childItems: HierarchyItemRoom[] | undefined = roomItems?.filter( diff --git a/src/app/features/message-search/MessageSearch.tsx b/src/app/features/message-search/MessageSearch.tsx index 443d6a20c..ec03c3dab 100644 --- a/src/app/features/message-search/MessageSearch.tsx +++ b/src/app/features/message-search/MessageSearch.tsx @@ -113,7 +113,7 @@ export function MessageSearch({ const groups = useMemo(() => data?.pages.flatMap((result) => result.groups) ?? [], [data]); const highlights = useMemo(() => { const mixed = data?.pages.flatMap((result) => result.highlights); - return Array.from(new Set(mixed)); + return [...new Set(mixed)]; }, [data]); const virtualizer = useVirtualizer({ @@ -253,7 +253,7 @@ export function MessageSearch({ {((msgSearchParams.term && status === 'pending') || (groups.length > 0 && vItems.length === 0)) && ( - {[...new Array(8).keys()].map((key) => ( + {Array.from(new Array(8).keys(), (key) => ( ))} diff --git a/src/app/features/message-search/SearchFilters.tsx b/src/app/features/message-search/SearchFilters.tsx index 57a8e31af..f955bb921 100644 --- a/src/app/features/message-search/SearchFilters.tsx +++ b/src/app/features/message-search/SearchFilters.tsx @@ -142,7 +142,7 @@ function SelectRoomButton({ roomList, selectedRooms, onChange }: SelectRoomButto getRoomNameStr, SEARCH_OPTS ); - const rooms = Array.from(searchResult?.items ?? roomList).sort(factoryRoomIdByAtoZ(mx)); + const rooms = (searchResult?.items ?? roomList).toSorted(factoryRoomIdByAtoZ(mx)); const virtualizer = useVirtualizer({ count: rooms.length, diff --git a/src/app/features/message-search/useMessageSearch.ts b/src/app/features/message-search/useMessageSearch.ts index a0349531e..b860eeea3 100644 --- a/src/app/features/message-search/useMessageSearch.ts +++ b/src/app/features/message-search/useMessageSearch.ts @@ -37,7 +37,7 @@ const groupSearchResult = (results: ISearchResult[]): ResultGroup[] => { context: item.context, }; - const lastAddedGroup: ResultGroup | undefined = groups[groups.length - 1]; + const lastAddedGroup: ResultGroup | undefined = groups.at(-1); if (lastAddedGroup && roomId === lastAddedGroup.roomId) { lastAddedGroup.items.push(resultItem); return; diff --git a/src/app/features/room-settings/abbreviations/RoomAbbreviations.tsx b/src/app/features/room-settings/abbreviations/RoomAbbreviations.tsx index 333c06b36..094a870fc 100644 --- a/src/app/features/room-settings/abbreviations/RoomAbbreviations.tsx +++ b/src/app/features/room-settings/abbreviations/RoomAbbreviations.tsx @@ -70,7 +70,7 @@ export function RoomAbbreviations({ requestClose, isSpace }: AbbreviationsProps) type SpaceEntryGroup = { spaceId: string; spaceName: string; entries: AbbreviationEntry[] }; const ancestorGroups = useMemo( (): SpaceEntryGroup[] => - Array.from(getAllParents(roomToParents, room.roomId)).reduce( + [...getAllParents(roomToParents, room.roomId)].reduce( (groups, parentId) => { const parentRoom = mx.getRoom(parentId); if (!parentRoom) return groups; diff --git a/src/app/features/room/RoomCallButton.tsx b/src/app/features/room/RoomCallButton.tsx index 11becd090..c12c9a0a5 100644 --- a/src/app/features/room/RoomCallButton.tsx +++ b/src/app/features/room/RoomCallButton.tsx @@ -6,9 +6,9 @@ import { callEmbedAtom } from '$state/callEmbed'; import { useMatrixClient } from '$hooks/useMatrixClient'; import { useCallPreferences } from '$state/hooks/callPreferences'; -interface RoomCallButtonProps { +type RoomCallButtonProps = { room: Room; -} +}; export function RoomCallButton({ room }: RoomCallButtonProps) { const startCall = useCallStart(); diff --git a/src/app/features/room/RoomInput.tsx b/src/app/features/room/RoomInput.tsx index 981b9c270..8c802f692 100644 --- a/src/app/features/room/RoomInput.tsx +++ b/src/app/features/room/RoomInput.tsx @@ -173,7 +173,8 @@ const getLatestThreadEventId = (room: Room, threadRootId: string): string => { (ev) => ev.getId() !== threadRootId && !reactionOrEditEvent(ev) ); if (filtered.length > 0) { - return filtered[filtered.length - 1].getId() ?? threadRootId; + const latestThreadEvent = filtered.at(-1); + return latestThreadEvent?.getId() ?? threadRootId; } // Fall back to the live timeline if the Thread object hasn't been registered yet const liveEvents = room @@ -185,7 +186,8 @@ const getLatestThreadEventId = (room: Room, threadRootId: string): string => { ev.threadRootId === threadRootId && ev.getId() !== threadRootId && !reactionOrEditEvent(ev) ); if (liveEvents.length > 0) { - return liveEvents[liveEvents.length - 1].getId() ?? threadRootId; + const latestLiveEvent = liveEvents.at(-1); + return latestLiveEvent?.getId() ?? threadRootId; } return threadRootId; }; @@ -230,18 +232,18 @@ const getReplyContent = (replyDraft: IReplyDraft | undefined, room?: Room): IEve const log = createLogger('RoomInput'); const debugLog = createDebugLogger('RoomInput'); -interface ReplyEventContent { +type ReplyEventContent = { 'm.relates_to'?: IEventRelation; -} +}; -interface RoomInputProps { +type RoomInputProps = { editor: Editor; fileDropContainerRef: RefObject; roomId: string; room: Room; threadRootId?: string; onEditLastMessage?: () => void; -} +}; export const RoomInput = forwardRef( ({ editor, fileDropContainerRef, roomId, room, threadRootId, onEditLastMessage }, ref) => { // When in thread mode, isolate drafts by thread root ID so thread replies @@ -756,7 +758,7 @@ export const RoomInput = forwardRef( mentionData.users.add(replyDraft.userId); } - content['m.mentions'] = getMentionContent(Array.from(mentionData.users), mentionData.room); + content['m.mentions'] = getMentionContent([...mentionData.users], mentionData.room); if (replyDraft || !customHtmlEqualsPlainText(formattedBody, body)) { content.format = 'org.matrix.custom.html'; @@ -1112,20 +1114,18 @@ export const RoomInput = forwardRef( {uploadBoard && ( - {Array.from(selectedFiles) - .reverse() - .map((fileItem, index) => ( - - ))} + {selectedFiles.toReversed().map((fileItem, index) => ( + + ))} )} diff --git a/src/app/features/room/RoomTimeline.tsx b/src/app/features/room/RoomTimeline.tsx index 6fc9fc08b..cd9cbd996 100644 --- a/src/app/features/room/RoomTimeline.tsx +++ b/src/app/features/room/RoomTimeline.tsx @@ -679,8 +679,8 @@ export function RoomTimeline({ const ref = onEditLastMessageRef; ref.current = () => { const myUserId = mx.getUserId(); - const found = [...processedEventsRef.current] - .reverse() + const found = processedEventsRef.current + .toReversed() .find( (e) => e.mEvent.getSender() === myUserId && diff --git a/src/app/features/room/RoomViewHeader.tsx b/src/app/features/room/RoomViewHeader.tsx index fd08cde69..3818c9946 100644 --- a/src/app/features/room/RoomViewHeader.tsx +++ b/src/app/features/room/RoomViewHeader.tsx @@ -96,20 +96,20 @@ import { RoomCallButton } from './RoomCallButton'; const log = createLogger('RoomViewHeader'); async function getPinsHash(pinnedIds: string[]): Promise { - const sorted = [...pinnedIds].sort().join(','); + const sorted = pinnedIds.toSorted().join(','); const encoder = new TextEncoder(); const data = encoder.encode(sorted); const hashBuffer = await crypto.subtle.digest('SHA-256', data); - const hashArray = Array.from(new Uint8Array(hashBuffer)); + const hashArray = [...new Uint8Array(hashBuffer)]; const hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join(''); return hashHex.slice(0, 10); } -export interface PinReadMarker { +export type PinReadMarker = { hash: string; count: number; last_seen_id: string; -} +}; type RoomMenuProps = { room: Room; diff --git a/src/app/features/room/ThreadDrawer.tsx b/src/app/features/room/ThreadDrawer.tsx index 3676240c9..852e673ed 100644 --- a/src/app/features/room/ThreadDrawer.tsx +++ b/src/app/features/room/ThreadDrawer.tsx @@ -541,7 +541,7 @@ export function ThreadDrawer({ room, threadRootId, onClose, overlay }: ThreadDra const events = thread.events || []; if (events.length === 0) return; - const lastEvent = events[events.length - 1]; + const lastEvent = events.at(-1); if (!lastEvent || lastEvent.isSending()) return; const userId = mx.getUserId(); @@ -703,7 +703,7 @@ export function ThreadDrawer({ room, threadRootId, onClose, overlay }: ThreadDra const isInReplies = replyEventsRef.current.some((e) => e.getId() === targetId); if (!isRoot && !isInReplies) return; setJumpToEventId(targetId); - setTimeout(() => setJumpToEventId(undefined), 2500); + setTimeout(setJumpToEventId, 2500, undefined); const el = drawerRef.current; if (el) { const target = el.querySelector(`[data-message-id="${targetId}"]`); @@ -746,9 +746,7 @@ export function ThreadDrawer({ room, threadRootId, onClose, overlay }: ThreadDra const threadParticipantIds = new Set( [rootEvent, ...replyEvents].map((ev) => ev?.getSender()).filter(Boolean) as string[] ); - const latestThreadEventId = ( - replyEvents.length > 0 ? replyEvents[replyEvents.length - 1] : rootEvent - )?.getId(); + const latestThreadEventId = (replyEvents.length > 0 ? replyEvents.at(-1) : rootEvent)?.getId(); return ( { const eventId = mEvent.getId(); const pinContent: RoomPinnedEventsEventContent = { - pinned: Array.from(pinnedEvents).filter((id) => id !== eventId), + pinned: [...pinnedEvents].filter((id) => id !== eventId), }; if (!isPinned && eventId) { pinContent.pinned.push(eventId); diff --git a/src/app/features/room/message/MessageEditor.tsx b/src/app/features/room/message/MessageEditor.tsx index b5960dcca..c84251c13 100644 --- a/src/app/features/room/message/MessageEditor.tsx +++ b/src/app/features/room/message/MessageEditor.tsx @@ -225,7 +225,7 @@ export const MessageEditor = as<'div', MessageEditorProps>( mentionData.users.add(prevMentionId); }); - const mMentions = getMentionContent(Array.from(mentionData.users), mentionData.room); + const mMentions = getMentionContent([...mentionData.users], mentionData.room); newContent['m.mentions'] = mMentions; contentBody['m.mentions'] = mMentions; diff --git a/src/app/features/room/message/Reactions.tsx b/src/app/features/room/message/Reactions.tsx index a5cacf2dc..d0c03c695 100644 --- a/src/app/features/room/message/Reactions.tsx +++ b/src/app/features/room/message/Reactions.tsx @@ -71,7 +71,7 @@ export const Reactions = as<'div', ReactionsProps>( ref={ref} > {reactions.map(([key, events]) => { - const rEvents = Array.from(events); + const rEvents = [...events]; if (rEvents.length === 0 || typeof key !== 'string') return null; const myREvent = myUserId ? rEvents.find(factoryEventSentBy(myUserId)) : undefined; const isPressed = !!myREvent?.getRelation(); diff --git a/src/app/features/room/reaction-viewer/ReactionViewer.tsx b/src/app/features/room/reaction-viewer/ReactionViewer.tsx index fc0573499..059ea39a5 100644 --- a/src/app/features/room/reaction-viewer/ReactionViewer.tsx +++ b/src/app/features/room/reaction-viewer/ReactionViewer.tsx @@ -62,7 +62,7 @@ export const ReactionViewer = as<'div', ReactionViewerProps>( const getReactionsForKey = (key: string): MatrixEvent[] => { const reactSet = reactions.find(([k]) => k === key)?.[1]; if (!reactSet) return []; - return Array.from(reactSet); + return [...reactSet]; }; const selectedReactions = getReactionsForKey(selectedKey); diff --git a/src/app/features/room/room-pin-menu/RoomPinMenu.tsx b/src/app/features/room/room-pin-menu/RoomPinMenu.tsx index 705e8e850..be3bb04a8 100644 --- a/src/app/features/room/room-pin-menu/RoomPinMenu.tsx +++ b/src/app/features/room/room-pin-menu/RoomPinMenu.tsx @@ -310,7 +310,7 @@ export const RoomPinMenu = forwardRef( ); const pinnedEvents = useRoomPinnedEvents(room); - const sortedPinnedEvent = useMemo(() => Array.from(pinnedEvents).reverse(), [pinnedEvents]); + const sortedPinnedEvent = useMemo(() => pinnedEvents.toReversed(), [pinnedEvents]); const useAuthentication = useMediaAuthentication(); const [mediaAutoLoad] = useSetting(settingsAtom, 'mediaAutoLoad'); const [urlPreview] = useSetting(settingsAtom, 'urlPreview'); diff --git a/src/app/features/search/Search.tsx b/src/app/features/search/Search.tsx index 4c29a68df..7b588f99b 100644 --- a/src/app/features/search/Search.tsx +++ b/src/app/features/search/Search.tsx @@ -87,10 +87,10 @@ const useTopActiveRooms = ( return spaces; } if (searchRoomType === SearchRoomType.Directs) { - return [...directs].sort(factoryRoomIdByActivity(mx)).slice(0, 20); + return directs.toSorted(factoryRoomIdByActivity(mx)).slice(0, 20); } if (searchRoomType === SearchRoomType.Rooms) { - return [...rooms].sort(factoryRoomIdByActivity(mx)).slice(0, 20); + return rooms.toSorted(factoryRoomIdByActivity(mx)).slice(0, 20); } return [...rooms, ...directs].sort(factoryRoomIdByActivity(mx)).slice(0, 20); }, [mx, rooms, directs, spaces, searchRoomType]); @@ -178,7 +178,7 @@ export function Search({ requestClose }: SearchProps) { const items = result ? result.items : topActiveRooms; if (!selectedSpaceId) return items; - return [...items].sort((a, b) => { + return items.toSorted((a, b) => { const aInSpace = getAllParents(roomToParents, a)?.has(selectedSpaceId) ? 1 : 0; const bInSpace = getAllParents(roomToParents, b)?.has(selectedSpaceId) ? 1 : 0; return bInSpace - aInSpace; @@ -328,7 +328,7 @@ export function Search({ requestClose }: SearchProps) { const exactParents = roomToParents.get(roomId); const perfectParent = - exactParents && guessPerfectParent(mx, roomId, Array.from(exactParents)); + exactParents && guessPerfectParent(mx, roomId, [...exactParents]); const unread = roomToUnread.get(roomId); diff --git a/src/app/features/settings/account/TimezoneEditor.tsx b/src/app/features/settings/account/TimezoneEditor.tsx index 0b3e12d1c..4832268ca 100644 --- a/src/app/features/settings/account/TimezoneEditor.tsx +++ b/src/app/features/settings/account/TimezoneEditor.tsx @@ -2,9 +2,9 @@ import { useMemo, useState, useEffect, type ChangeEvent } from 'react'; import { Box, IconButton, Button, Icon, Icons, Input, Text } from 'folds'; import { SettingTile } from '$components/setting-tile'; -interface IntlWithSupportedValues { +type IntlWithSupportedValues = { supportedValuesOf(key: 'timeZone' | string): string[]; -} +}; type TimezoneEditorProps = { current?: string; diff --git a/src/app/features/settings/developer-tools/AccountData.tsx b/src/app/features/settings/developer-tools/AccountData.tsx index 6cd68e9bc..2a527db4e 100644 --- a/src/app/features/settings/developer-tools/AccountData.tsx +++ b/src/app/features/settings/developer-tools/AccountData.tsx @@ -16,14 +16,14 @@ export function AccountData({ expand, onExpandToggle, onSelect }: AccountDataPro const mx = useMatrixClient(); const [accountDataTypes, setAccountDataKeys] = useState(() => // TODO: tighten this once account data event typing is standardized. - Array.from(mx.store.accountData.keys()) + [...mx.store.accountData.keys()] ); useAccountDataCallback( mx, useCallback(() => { // TODO: tighten this once account data event typing is standardized. - setAccountDataKeys(Array.from(mx.store.accountData.keys())); + setAccountDataKeys([...mx.store.accountData.keys()]); }, [mx]) ); diff --git a/src/app/features/settings/developer-tools/SentrySettings.tsx b/src/app/features/settings/developer-tools/SentrySettings.tsx index 3c6ef4874..3f4be813f 100644 --- a/src/app/features/settings/developer-tools/SentrySettings.tsx +++ b/src/app/features/settings/developer-tools/SentrySettings.tsx @@ -3,6 +3,7 @@ import { Box, Text, Switch, Button } from 'folds'; import { SequenceCard } from '$components/sequence-card'; import { SettingTile } from '$components/setting-tile'; import { SequenceCardStyle } from '$features/settings/styles.css'; +import { getSentryEnabled } from '$state/sentryStorage'; import { getDebugLogger, type LogCategory } from '$utils/debugLogger'; const ALL_CATEGORIES: LogCategory[] = [ @@ -50,7 +51,7 @@ export function SentrySettings() { }; const isSentryConfigured = Boolean(import.meta.env.VITE_SENTRY_DSN); - const sentryEnabled = localStorage.getItem('sable_sentry_enabled') === 'true'; + const sentryEnabled = getSentryEnabled(); const environment = import.meta.env.VITE_SENTRY_ENVIRONMENT || import.meta.env.MODE; const isProd = environment === 'production'; const traceSampleRate = isProd ? '10%' : '100%'; diff --git a/src/app/features/settings/developer-tools/SyncDiagnostics.tsx b/src/app/features/settings/developer-tools/SyncDiagnostics.tsx index f9b062b71..7e9f302f9 100644 --- a/src/app/features/settings/developer-tools/SyncDiagnostics.tsx +++ b/src/app/features/settings/developer-tools/SyncDiagnostics.tsx @@ -77,8 +77,10 @@ const getUnreadDriftRooms = (mx: ReturnType): UnreadDrif if (sdkTotal <= 0 && sdkHighlight <= 0) return driftRooms; if (reconciledUnread.total <= 0 && reconciledUnread.highlight <= 0) return driftRooms; - const latestNotificationEvent = [...room.getLiveTimeline().getEvents()] - .reverse() + const latestNotificationEvent = room + .getLiveTimeline() + .getEvents() + .toReversed() .find((event) => !event.isSending() && isNotificationEvent(event)); const latestNotificationEventId = latestNotificationEvent?.getId() ?? null; if (!latestNotificationEventId) return driftRooms; diff --git a/src/app/features/settings/devices/OtherDevices.tsx b/src/app/features/settings/devices/OtherDevices.tsx index 8687f1165..c37e0fce0 100644 --- a/src/app/features/settings/devices/OtherDevices.tsx +++ b/src/app/features/settings/devices/OtherDevices.tsx @@ -76,7 +76,7 @@ export function OtherDevices({ devices, refreshDeviceList, showVerification }: O const deleteDevices = useAsync( useCallback( async (authDict?: AuthDict) => { - await mx.deleteMultipleDevices(Array.from(deleted), authDict); + await mx.deleteMultipleDevices([...deleted], authDict); }, [mx, deleted] ), diff --git a/src/app/features/settings/emojis-stickers/GlobalPacks.tsx b/src/app/features/settings/emojis-stickers/GlobalPacks.tsx index 799e709f6..4ff83323a 100644 --- a/src/app/features/settings/emojis-stickers/GlobalPacks.tsx +++ b/src/app/features/settings/emojis-stickers/GlobalPacks.tsx @@ -81,9 +81,9 @@ function GlobalPackSelector({ const addSelected = (adds: PackAddress[]) => { setSelected((addresses) => { - const newAddresses = Array.from(addresses); + const newAddresses = [...addresses]; adds.forEach((address) => { - if (newAddresses.find((addr) => packAddressEqual(addr, address))) { + if (newAddresses.some((addr) => packAddressEqual(addr, address))) { return; } newAddresses.push(address); @@ -95,7 +95,7 @@ function GlobalPackSelector({ const removeSelected = (adds: PackAddress[]) => { setSelected((addresses) => { const newAddresses = addresses.filter( - (addr) => !adds.find((address) => packAddressEqual(addr, address)) + (addr) => !adds.some((address) => packAddressEqual(addr, address)) ); return newAddresses; }); @@ -134,7 +134,7 @@ function GlobalPackSelector({ paddingRight: config.space.S100, }} > - {Array.from(roomToPacks.entries()).map(([roomId, roomPacks]) => { + {Array.from(roomToPacks.entries(), ([roomId, roomPacks]) => { const room = mx.getRoom(roomId); if (!room) return null; const roomPackAddresses = roomPacks @@ -174,7 +174,7 @@ function GlobalPackSelector({ const { address } = pack; if (!address) return null; - const added = !!selected.find((addr) => packAddressEqual(addr, address)); + const added = selected.some((addr) => packAddressEqual(addr, address)); return ( roomsImagePack.filter( - (pack) => !globalPacks.find((p) => packAddressEqual(pack.address, p.address)) + (pack) => !globalPacks.some((p) => packAddressEqual(pack.address, p.address)) ), [roomsImagePack, globalPacks] ); @@ -280,7 +280,7 @@ export function GlobalPacks({ onViewPack }: GlobalPacksProps) { const unselectedGlobalPacks = useMemo( () => nonGlobalPacks.filter( - (pack) => !selectedPacks.find((addr) => packAddressEqual(pack.address, addr)) + (pack) => !selectedPacks.some((addr) => packAddressEqual(pack.address, addr)) ), [selectedPacks, nonGlobalPacks] ); @@ -347,7 +347,7 @@ export function GlobalPacks({ onViewPack }: GlobalPacksProps) { const avatarUrl = avatarMxc ? mxcUrlToHttp(mx, avatarMxc, useAuthentication) : undefined; const { address } = pack; if (!address) return null; - const removed = !!removedPacks.find((addr) => packAddressEqual(addr, address)); + const removed = removedPacks.some((addr) => packAddressEqual(addr, address)); return ( {globalPacks.map(renderPack)} {nonGlobalPacks - .filter((pack) => !!selectedPacks.find((addr) => packAddressEqual(pack.address, addr))) + .filter((pack) => selectedPacks.some((addr) => packAddressEqual(pack.address, addr))) .map(renderPack)} {hasChanges && ( diff --git a/src/app/features/settings/general/General.tsx b/src/app/features/settings/general/General.tsx index 1d4bcd1e5..15467bedb 100644 --- a/src/app/features/settings/general/General.tsx +++ b/src/app/features/settings/general/General.tsx @@ -48,6 +48,12 @@ import { useMessageSpacingItems } from '$hooks/useMessageSpacing'; import { useDateFormatItems } from '$hooks/useDateFormat'; import { SequenceCardStyle } from '$features/settings/styles.css'; import { sessionsAtom, activeSessionIdAtom } from '$state/sessions'; +import { + getSentryEnabled, + getSentryReplayEnabled, + setSentryEnabled as persistSentryEnabled, + setSentryReplayEnabled, +} from '$state/sentryStorage'; import { useClientConfig } from '$hooks/useClientConfig'; import { resolveSlidingEnabled } from '$client/initMatrix'; import { isKeyHotkey } from 'is-hotkey'; @@ -1239,33 +1245,21 @@ function SettingsSyncSection() { } function DiagnosticsAndPrivacy() { - const [sentryEnabled, setSentryEnabled] = useState( - localStorage.getItem('sable_sentry_enabled') === 'true' - ); - const [sessionReplayEnabled, setSessionReplayEnabled] = useState( - localStorage.getItem('sable_sentry_replay_enabled') === 'true' - ); + const [sentryEnabled, setSentryEnabled] = useState(getSentryEnabled()); + const [sessionReplayEnabled, setSessionReplayEnabled] = useState(getSentryReplayEnabled()); const [needsRefresh, setNeedsRefresh] = useState(false); const isSentryConfigured = Boolean(import.meta.env.VITE_SENTRY_DSN); const handleSentryToggle = (enabled: boolean) => { setSentryEnabled(enabled); - if (enabled) { - localStorage.setItem('sable_sentry_enabled', 'true'); - } else { - localStorage.setItem('sable_sentry_enabled', 'false'); - } + persistSentryEnabled(enabled); setNeedsRefresh(true); }; const handleReplayToggle = (enabled: boolean) => { setSessionReplayEnabled(enabled); - if (enabled) { - localStorage.setItem('sable_sentry_replay_enabled', 'true'); - } else { - localStorage.removeItem('sable_sentry_replay_enabled'); - } + setSentryReplayEnabled(enabled); setNeedsRefresh(true); }; diff --git a/src/app/features/settings/keyboard-shortcuts/KeyboardShortcuts.tsx b/src/app/features/settings/keyboard-shortcuts/KeyboardShortcuts.tsx index 0ce94a9c3..99831fa03 100644 --- a/src/app/features/settings/keyboard-shortcuts/KeyboardShortcuts.tsx +++ b/src/app/features/settings/keyboard-shortcuts/KeyboardShortcuts.tsx @@ -19,7 +19,7 @@ type ShortcutCategory = { function formatKey(key: string): string { const isMac = - typeof navigator !== 'undefined' && navigator.platform.toUpperCase().indexOf('MAC') >= 0; + typeof navigator !== 'undefined' && navigator.platform.toUpperCase().includes('MAC'); return key .replace(/\bmod\b/g, isMac ? '⌘' : 'Ctrl') .replace(/\balt\b/gi, isMac ? '⌥' : 'Alt') diff --git a/src/app/features/widgets/IntegrationManager.tsx b/src/app/features/widgets/IntegrationManager.tsx index 09ab8bcae..133b87c66 100644 --- a/src/app/features/widgets/IntegrationManager.tsx +++ b/src/app/features/widgets/IntegrationManager.tsx @@ -17,11 +17,11 @@ import { type Room } from '$types/matrix-sdk'; import { useIntegrationManager, buildIntegrationManagerUrl } from '$hooks/useIntegrationManager'; import * as css from './IntegrationManager.css'; -interface IntegrationManagerProps { +type IntegrationManagerProps = { room: Room; open: boolean; onClose: () => void; -} +}; export function IntegrationManager({ room, open, onClose }: IntegrationManagerProps) { const { managers, scalarToken, loading, error } = useIntegrationManager(); diff --git a/src/app/features/widgets/WidgetIframe.tsx b/src/app/features/widgets/WidgetIframe.tsx index bf63cde61..a7d1eb981 100644 --- a/src/app/features/widgets/WidgetIframe.tsx +++ b/src/app/features/widgets/WidgetIframe.tsx @@ -20,12 +20,12 @@ import { GenericWidgetDriver, type CapabilityApprovalCallback } from './GenericW const log = createLogger('WidgetIframe'); -interface WidgetIframeProps { +type WidgetIframeProps = { widget: IWidget; roomId: string; mx: MatrixClient; onCapabilityRequest?: CapabilityApprovalCallback; -} +}; export function WidgetIframe({ widget, roomId, mx, onCapabilityRequest }: WidgetIframeProps) { const iframeRef = useRef(null); @@ -84,7 +84,7 @@ export function WidgetIframe({ widget, roomId, mx, onCapabilityRequest }: Widget return; } const stateEvents = state.events?.get(type); - Array.from(stateEvents?.values() ?? []).forEach((eventObject: MatrixEvent) => { + [...(stateEvents?.values() ?? [])].forEach((eventObject: MatrixEvent) => { events.push(eventObject.event); }); messaging.transport.reply(ev.detail, { events }); @@ -93,7 +93,7 @@ export function WidgetIframe({ widget, roomId, mx, onCapabilityRequest }: Widget const readUpToMap: Record = {}; mx.getRooms().forEach((room) => { const roomEvents = room.getLiveTimeline()?.getEvents() || []; - const last = roomEvents[roomEvents.length - 1]; + const last = roomEvents.at(-1); if (last) { const id = last.getId(); if (id) readUpToMap[room.roomId] = id; diff --git a/src/app/hooks/timeline/useProcessedTimeline.ts b/src/app/hooks/timeline/useProcessedTimeline.ts index 861736f5d..479a62a53 100644 --- a/src/app/hooks/timeline/useProcessedTimeline.ts +++ b/src/app/hooks/timeline/useProcessedTimeline.ts @@ -8,7 +8,7 @@ import { import { reactionOrEditEvent, isMembershipChanged } from '$utils/room'; import { inSameDay, minuteDifference } from '$utils/time'; -export interface UseProcessedTimelineOptions { +export type UseProcessedTimelineOptions = { items: number[]; linkedTimelines: EventTimeline[]; ignoredUsersSet: Set; @@ -20,9 +20,9 @@ export interface UseProcessedTimelineOptions { hideNickAvatarEvents: boolean; isReadOnly: boolean; hideMemberInReadOnly: boolean; -} +}; -export interface ProcessedEvent { +export type ProcessedEvent = { id: string; itemIndex: number; mEvent: MatrixEvent; @@ -31,7 +31,7 @@ export interface ProcessedEvent { collapsed: boolean; willRenderNewDivider: boolean; willRenderDayDivider: boolean; -} +}; const MESSAGE_EVENT_TYPES = [ 'm.room.message', diff --git a/src/app/hooks/timeline/useTimelineActions.ts b/src/app/hooks/timeline/useTimelineActions.ts index a3782eea0..434546ac7 100644 --- a/src/app/hooks/timeline/useTimelineActions.ts +++ b/src/app/hooks/timeline/useTimelineActions.ts @@ -13,7 +13,7 @@ import { getMxIdLocalPart, toggleReaction } from '$utils/matrix'; import { getMemberDisplayName, getEditedEvent } from '$utils/room'; import { createMentionElement, isEmptyEditor, moveCursor } from '$components/editor'; -export interface UseTimelineActionsOptions { +export type UseTimelineActionsOptions = { room: Room; mx: MatrixClient; editor: Editor; @@ -36,7 +36,7 @@ export interface UseTimelineActionsOptions { setEditId: (editId: string | undefined) => void; onEditorReset?: () => void; handleOpenEvent: (eventId: string) => void; -} +}; export function useTimelineActions({ room, diff --git a/src/app/hooks/timeline/useTimelineEventRenderer.tsx b/src/app/hooks/timeline/useTimelineEventRenderer.tsx index d7d94e49d..60bf9bd63 100644 --- a/src/app/hooks/timeline/useTimelineEventRenderer.tsx +++ b/src/app/hooks/timeline/useTimelineEventRenderer.tsx @@ -204,7 +204,7 @@ function ThreadReplyChip({ ); } -export interface TimelineEventRendererOptions { +export type TimelineEventRendererOptions = { room: Room; mx: MatrixClient; pushProcessor: PushProcessor; @@ -256,7 +256,7 @@ export interface TimelineEventRendererOptions { getMemberPowerTag: ReturnType; parseMemberEvent: ReturnType; }; -} +}; export function useTimelineEventRenderer({ room, diff --git a/src/app/hooks/timeline/useTimelineSync.ts b/src/app/hooks/timeline/useTimelineSync.ts index 62c525f13..b567aaef9 100644 --- a/src/app/hooks/timeline/useTimelineSync.ts +++ b/src/app/hooks/timeline/useTimelineSync.ts @@ -326,7 +326,7 @@ const useThreadUpdate = (room: Room, onUpdate: () => void) => { }, [room]); }; -export interface UseTimelineSyncOptions { +export type UseTimelineSyncOptions = { room: Room; mx: MatrixClient; eventId?: string; @@ -337,7 +337,7 @@ export interface UseTimelineSyncOptions { setUnreadInfo: Dispatch>>; hideReadsRef: React.MutableRefObject; readUptoEventIdRef: React.MutableRefObject; -} +}; export function useTimelineSync({ room, diff --git a/src/app/hooks/useAsyncSearch.ts b/src/app/hooks/useAsyncSearch.ts index 5ab436d09..36e74d550 100644 --- a/src/app/hooks/useAsyncSearch.ts +++ b/src/app/hooks/useAsyncSearch.ts @@ -52,7 +52,7 @@ export const orderSearchItems = ( getItemStr: SearchItemStrGetter, options?: UseAsyncSearchOptions ): TSearchItem[] => { - const orderedItems: TSearchItem[] = Array.from(items); + const orderedItems: TSearchItem[] = [...items]; // we will consider "_" as word boundary char. // because in more use-cases it is used. (like: emojishortcode) diff --git a/src/app/hooks/useCallSignaling.ts b/src/app/hooks/useCallSignaling.ts index 16620acb9..66577565a 100644 --- a/src/app/hooks/useCallSignaling.ts +++ b/src/app/hooks/useCallSignaling.ts @@ -14,10 +14,10 @@ const debugLog = createDebugLogger('CallSignaling'); type CallPhase = 'IDLE' | 'RINGING_OUT' | 'RINGING_IN' | 'ACTIVE' | 'ENDED'; -interface SignalState { +type SignalState = { incoming: string | null; outgoing: string | null; -} +}; export function useCallSignaling() { const mx = useMatrixClient(); @@ -100,7 +100,7 @@ export function useCallSignaling() { const myUserId = mx.getUserId(); const now = Date.now(); - const signal = Array.from(mDirects).reduce( + const signal = [...mDirects].reduce( (acc, roomId) => { if (acc.incoming || mutedRoomIdRef.current === roomId) return acc; diff --git a/src/app/hooks/useCommands.ts b/src/app/hooks/useCommands.ts index 91c610ca3..de621a476 100644 --- a/src/app/hooks/useCommands.ts +++ b/src/app/hooks/useCommands.ts @@ -164,10 +164,7 @@ const hslToHex = (h: number, s: number, l: number): string => { const getAllTextNodes = (root: Node): Node[] => root.nodeType === Node.TEXT_NODE ? [root] - : Array.from(root.childNodes).reduce( - (acc, child) => acc.concat(getAllTextNodes(child)), - [] - ); + : [...root.childNodes].reduce((acc, child) => [...acc, ...getAllTextNodes(child)], []); export const rainbowify = (htmlInput: string): string => { const div = document.createElement('div'); @@ -175,7 +172,7 @@ export const rainbowify = (htmlInput: string): string => { const textNodes = getAllTextNodes(div); const totalTextLen = textNodes.reduce((acc, node) => { const text = node.textContent || ''; - const cleanLen = Array.from(text).filter((c) => c.trim().length > 0).length; + const cleanLen = [...text].filter((c) => c.trim().length > 0).length; return acc + cleanLen; }, 0); @@ -183,7 +180,7 @@ export const rainbowify = (htmlInput: string): string => { const text = node.textContent || ''; if (!text.trim()) return currentGlobalIdx; - const chars = Array.from(text); + const chars = [...text]; const { html: newHtml, count: charsProcessed } = chars.reduce( (acc, char) => { @@ -447,7 +444,7 @@ export const useCommands = (mx: MatrixClient, room: Room): CommandRecord => { const rawIds = splitWithSpace(payload); const userIds = rawIds.filter((id) => isUserId(id)); if (userIds.length > 0) { - let ignoredUsers = mx.getIgnoredUsers().concat(userIds); + let ignoredUsers = [...mx.getIgnoredUsers(), ...userIds]; ignoredUsers = [...new Set(ignoredUsers)]; await mx.setIgnoredUsers(ignoredUsers); } @@ -614,7 +611,7 @@ export const useCommands = (mx: MatrixClient, room: Room): CommandRecord => { if (newAvatar.length === 0) { // no avatar, reset to global newAvatar = profile.avatarUrl; - } else if (!newAvatar.match(/^mxc:\/\/\S+$/)) { + } else if (!/^mxc:\/\/\S+$/.test(newAvatar)) { // bad mxc return; } diff --git a/src/app/hooks/useComposingCheck.ts b/src/app/hooks/useComposingCheck.ts index 9208fcf33..a9f508c9d 100644 --- a/src/app/hooks/useComposingCheck.ts +++ b/src/app/hooks/useComposingCheck.ts @@ -2,9 +2,9 @@ import { useCallback, useEffect } from 'react'; import { useAtomValue, useSetAtom } from 'jotai'; import { lastCompositionEndAtom } from '$state/lastCompositionEnd'; -interface TimeStamped { +type TimeStamped = { readonly timeStamp: number; -} +}; export function useCompositionEndTracking(): void { const setLastCompositionEnd = useSetAtom(lastCompositionEndAtom); @@ -24,13 +24,13 @@ export function useCompositionEndTracking(): void { }); } -interface IsComposingLike { +type IsComposingLike = { readonly timeStamp: number; readonly keyCode: number; readonly nativeEvent: { readonly isComposing?: boolean; }; -} +}; export function useComposingCheck({ compositionEndThreshold = 500, diff --git a/src/app/hooks/useDebounce.ts b/src/app/hooks/useDebounce.ts index 5f33976a3..d3ebc7b3d 100644 --- a/src/app/hooks/useDebounce.ts +++ b/src/app/hooks/useDebounce.ts @@ -1,9 +1,9 @@ import { useCallback, useRef } from 'react'; -export interface DebounceOptions { +export type DebounceOptions = { wait?: number; immediate?: boolean; -} +}; export type DebounceCallback = (...args: T) => void; export function useDebounce( diff --git a/src/app/hooks/useImageGestures.ts b/src/app/hooks/useImageGestures.ts index 203d35784..90d539628 100644 --- a/src/app/hooks/useImageGestures.ts +++ b/src/app/hooks/useImageGestures.ts @@ -30,7 +30,7 @@ export const useImageGestures = (active: boolean, step = 0.2, min = 0.1, max = 5 setCursor('grabbing'); if (activePointers.current.size === 2) { - const points = Array.from(activePointers.current.values()); + const points = [...activePointers.current.values()]; initialDist.current = Math.hypot(points[0].x - points[1].x, points[0].y - points[1].y); } }; @@ -42,7 +42,7 @@ export const useImageGestures = (active: boolean, step = 0.2, min = 0.1, max = 5 activePointers.current.set(e.pointerId, { x: e.clientX, y: e.clientY }); if (activePointers.current.size === 2) { - const points = Array.from(activePointers.current.values()); + const points = [...activePointers.current.values()]; const currentDist = Math.hypot(points[0].x - points[1].x, points[0].y - points[1].y); const delta = currentDist / initialDist.current; diff --git a/src/app/hooks/useImagePackRooms.ts b/src/app/hooks/useImagePackRooms.ts index 6e22886e3..d9622db45 100644 --- a/src/app/hooks/useImagePackRooms.ts +++ b/src/app/hooks/useImagePackRooms.ts @@ -10,7 +10,7 @@ export const useImagePackRooms = ( const mx = useMatrixClient(); const imagePackRooms: Room[] = useMemo(() => { - const allParentSpaces = [roomId].concat(Array.from(getAllParents(roomToParents, roomId))); + const allParentSpaces = [...[roomId], ...[...getAllParents(roomToParents, roomId)]]; return allParentSpaces.reduce((list, rId) => { const r = mx.getRoom(rId); if (r) list.push(r); diff --git a/src/app/hooks/useImagePacks.ts b/src/app/hooks/useImagePacks.ts index 47c6cbedd..b318034a3 100644 --- a/src/app/hooks/useImagePacks.ts +++ b/src/app/hooks/useImagePacks.ts @@ -24,8 +24,8 @@ import { useStateEventCallback } from './useStateEventCallback'; const imagePackEqual = (a: ImagePack | undefined, b: ImagePack | undefined): boolean => { if (!a && !b) return true; if (!a || !b) return false; - const aImages = Array.from(a.images.collection.entries()); - const bImages = Array.from(b.images.collection.entries()); + const aImages = [...a.images.collection.entries()]; + const bImages = [...b.images.collection.entries()]; if (aImages.length !== bImages.length) return false; const sameImages = aImages.every(([shortcode, image], index) => { const [otherShortcode, otherImage] = bImages[index]; @@ -136,7 +136,7 @@ export const useGlobalImagePacks = (): ImagePack[] => { const stateKey = mEvent.getStateKey(); if (eventType === StateEvent.PoniesRoomEmotes && roomId && typeof stateKey === 'string') { setGlobalPacks((prev) => { - const global = !!prev.find( + const global = prev.some( (pack) => pack.address && pack.address.roomId === roomId && pack.address.stateKey === stateKey ); @@ -287,7 +287,7 @@ export const useRoomsImagePacks = (rooms: Room[]) => { useCallback( (mEvent) => { if ( - rooms.find((room) => room.roomId === mEvent.getRoomId()) && + rooms.some((room) => room.roomId === mEvent.getRoomId()) && mEvent.getType() === StateEvent.PoniesRoomEmotes ) { setRoomPacks((prev) => { @@ -312,10 +312,11 @@ export const useRelevantImagePacks = (usage: ImageUsage, rooms: Room[]): ImagePa const packs = userPack ? [userPack] : []; const globalPackIds = new Set(globalPacks.map((pack) => pack.id)); - const relPacks = packs.concat( - globalPacks, - roomsPacks.filter((pack) => !globalPackIds.has(pack.id)) - ); + const relPacks = [ + ...packs, + ...globalPacks, + ...roomsPacks.filter((pack) => !globalPackIds.has(pack.id)), + ]; return relPacks.filter((pack) => pack.getImages(usage).length > 0); }, [userPack, globalPacks, roomsPacks, usage]); diff --git a/src/app/hooks/useIntegrationManager.ts b/src/app/hooks/useIntegrationManager.ts index c84d98d97..76a978288 100644 --- a/src/app/hooks/useIntegrationManager.ts +++ b/src/app/hooks/useIntegrationManager.ts @@ -2,10 +2,10 @@ import { useCallback, useEffect, useState } from 'react'; import { type MatrixClient } from '$types/matrix-sdk'; import { useMatrixClient } from './useMatrixClient'; -export interface IntegrationManager { +export type IntegrationManager = { apiUrl: string; uiUrl: string; -} +}; const DEFAULT_MANAGERS: IntegrationManager[] = [ { diff --git a/src/app/hooks/useMediaConfig.ts b/src/app/hooks/useMediaConfig.ts index 929ebd004..d633cd6b7 100644 --- a/src/app/hooks/useMediaConfig.ts +++ b/src/app/hooks/useMediaConfig.ts @@ -1,9 +1,9 @@ import { createContext, useContext } from 'react'; -export interface MediaConfig { +export type MediaConfig = { [key: string]: unknown; 'm.upload.size'?: number; -} +}; const MediaConfigContext = createContext(null); diff --git a/src/app/hooks/usePerMessageProfile.ts b/src/app/hooks/usePerMessageProfile.ts index dced8f01e..b3b996acc 100644 --- a/src/app/hooks/usePerMessageProfile.ts +++ b/src/app/hooks/usePerMessageProfile.ts @@ -198,7 +198,7 @@ async function getRoomsUsingProfile(mx: MatrixClient, profileId: string): Promis const content: PerMessageProfileRoomAssociationWrapper | undefined = accountData?.getContent(); const associations = getAssociationsMap(content); const roomsUsingProfile: string[] = []; - Array.from(associations.entries()).forEach(([roomId, assoc]) => { + [...associations.entries()].forEach(([roomId, assoc]) => { if (assoc?.profileId === profileId) roomsUsingProfile.push(roomId); }); return roomsUsingProfile; diff --git a/src/app/hooks/usePowerLevelTags.ts b/src/app/hooks/usePowerLevelTags.ts index 6b5407cdd..05cff7f6d 100644 --- a/src/app/hooks/usePowerLevelTags.ts +++ b/src/app/hooks/usePowerLevelTags.ts @@ -95,7 +95,7 @@ export const usePowerLevelTags = (room: Room, powerLevels: IPowerLevels): PowerL const powerToTags: PowerLevelTags = { ...content }; const powers = getUsedPowers(powerLevels); - Array.from(powers).forEach((power) => { + [...powers].forEach((power) => { if (powerToTags[power]?.name === undefined) { powerToTags[power] = DEFAULT_TAGS[power] ?? generateFallbackTag(DEFAULT_TAGS, power); } diff --git a/src/app/hooks/usePowerLevels.ts b/src/app/hooks/usePowerLevels.ts index 2332f3354..a99f2d5b6 100644 --- a/src/app/hooks/usePowerLevels.ts +++ b/src/app/hooks/usePowerLevels.ts @@ -109,7 +109,7 @@ export const useRoomsPowerLevels = (rooms: Room[]): Map => roomId && event.getType() === StateEvent.RoomPowerLevels && event.getStateKey() === '' && - rooms.find((r) => r.roomId === roomId) + rooms.some((r) => r.roomId === roomId) ) { setRoomToPowerLevels(getRoomsPowerLevels()); } diff --git a/src/app/hooks/useRoomAbbreviations.ts b/src/app/hooks/useRoomAbbreviations.ts index 91a2b35a7..34a93d27c 100644 --- a/src/app/hooks/useRoomAbbreviations.ts +++ b/src/app/hooks/useRoomAbbreviations.ts @@ -54,7 +54,7 @@ export const useMergedAbbreviations = (room: Room): Map => { ); return useMemo(() => { - const allParentIds = Array.from(getAllParents(roomToParents, room.roomId)); + const allParentIds = [...getAllParents(roomToParents, room.roomId)]; const ancestorEntries = allParentIds.flatMap((parentId) => { const parentRoom = mx.getRoom(parentId); if (!parentRoom) return []; diff --git a/src/app/hooks/useRoomAccountData.ts b/src/app/hooks/useRoomAccountData.ts index 5fd4ff520..fe66645d3 100644 --- a/src/app/hooks/useRoomAccountData.ts +++ b/src/app/hooks/useRoomAccountData.ts @@ -5,7 +5,7 @@ export const useRoomAccountData = (room: Room): Map => { const getAccountData = useCallback((): Map => { const accountData = new Map(); - Array.from(room.accountData.entries()).forEach(([type, mEvent]) => { + [...room.accountData.entries()].forEach(([type, mEvent]) => { const content = mEvent.getContent(); accountData.set(type, content); }); diff --git a/src/app/hooks/useRoomWidgets.ts b/src/app/hooks/useRoomWidgets.ts index 3c1a43444..e2cbde94f 100644 --- a/src/app/hooks/useRoomWidgets.ts +++ b/src/app/hooks/useRoomWidgets.ts @@ -6,10 +6,10 @@ import { getStateEvents } from '$utils/room'; import { useStateEventCallback } from './useStateEventCallback'; import { useForceUpdate } from './useForceUpdate'; -export interface RoomWidget extends IWidget { +export type RoomWidget = { eventId?: string; sender?: string; -} +} & IWidget; export const resolveWidgetUrl = ( url: string, diff --git a/src/app/hooks/useSidebarItems.ts b/src/app/hooks/useSidebarItems.ts index b3fa793a4..49a0e673c 100644 --- a/src/app/hooks/useSidebarItems.ts +++ b/src/app/hooks/useSidebarItems.ts @@ -48,13 +48,13 @@ export const parseSidebar = ( typeof item === 'object' && typeof item.id === 'string' && Array.isArray(item.content) && - !items.find((i) => (typeof i === 'string' ? false : i.id === item.id)) + !items.some((i) => (typeof i === 'string' ? false : i.id === item.id)) ) { const safeContent = item.content.filter(safeToAdd); safeContent.forEach((i) => orphans.delete(i)); items.push({ ...item, - content: Array.from(new Set(safeContent)), + content: [...new Set(safeContent)], }); } }); diff --git a/src/app/hooks/useThrottle.ts b/src/app/hooks/useThrottle.ts index 12b249f29..3d2875fd4 100644 --- a/src/app/hooks/useThrottle.ts +++ b/src/app/hooks/useThrottle.ts @@ -1,9 +1,9 @@ import { useCallback, useRef } from 'react'; -export interface ThrottleOptions { +export type ThrottleOptions = { wait?: number; immediate?: boolean; -} +}; export type ThrottleCallback = (...args: T) => void; diff --git a/src/app/pages/client/BackgroundNotifications.tsx b/src/app/pages/client/BackgroundNotifications.tsx index 44af1ed91..8b5c60688 100644 --- a/src/app/pages/client/BackgroundNotifications.tsx +++ b/src/app/pages/client/BackgroundNotifications.tsx @@ -144,7 +144,7 @@ export function BackgroundNotifications() { const inactiveSessionsRef = useRef(inactiveSessions); inactiveSessionsRef.current = inactiveSessions; - interface NotifyOptions { + type NotifyOptions = { /** Title shown in the notification banner. */ title: string; /** Body text. */ @@ -162,7 +162,7 @@ export function BackgroundNotifications() { /** Optional callback invoked when the user clicks the notification (window.Notification * fallback path only; the SW path routes via its own notificationclick handler). */ onClick?: () => void; - } + }; useEffect(() => { if (!shouldRunBackgroundNotifications) { diff --git a/src/app/pages/client/ClientRoot.tsx b/src/app/pages/client/ClientRoot.tsx index daade38e9..3cd91d205 100644 --- a/src/app/pages/client/ClientRoot.tsx +++ b/src/app/pages/client/ClientRoot.tsx @@ -330,8 +330,7 @@ export function ClientRoot({ children }: ClientRootProps) { 'SHA-256', new TextEncoder().encode(matrixUserId) ); - const hashHex = Array.from(new Uint8Array(hashBuffer)) - .map((b) => b.toString(16).padStart(2, '0')) + const hashHex = Array.from(new Uint8Array(hashBuffer), (b) => b.toString(16).padStart(2, '0')) .join('') .slice(0, 16); // Include the homeserver domain as a custom attribute — it is not PII (it is the diff --git a/src/app/pages/client/direct/Direct.tsx b/src/app/pages/client/direct/Direct.tsx index 67c1cdb71..83da5056d 100644 --- a/src/app/pages/client/direct/Direct.tsx +++ b/src/app/pages/client/direct/Direct.tsx @@ -212,7 +212,7 @@ export function Direct() { }, [mx, directs]); const sortedDirects = useMemo(() => { - const items = Array.from(directs).sort(factoryRoomIdByActivity(mx)); + const items = directs.toSorted(factoryRoomIdByActivity(mx)); const hasUnread = (roomId: string) => { const unread = roomToUnread.get(roomId); return !!unread && (unread.total > 0 || unread.highlight > 0); diff --git a/src/app/pages/client/explore/Server.tsx b/src/app/pages/client/explore/Server.tsx index 403d15ff5..1b0c44400 100644 --- a/src/app/pages/client/explore/Server.tsx +++ b/src/app/pages/client/explore/Server.tsx @@ -574,7 +574,7 @@ export function PublicRooms() { {isLoading && ( - {[...new Array(currentLimit).keys()].map((item) => ( + {Array.from(new Array(currentLimit).keys(), (item) => ( ))} diff --git a/src/app/pages/client/home/Home.tsx b/src/app/pages/client/home/Home.tsx index 8a114f07d..031bb28f1 100644 --- a/src/app/pages/client/home/Home.tsx +++ b/src/app/pages/client/home/Home.tsx @@ -207,7 +207,7 @@ export function Home() { const [closedCategories, setClosedCategories] = useAtom(useClosedNavCategoriesAtom()); const sortedRooms = useMemo(() => { - const items = Array.from(rooms).sort( + const items = rooms.toSorted( closedCategories.has(DEFAULT_CATEGORY_ID) ? factoryRoomIdByActivity(mx) : factoryRoomIdByAtoZ(mx) diff --git a/src/app/pages/client/inbox/Invites.tsx b/src/app/pages/client/inbox/Invites.tsx index 831a50238..a895a99ed 100644 --- a/src/app/pages/client/inbox/Invites.tsx +++ b/src/app/pages/client/inbox/Invites.tsx @@ -578,7 +578,7 @@ function SpamInvites({ ); const ignoredUsers = useIgnoredUsers(); - const unignoredUsers = Array.from(new Set(invites.map((invite) => invite.senderId))).filter( + const unignoredUsers = [...new Set(invites.map((invite) => invite.senderId))].filter( (user) => !ignoredUsers.includes(user) ); const [blockAllStatus, blockAll] = useAsyncCallback( diff --git a/src/app/pages/client/inbox/Notifications.tsx b/src/app/pages/client/inbox/Notifications.tsx index 87613dec1..8e4756867 100644 --- a/src/app/pages/client/inbox/Notifications.tsx +++ b/src/app/pages/client/inbox/Notifications.tsx @@ -173,7 +173,7 @@ const useNotificationTimeline = ( if (currentTimeline.nextToken === from) { return { nextToken: data.next_token, - groups: from ? currentTimeline.groups.concat(groups) : groups, + groups: from ? [...currentTimeline.groups, ...groups] : groups, }; } return currentTimeline; @@ -762,7 +762,7 @@ export function Notifications() { {timelineState.status === AsyncStatus.Loading && ( - {[...new Array(8).keys()].map((key) => ( + {Array.from(new Array(8).keys(), (key) => ( ) { if (typeof containerItem === 'string') { const folder: ISidebarFolder = { id: randomStr(), - content: [containerItem].concat(child), + content: [...[containerItem], ...child], }; newItems.push(folder); return; } newItems.push({ ...containerItem.folder, - content: containerItem.folder.content.concat(child), + content: [...containerItem.folder.content, ...child], }); return; } diff --git a/src/app/pages/client/space/Space.tsx b/src/app/pages/client/space/Space.tsx index 6d710f8b5..82ac8d739 100644 --- a/src/app/pages/client/space/Space.tsx +++ b/src/app/pages/client/space/Space.tsx @@ -466,7 +466,7 @@ export function Space() { // As a subspace can be in multiple spaces, // only return true if all parent spaces are closed. - const allClosed = !Array.from(parentParentIds).some( + const allClosed = ![...parentParentIds].some( (id) => !getInClosedCategories(spaceId, id, parentId, visited) ); visited.delete(categoryId); @@ -498,7 +498,7 @@ export function Space() { return false; } - return Array.from(childIds).some((id) => getContainsShowRoom(id, visited)); + return [...childIds].some((id) => getContainsShowRoom(id, visited)); }, [roomToUnread, selectedRoomId, roomToChildren] ); @@ -522,9 +522,7 @@ export function Space() { return false; } - const allCollapsed = !Array.from(parentIds).some( - (id) => !getInClosedCategories(spaceId, id, roomId) - ); + const allCollapsed = ![...parentIds].some((id) => !getInClosedCategories(spaceId, id, roomId)); ancestorsCollapsedCache.current.set(categoryId, allCollapsed); return allCollapsed; }; @@ -585,7 +583,10 @@ export function Space() { connectorStack = [{ aX: Math.round(renderDepth * PADDING_LEFT_DEPTH_OFFSET), aY: 0 }]; } - const lastConnector = connectorStack[connectorStack.length - 1]; + const lastConnector = connectorStack.at(-1) ?? { + aX: Math.round(renderDepth * PADDING_LEFT_DEPTH_OFFSET), + aY: 0, + }; // aX: numeric x where the vertical connector starts // aY: end of parent (already numeric) diff --git a/src/app/plugins/bad-words.ts b/src/app/plugins/bad-words.ts index 74fcaddb7..65c13ec02 100644 --- a/src/app/plugins/bad-words.ts +++ b/src/app/plugins/bad-words.ts @@ -3,9 +3,10 @@ import { sanitizeForRegex } from '$utils/regex'; const additionalBadWords: string[] = ['torture', 't0rture']; -const fullBadWordList = additionalBadWords.concat( - badWords.array.filter((word) => !additionalBadWords.includes(word)) -); +const fullBadWordList = [ + ...additionalBadWords, + ...badWords.array.filter((word) => !additionalBadWords.includes(word)), +]; export const BAD_WORDS_REGEX = new RegExp( `(\\b|_)(${fullBadWordList.map((word) => sanitizeForRegex(word)).join('|')})(\\b|_)`, diff --git a/src/app/plugins/call/CallEmbed.ts b/src/app/plugins/call/CallEmbed.ts index f746e5969..124abc8d2 100644 --- a/src/app/plugins/call/CallEmbed.ts +++ b/src/app/plugins/call/CallEmbed.ts @@ -234,7 +234,7 @@ export class CallEmbed { this.mx.getRooms().forEach((room) => { // Timelines are most recent last const events = room.getLiveTimeline()?.getEvents() || []; - const roomEvent = events[events.length - 1]; + const roomEvent = events.at(-1); if (!roomEvent) return; // force later code to think the room is fresh this.readUpToMap[room.roomId] = roomEvent.getId()!; }); @@ -360,7 +360,7 @@ export class CallEmbed { // Timelines are most recent last, so reverse the order and limit ourselves to 100 events // to avoid overusing the CPU. const timeline = room.getLiveTimeline(); - const events = [...timeline.getEvents()].reverse().slice(0, 100); + const events = timeline.getEvents().toReversed().slice(0, 100); function isRelevantTimelineEvent(timelineEvent: MatrixEvent): boolean { return timelineEvent.getId() === upToEventId || timelineEvent.getId() === ev.getId(); } diff --git a/src/app/plugins/call/CallWidgetDriver.ts b/src/app/plugins/call/CallWidgetDriver.ts index a53a7dca6..a75818fce 100644 --- a/src/app/plugins/call/CallWidgetDriver.ts +++ b/src/app/plugins/call/CallWidgetDriver.ts @@ -53,7 +53,7 @@ export class CallWidgetDriver extends WidgetDriver { } public async validateCapabilities(requested: Set): Promise> { - const allow = Array.from(requested).filter((cap) => this.allowedCapabilities.has(cap)); + const allow = [...requested].filter((cap) => this.allowedCapabilities.has(cap)); return new Set(allow); } diff --git a/src/app/plugins/custom-emoji/ImagePack.ts b/src/app/plugins/custom-emoji/ImagePack.ts index 127b558ba..58e5227c1 100644 --- a/src/app/plugins/custom-emoji/ImagePack.ts +++ b/src/app/plugins/custom-emoji/ImagePack.ts @@ -53,7 +53,7 @@ export class ImagePack { return this.stickerMemo; } - const images = Array.from(this.images.collection.values()).filter((image) => { + const images = [...this.images.collection.values()].filter((image) => { const usg = image.usage ?? this.meta.usage; return usg.includes(usage); }); diff --git a/src/app/plugins/react-custom-html-parser.tsx b/src/app/plugins/react-custom-html-parser.tsx index c1ac6c395..051e0d95e 100644 --- a/src/app/plugins/react-custom-html-parser.tsx +++ b/src/app/plugins/react-custom-html-parser.tsx @@ -498,7 +498,7 @@ export const getReactCustomHtmlParser = ( return undefined; } - const content = children.find((child) => !(child instanceof DOMText)) + const content = children.some((child) => !(child instanceof DOMText)) ? undefined : children.map((c) => (c instanceof DOMText ? c.data : '')).join(); diff --git a/src/app/plugins/text-area/Operations.ts b/src/app/plugins/text-area/Operations.ts index a465ece52..2630eefdf 100644 --- a/src/app/plugins/text-area/Operations.ts +++ b/src/app/plugins/text-area/Operations.ts @@ -1,7 +1,7 @@ import { type Cursor } from './Cursor'; -export interface Operations { +export type Operations = { select(cursor: Cursor): void; deselect(cursor: Cursor): void; insert(cursor: Cursor, text: string): Cursor; -} +}; diff --git a/src/app/plugins/text-area/TextUtils.ts b/src/app/plugins/text-area/TextUtils.ts index 43d05837f..b599a01f3 100644 --- a/src/app/plugins/text-area/TextUtils.ts +++ b/src/app/plugins/text-area/TextUtils.ts @@ -1,5 +1,5 @@ export class TextUtils { static multiline(str: string) { - return str.indexOf('\n') !== -1; + return str.includes('\n'); } } diff --git a/src/app/plugins/utils.ts b/src/app/plugins/utils.ts index c227a7e02..00f4609c6 100644 --- a/src/app/plugins/utils.ts +++ b/src/app/plugins/utils.ts @@ -13,7 +13,7 @@ export const getEmoticonSearchStr: SearchItemStrGetter const names = [shortcode, item.label]; if (Array.isArray(item.shortcodes)) { - return names.concat(item.shortcodes); + return [...names, ...item.shortcodes]; } return names; }; diff --git a/src/app/plugins/via-servers.ts b/src/app/plugins/via-servers.ts index 8e7c44c3b..404c0cdf2 100644 --- a/src/app/plugins/via-servers.ts +++ b/src/app/plugins/via-servers.ts @@ -69,5 +69,5 @@ export const getViaServers = (room: Room): string[] => { if (mostPop3.includes(via[0])) { mostPop3.splice(mostPop3.indexOf(via[0]), 1); } - return via.concat(mostPop3.slice(0, 2)); + return [...via, ...mostPop3.slice(0, 2)]; }; diff --git a/src/app/plugins/voice-recorder-kit/useVoiceRecorder.ts b/src/app/plugins/voice-recorder-kit/useVoiceRecorder.ts index e623c1b17..222cc491c 100644 --- a/src/app/plugins/voice-recorder-kit/useVoiceRecorder.ts +++ b/src/app/plugins/voice-recorder-kit/useVoiceRecorder.ts @@ -13,6 +13,8 @@ const WAVEFORM_POINT_COUNT = 100; let sharedAudioContext: AudioContext | null = null; +const createSilenceLevels = (count: number): number[] => Array(count).fill(0.15); + function getSharedAudioContext(): AudioContext { if (!sharedAudioContext || sharedAudioContext.state === 'closed') { sharedAudioContext = new AudioContext(); @@ -22,7 +24,7 @@ function getSharedAudioContext(): AudioContext { // downsample an array of samples to a target count by averaging blocks of samples together function downsampleWaveform(samples: number[], targetCount: number): number[] { - if (samples.length === 0) return Array.from({ length: targetCount }, () => 0.15); + if (samples.length === 0) return createSilenceLevels(targetCount); if (samples.length <= targetCount) { const step = (samples.length - 1) / (targetCount - 1); return Array.from({ length: targetCount }, (_, i) => { @@ -60,9 +62,7 @@ export function useVoiceRecorder(options: UseVoiceRecorderOptions = {}): UseVoic const [isPlaying, setIsPlaying] = useState(false); const [isPaused, setIsPaused] = useState(false); const [seconds, setSeconds] = useState(0); - const [levels, setLevels] = useState(() => - Array.from({ length: BAR_COUNT }, () => 0.15) - ); + const [levels, setLevels] = useState(() => createSilenceLevels(BAR_COUNT)); const [error, setError] = useState(null); const [audioUrl, setAudioUrl] = useState(null); const [audioFile, setAudioFile] = useState(null); @@ -460,7 +460,7 @@ export function useVoiceRecorder(options: UseVoiceRecorderOptions = {}): UseVoic audioContextRef.current.suspend().catch(() => {}); } - setLevels(Array.from({ length: BAR_COUNT }, () => 0.15)); + setLevels(createSilenceLevels(BAR_COUNT)); } catch { setError('Error pausing recording'); } @@ -831,7 +831,7 @@ export function useVoiceRecorder(options: UseVoiceRecorderOptions = {}): UseVoic setSeconds(0); pausedTimeRef.current = 0; startTimeRef.current = null; - setLevels(Array.from({ length: BAR_COUNT }, () => 0.15)); + setLevels(createSilenceLevels(BAR_COUNT)); previousChunksRef.current = []; chunksRef.current = []; waveformSamplesRef.current = []; @@ -873,7 +873,7 @@ export function useVoiceRecorder(options: UseVoiceRecorderOptions = {}): UseVoic setSeconds(0); pausedTimeRef.current = 0; startTimeRef.current = null; - setLevels(Array.from({ length: BAR_COUNT }, () => 0.15)); + setLevels(createSilenceLevels(BAR_COUNT)); previousChunksRef.current = []; chunksRef.current = []; isResumingRef.current = false; diff --git a/src/app/state/closedLobbyCategories.ts b/src/app/state/closedLobbyCategories.ts index 6e1b2325e..195706443 100644 --- a/src/app/state/closedLobbyCategories.ts +++ b/src/app/state/closedLobbyCategories.ts @@ -34,7 +34,7 @@ export const makeClosedLobbyCategoriesAtom = (userId: string): ClosedLobbyCatego return new Set(arrayValue); }, (key, value) => { - const arrayValue = Array.from(value); + const arrayValue = [...value]; setLocalStorageItem(key, arrayValue); } ); diff --git a/src/app/state/closedNavCategories.ts b/src/app/state/closedNavCategories.ts index 4126d6e73..9ba711b8b 100644 --- a/src/app/state/closedNavCategories.ts +++ b/src/app/state/closedNavCategories.ts @@ -34,7 +34,7 @@ export const makeClosedNavCategoriesAtom = (userId: string): ClosedNavCategories return new Set(arrayValue); }, (key, value) => { - const arrayValue = Array.from(value); + const arrayValue = [...value]; setLocalStorageItem(key, arrayValue); } ); diff --git a/src/app/state/mediaVolume.ts b/src/app/state/mediaVolume.ts new file mode 100644 index 000000000..83372b04a --- /dev/null +++ b/src/app/state/mediaVolume.ts @@ -0,0 +1,21 @@ +/** + * Centralized access to the persisted media volume preference. + * + * Plain functions rather than a Jotai atom because the value is applied + * directly to DOM element refs, not read reactively in JSX. + */ + +const MEDIA_VOLUME_KEY = 'mediaVolume'; + +/** Returns the persisted volume (0–1), or undefined if never set. */ +export const getMediaVolume = (): number | undefined => { + const stored = localStorage.getItem(MEDIA_VOLUME_KEY); + if (stored === null) return undefined; + const parsed = parseFloat(stored); + return Number.isNaN(parsed) ? undefined : parsed; +}; + +/** Persist the current volume (0–1). */ +export const setMediaVolume = (volume: number): void => { + localStorage.setItem(MEDIA_VOLUME_KEY, String(volume)); +}; diff --git a/src/app/state/openedSidebarFolder.ts b/src/app/state/openedSidebarFolder.ts index 837335064..8c104b71b 100644 --- a/src/app/state/openedSidebarFolder.ts +++ b/src/app/state/openedSidebarFolder.ts @@ -34,7 +34,7 @@ export const makeOpenedSidebarFolderAtom = (userId: string): OpenedSidebarFolder return new Set(arrayValue); }, (key, value) => { - const arrayValue = Array.from(value); + const arrayValue = [...value]; setLocalStorageItem(key, arrayValue); } ); diff --git a/src/app/state/room-list/utils.ts b/src/app/state/room-list/utils.ts index aad1ecf44..9acd27a25 100644 --- a/src/app/state/room-list/utils.ts +++ b/src/app/state/room-list/utils.ts @@ -22,7 +22,7 @@ export const useBindRoomsWithMembershipsAtom = ( useEffect(() => { const satisfyMembership = (room: Room): boolean => - !!memberships.find((membership) => membership === room.getMyMembership()); + memberships.some((membership) => membership === room.getMyMembership()); setRoomsAtom({ type: 'INITIALIZE', rooms: mx diff --git a/src/app/state/sentryStorage.ts b/src/app/state/sentryStorage.ts new file mode 100644 index 000000000..223c84bd8 --- /dev/null +++ b/src/app/state/sentryStorage.ts @@ -0,0 +1,28 @@ +/** + * Centralized access to the Sentry opt-in preference stored in localStorage. + * + * These must be plain functions because src/instrument.ts reads them + * synchronously at module load time, before React and Jotai mount. + */ + +export const SENTRY_ENABLED_KEY = 'sable_sentry_enabled'; +export const SENTRY_REPLAY_ENABLED_KEY = 'sable_sentry_replay_enabled'; + +export const getSentryEnabled = (): boolean => localStorage.getItem(SENTRY_ENABLED_KEY) === 'true'; + +export const isSentryDecided = (): boolean => localStorage.getItem(SENTRY_ENABLED_KEY) !== null; + +export const setSentryEnabled = (enabled: boolean): void => { + localStorage.setItem(SENTRY_ENABLED_KEY, String(enabled)); +}; + +export const getSentryReplayEnabled = (): boolean => + localStorage.getItem(SENTRY_REPLAY_ENABLED_KEY) === 'true'; + +export const setSentryReplayEnabled = (enabled: boolean): void => { + if (enabled) { + localStorage.setItem(SENTRY_REPLAY_ENABLED_KEY, 'true'); + } else { + localStorage.removeItem(SENTRY_REPLAY_ENABLED_KEY); + } +}; diff --git a/src/app/state/settings.ts b/src/app/state/settings.ts index cfa533866..e74948226 100644 --- a/src/app/state/settings.ts +++ b/src/app/state/settings.ts @@ -23,7 +23,7 @@ export enum CaptionPosition { } export type JumboEmojiSize = 'none' | 'extraSmall' | 'small' | 'normal' | 'large' | 'extraLarge'; -export interface Settings { +export type Settings = { themeId?: string; useSystemTheme: boolean; lightThemeId?: string; @@ -111,7 +111,7 @@ export interface Settings { // furry stuff renderAnimals: boolean; -} +}; const defaultSettings: Settings = { themeId: undefined, diff --git a/src/app/state/spaceRooms.ts b/src/app/state/spaceRooms.ts index 572fade3e..ea6d1c486 100644 --- a/src/app/state/spaceRooms.ts +++ b/src/app/state/spaceRooms.ts @@ -15,7 +15,7 @@ const baseSpaceRoomsAtom = atomWithLocalStorage>( return new Set(arrayValue); }, (key, value) => { - const arrayValue = Array.from(value); + const arrayValue = [...value]; setLocalStorageItem(key, arrayValue); } ); @@ -36,7 +36,7 @@ export const spaceRoomsAtom = atom, [SpaceRoomsAction], undefined>( const current = get(baseSpaceRoomsAtom); const { type, roomIds } = action; - if (type === 'DELETE' && roomIds.find((roomId) => current.has(roomId))) { + if (type === 'DELETE' && roomIds.some((roomId) => current.has(roomId))) { set( baseSpaceRoomsAtom, produce(current, (draft) => { diff --git a/src/app/utils/AsyncSearch.ts b/src/app/utils/AsyncSearch.ts index c799c60bb..b6cd24f75 100644 --- a/src/app/utils/AsyncSearch.ts +++ b/src/app/utils/AsyncSearch.ts @@ -78,7 +78,7 @@ export const AsyncSearch = ( if (findingCount !== currentFindingCount) onResult(resultList, query); searchIndex += 1; - sessionScheduleId = globalThis.setTimeout(() => find(query, thisSessionTimestamp), 1); + sessionScheduleId = globalThis.setTimeout(find, 1, query, thisSessionTimestamp); return; } } diff --git a/src/app/utils/MegolmExportEncryption.ts b/src/app/utils/MegolmExportEncryption.ts index 96250e5bd..b9e499360 100644 --- a/src/app/utils/MegolmExportEncryption.ts +++ b/src/app/utils/MegolmExportEncryption.ts @@ -43,7 +43,7 @@ function toArrayBufferView(data: Uint8Array): Uint8Array { function encodeBase64(uint8Array: Uint8Array): string { // Misinterpt the Uint8Array as Latin-1. // window.btoa expects a unicode string with codepoints in the range 0-255. - const latin1String = String.fromCodePoint.apply(null, Array.from(uint8Array)); + const latin1String = String.fromCodePoint(...[...uint8Array]); // Use the builtin base64 encoder. return globalThis.btoa(latin1String); } diff --git a/src/app/utils/abbreviations.ts b/src/app/utils/abbreviations.ts index e6dfcfa3e..718db9d93 100644 --- a/src/app/utils/abbreviations.ts +++ b/src/app/utils/abbreviations.ts @@ -44,7 +44,7 @@ export const splitByAbbreviations = (text: string, abbrMap: Map) const segments: TextSegment[] = []; let lastIndex = 0; - Array.from(text.matchAll(pattern)).forEach((match) => { + [...text.matchAll(pattern)].forEach((match) => { const matchIndex = match.index; if (matchIndex > lastIndex) { segments.push({ id: `txt-${segments.length}`, text: text.slice(lastIndex, matchIndex) }); diff --git a/src/app/utils/debugLogger.ts b/src/app/utils/debugLogger.ts index 1e1c7e74b..301dfa785 100644 --- a/src/app/utils/debugLogger.ts +++ b/src/app/utils/debugLogger.ts @@ -20,14 +20,14 @@ export type LogCategory = | 'error' | 'general'; -export interface LogEntry { +export type LogEntry = { timestamp: number; level: LogLevel; category: LogCategory; namespace: string; message: string; data?: unknown; -} +}; type LogListener = (entry: LogEntry) => void; @@ -136,7 +136,7 @@ class DebugLoggerService { } else { this.disabledBreadcrumbCategories.add(category); } - const disabledArray = Array.from(this.disabledBreadcrumbCategories); + const disabledArray = [...this.disabledBreadcrumbCategories]; if (disabledArray.length > 0) { localStorage.setItem(BREADCRUMB_DISABLED_KEY, JSON.stringify(disabledArray)); } else { diff --git a/src/app/utils/delayedEvents.ts b/src/app/utils/delayedEvents.ts index bbf6245f4..e893a3f27 100644 --- a/src/app/utils/delayedEvents.ts +++ b/src/app/utils/delayedEvents.ts @@ -10,9 +10,9 @@ import { } from '$types/matrix-sdk'; // Grab types needed for encryption -interface EncryptableBackend { +type EncryptableBackend = { encryptEvent(event: MatrixEvent, room: Room): Promise; -} +}; export async function supportsDelayedEvents(mx: MatrixClient): Promise { try { diff --git a/src/app/utils/featureCheck.ts b/src/app/utils/featureCheck.ts index a9474c317..e5f2dcaed 100644 --- a/src/app/utils/featureCheck.ts +++ b/src/app/utils/featureCheck.ts @@ -1,5 +1,5 @@ export const checkIndexedDBSupport = async (): Promise => { - const ts = new Date().getTime(); + const ts = Date.now(); const dbName = `checkIndexedDBSupport-${ts}`; return new Promise((resolve) => { let db; diff --git a/src/app/utils/keyboard.ts b/src/app/utils/keyboard.ts index 5933deeef..861d60156 100644 --- a/src/app/utils/keyboard.ts +++ b/src/app/utils/keyboard.ts @@ -1,7 +1,7 @@ import { isKeyHotkey } from 'is-hotkey'; import { type KeyboardEventHandler } from 'react'; -export interface KeyboardEventLike { +export type KeyboardEventLike = { key: string; which: number; altKey: boolean; @@ -9,7 +9,7 @@ export interface KeyboardEventLike { metaKey: boolean; shiftKey: boolean; preventDefault(): void; -} +}; export const onTabPress = (evt: KeyboardEventLike, callback: () => void) => { if (isKeyHotkey('tab', evt)) { diff --git a/src/app/utils/matrix.ts b/src/app/utils/matrix.ts index f7562ce29..b1d952931 100644 --- a/src/app/utils/matrix.ts +++ b/src/app/utils/matrix.ts @@ -279,7 +279,7 @@ export const addRoomIdToMDirect = async ( }); const roomIds = userIdToRoomIds[userId] || []; - if (roomIds.indexOf(roomId) === -1) { + if (!roomIds.includes(roomId)) { roomIds.push(roomId); } userIdToRoomIds[userId] = roomIds; @@ -415,7 +415,7 @@ export const toggleReaction = ( ); const allReactions = relations?.getSortedAnnotationsByKey() ?? []; const [, reactionsSet] = allReactions.find(([k]: [string, any]) => k === key) ?? []; - const reactions: MatrixEvent[] = reactionsSet ? Array.from(reactionsSet) : []; + const reactions: MatrixEvent[] = reactionsSet ? [...reactionsSet] : []; const myReaction = reactions.find(factoryEventSentBy(mx.getUserId()!)); if (myReaction && !!(myReaction as any)?.isRelation()) { diff --git a/src/app/utils/room.ts b/src/app/utils/room.ts index 4cc6a1af7..64192c2f3 100644 --- a/src/app/utils/room.ts +++ b/src/app/utils/room.ts @@ -176,7 +176,7 @@ export const getRoomToParents = (mx: MatrixClient): RoomToParents => { export const getOrphanParents = (roomToParents: RoomToParents, roomId: string): string[] => { const parents = getAllParents(roomToParents, roomId); - return Array.from(parents).filter((parentRoomId) => !roomToParents.has(parentRoomId)); + return [...parents].filter((parentRoomId) => !roomToParents.has(parentRoomId)); }; export const isMutedRule = (rule: IPushRule) => @@ -264,7 +264,7 @@ export const roomHaveUnread = (mx: MatrixClient, room: Room) => { return false; } - const latestEvent = liveEvents[liveEvents.length - 1]; + const latestEvent = liveEvents.at(-1); if (latestEvent?.getSender() === userId) { return false; @@ -316,8 +316,8 @@ export const getUnreadInfo = (room: Room, options?: UnreadInfoOptions): UnreadIn const liveEvents = room.getLiveTimeline().getEvents(); // Exclude the user's own messages: own sent events are always "read" (hasUserReadEvent // returns true for them), which would cause the clamp to fire incorrectly. - const latestNotification = [...liveEvents] - .reverse() + const latestNotification = liveEvents + .toReversed() .find( (event) => !event.isSending() && @@ -538,7 +538,7 @@ export const getMemberSearchStr = ( mxIdToName: (mxId: string) => string ): string[] => [ member.rawDisplayName === member.userId ? mxIdToName(member.userId) : member.rawDisplayName, - query.startsWith('@') || query.indexOf(':') > -1 ? member.userId : mxIdToName(member.userId), + query.startsWith('@') || query.includes(':') ? member.userId : mxIdToName(member.userId), ]; export const getMemberAvatarMxc = (room: Room, userId: string): string | undefined => { @@ -745,7 +745,7 @@ export const guessPerfectParent = ( } }); - return Array.from(specialUsers); + return [...specialUsers]; }; let perfectParent: string | undefined; diff --git a/src/client/initMatrix.ts b/src/client/initMatrix.ts index 67dc1ee43..34c4acece 100644 --- a/src/client/initMatrix.ts +++ b/src/client/initMatrix.ts @@ -230,7 +230,7 @@ export const clearMismatchedStores = async (): Promise => { allDbs.map(async ({ name }) => { if (!name) return; - const containsKnownUser = Array.from(knownUserIds).some((uid) => name.includes(uid)); + const containsKnownUser = [...knownUserIds].some((uid) => name.includes(uid)); const looksLikeUserDb = name.includes('@'); if (looksLikeUserDb && !containsKnownUser && !knownStoreNames.has(name)) { log.warn(`clearMismatchedStores: "${name}" has unknown user — deleting`); diff --git a/src/client/slidingSync.test.ts b/src/client/slidingSync.test.ts index bd0643e5d..4e5515a82 100644 --- a/src/client/slidingSync.test.ts +++ b/src/client/slidingSync.test.ts @@ -15,6 +15,7 @@ * instant (matching Element Web's model). */ import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { type MatrixClient } from '$types/matrix-sdk'; import { SlidingSyncManager, type SlidingSyncConfig } from './slidingSync'; // ── vi.hoisted mocks ───────────────────────────────────────────────────────── @@ -75,7 +76,7 @@ function makeMockMx(overrides: Record = {}) { off: vi.fn(), removeListener: vi.fn(), ...overrides, - } as unknown as import('$types/matrix-sdk').MatrixClient; + } as unknown as MatrixClient; } function makeManager(mx: ReturnType): SlidingSyncManager { diff --git a/src/client/slidingSync.ts b/src/client/slidingSync.ts index 2e11750ac..af0d49179 100644 --- a/src/client/slidingSync.ts +++ b/src/client/slidingSync.ts @@ -305,7 +305,7 @@ export class SlidingSyncManager { const defaultSubscription = buildEncryptedSubscription(roomTimelineLimit); const lists = buildLists(listPageSize, includeInviteList); - this.listKeys = Array.from(lists.keys()); + this.listKeys = [...lists.keys()]; this.slidingSync = new SlidingSync(proxyBaseUrl, lists, defaultSubscription, mx, pollTimeoutMs); // Register the presence extension so m.presence events from the server are fed diff --git a/src/sw.ts b/src/sw.ts index bd09cd8d3..682491c19 100644 --- a/src/sw.ts +++ b/src/sw.ts @@ -133,7 +133,7 @@ async function cleanupDeadClients() { const activeClients = await self.clients.matchAll(); const activeIds = new Set(activeClients.map((c) => c.id)); - Array.from(sessions.keys()).forEach((id) => { + [...sessions.keys()].forEach((id) => { if (!activeIds.has(id)) { sessions.delete(id); clientToResolve.delete(id); @@ -370,7 +370,7 @@ async function requestDecryptionFromClient( const eventId = rawEvent.event_id as string; // Chain clients sequentially using reduce to avoid await-in-loop and for-of. - return Array.from(windowClients).reduce( + return [...windowClients].reduce( async (prevPromise, client) => { const prev = await prevPromise; if (prev?.success) return prev; diff --git a/vitest.config.ts b/vitest.config.ts index f5f2dabe6..497c539f9 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -33,6 +33,14 @@ export default defineConfig({ 'src/**/*.test.{ts,tsx}', 'src/**/*.spec.{ts,tsx}', ], + // Baseline locked at current coverage. Raise these thresholds as test + // coverage improves, never lower them. + thresholds: { + statements: 1.5, + branches: 1, + functions: 1.5, + lines: 1.5, + }, }, }, }); From a204b41014fe38728d3ac6eecc76abc170ab5bc7 Mon Sep 17 00:00:00 2001 From: hazre Date: Mon, 30 Mar 2026 00:46:23 +0200 Subject: [PATCH 07/23] chore: update packages and deal with vulnerabilities --- package.json | 34 +- pnpm-lock.yaml | 1249 ++++++++++++++++++++++++++----------------- pnpm-workspace.yaml | 23 +- 3 files changed, 789 insertions(+), 517 deletions(-) diff --git a/package.json b/package.json index 8074cbe1c..20fb1e7d7 100644 --- a/package.json +++ b/package.json @@ -36,27 +36,27 @@ "author": "7w1", "license": "AGPL-3.0-only", "dependencies": { - "@atlaskit/pragmatic-drag-and-drop": "^1.7.7", + "@atlaskit/pragmatic-drag-and-drop": "^1.7.9", "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^1.4.0", "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.1.0", "@fontsource-variable/nunito": "5.2.7", "@fontsource/space-mono": "5.2.9", "@phosphor-icons/react": "^2.1.10", - "@sentry/react": "^10.43.0", - "@tanstack/react-query": "^5.90.21", - "@tanstack/react-query-devtools": "^5.91.3", - "@tanstack/react-virtual": "^3.13.19", + "@sentry/react": "^10.46.0", + "@tanstack/react-query": "^5.95.2", + "@tanstack/react-query-devtools": "^5.95.2", + "@tanstack/react-virtual": "^3.13.23", "@use-gesture/react": "10.3.1", - "@vanilla-extract/css": "^1.18.0", + "@vanilla-extract/css": "^1.20.1", "@vanilla-extract/recipes": "^0.5.7", - "@vanilla-extract/vite-plugin": "^5.2.1", + "@vanilla-extract/vite-plugin": "^5.2.2", "await-to-js": "^3.0.0", "badwords-list": "^2.0.1-4", "blurhash": "^2.0.5", "browser-encrypt-attachment": "^0.3.0", "chroma-js": "^3.2.0", "classnames": "^2.5.1", - "dayjs": "^1.11.19", + "dayjs": "^1.11.20", "domhandler": "^5.0.3", "emojibase": "^15.3.1", "emojibase-data": "^15.3.2", @@ -68,26 +68,26 @@ "framer-motion": "12.34.3", "html-dom-parser": "^5.1.8", "html-react-parser": "^4.2.10", - "i18next": "^25.8.13", + "i18next": "^25.10.10", "i18next-browser-languagedetector": "^8.2.1", "i18next-http-backend": "^2.7.3", "immer": "^9.0.21", "is-hotkey": "^0.2.0", - "jotai": "^2.18.0", + "jotai": "^2.19.0", "linkify-react": "^4.3.2", "linkifyjs": "^4.3.2", "matrix-js-sdk": "^38.4.0", "matrix-widget-api": "^1.16.1", - "pdfjs-dist": "^5.4.624", + "pdfjs-dist": "^5.5.207", "prismjs": "^1.30.0", "react": "^18.3.1", - "react-aria": "^3.46.0", + "react-aria": "^3.47.0", "react-blurhash": "^0.3.0", "react-colorful": "^5.6.1", "react-dom": "^18.3.1", "react-error-boundary": "^4.1.2", "react-google-recaptcha": "^2.1.0", - "react-i18next": "^16.5.4", + "react-i18next": "^16.6.6", "react-range": "^1.10.0", "react-router-dom": "^6.30.3", "sanitize-html": "^2.17.1", @@ -123,8 +123,8 @@ "@types/sanitize-html": "^2.16.0", "@types/ua-parser-js": "^0.7.39", "@vitejs/plugin-react": "^6.0.1", - "@vitest/coverage-v8": "^4.1.0", - "@vitest/ui": "^4.1.0", + "@vitest/coverage-v8": "^4.1.2", + "@vitest/ui": "^4.1.2", "buffer": "^6.0.3", "cloudflared": "^0.7.1", "eslint": "9.39.3", @@ -133,7 +133,7 @@ "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-prettier": "5.5.5", "globals": "17.3.0", - "jsdom": "^29.0.0", + "jsdom": "^29.0.1", "knip": "5.85.0", "prettier": "3.8.1", "typescript": "^5.9.3", @@ -143,7 +143,7 @@ "vite-plugin-static-copy": "^4.0.0", "vite-plugin-svgr": "4.5.0", "vite-plugin-top-level-await": "^1.6.0", - "vitest": "^4.1.0", + "vitest": "^4.1.2", "wrangler": "^4.78.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 935490119..0e74c4204 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,21 +5,17 @@ settings: excludeLinksFromLockfile: false overrides: - brace-expansion: '>=1.1.12' - esbuild: '>=0.25.0' - lodash: '>=4.17.23' - minimatch: '>=10.2.3' - rollup: '>=4.59.0' - serialize-javascript: '>=7.0.3' - flatted: '>=3.4.2' - undici: '>=7.24.0' + serialize-javascript: '>=7.0.5' + picomatch: '>=4.0.4' + smol-toml: '>=1.6.1' + yaml: '>=2.8.3' importers: .: dependencies: '@atlaskit/pragmatic-drag-and-drop': - specifier: ^1.7.7 + specifier: ^1.7.9 version: 1.7.9 '@atlaskit/pragmatic-drag-and-drop-auto-scroll': specifier: ^1.4.0 @@ -37,29 +33,29 @@ importers: specifier: ^2.1.10 version: 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@sentry/react': - specifier: ^10.43.0 - version: 10.43.0(react@18.3.1) + specifier: ^10.46.0 + version: 10.46.0(react@18.3.1) '@tanstack/react-query': - specifier: ^5.90.21 - version: 5.90.21(react@18.3.1) + specifier: ^5.95.2 + version: 5.95.2(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.91.3 - version: 5.91.3(@tanstack/react-query@5.90.21(react@18.3.1))(react@18.3.1) + specifier: ^5.95.2 + version: 5.95.2(@tanstack/react-query@5.95.2(react@18.3.1))(react@18.3.1) '@tanstack/react-virtual': - specifier: ^3.13.19 - version: 3.13.21(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^3.13.23 + version: 3.13.23(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@use-gesture/react': specifier: 10.3.1 version: 10.3.1(react@18.3.1) '@vanilla-extract/css': - specifier: ^1.18.0 - version: 1.18.0 + specifier: ^1.20.1 + version: 1.20.1 '@vanilla-extract/recipes': specifier: ^0.5.7 - version: 0.5.7(@vanilla-extract/css@1.18.0) + version: 0.5.7(@vanilla-extract/css@1.20.1) '@vanilla-extract/vite-plugin': - specifier: ^5.2.1 - version: 5.2.1(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(yaml@2.8.2) + specifier: ^5.2.2 + version: 5.2.2(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)) await-to-js: specifier: ^3.0.0 version: 3.0.0 @@ -79,8 +75,8 @@ importers: specifier: ^2.5.1 version: 2.5.1 dayjs: - specifier: ^1.11.19 - version: 1.11.19 + specifier: ^1.11.20 + version: 1.11.20 domhandler: specifier: ^5.0.3 version: 5.0.3 @@ -104,7 +100,7 @@ importers: version: 10.3.1(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) folds: specifier: ^2.6.2 - version: 2.6.2(@vanilla-extract/css@1.18.0)(@vanilla-extract/recipes@0.5.7(@vanilla-extract/css@1.18.0))(classnames@2.5.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.6.2(@vanilla-extract/css@1.20.1)(@vanilla-extract/recipes@0.5.7(@vanilla-extract/css@1.20.1))(classnames@2.5.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) framer-motion: specifier: 12.34.3 version: 12.34.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -115,8 +111,8 @@ importers: specifier: ^4.2.10 version: 4.2.10(react@18.3.1) i18next: - specifier: ^25.8.13 - version: 25.8.17(typescript@5.9.3) + specifier: ^25.10.10 + version: 25.10.10(typescript@5.9.3) i18next-browser-languagedetector: specifier: ^8.2.1 version: 8.2.1 @@ -130,8 +126,8 @@ importers: specifier: ^0.2.0 version: 0.2.0 jotai: - specifier: ^2.18.0 - version: 2.18.1(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@18.3.28)(react@18.3.1) + specifier: ^2.19.0 + version: 2.19.0(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@18.3.28)(react@18.3.1) linkify-react: specifier: ^4.3.2 version: 4.3.2(linkifyjs@4.3.2)(react@18.3.1) @@ -145,7 +141,7 @@ importers: specifier: ^1.16.1 version: 1.17.0 pdfjs-dist: - specifier: ^5.4.624 + specifier: ^5.5.207 version: 5.5.207 prismjs: specifier: ^1.30.0 @@ -154,7 +150,7 @@ importers: specifier: ^18.3.1 version: 18.3.1 react-aria: - specifier: ^3.46.0 + specifier: ^3.47.0 version: 3.47.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-blurhash: specifier: ^0.3.0 @@ -172,8 +168,8 @@ importers: specifier: ^2.1.0 version: 2.1.0(react@18.3.1) react-i18next: - specifier: ^16.5.4 - version: 16.5.7(i18next@25.8.17(typescript@5.9.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3) + specifier: ^16.6.6 + version: 16.6.6(i18next@25.10.10(typescript@5.9.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3) react-range: specifier: ^1.10.0 version: 1.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -207,13 +203,13 @@ importers: devDependencies: '@cloudflare/vite-plugin': specifier: ^1.30.2 - version: 1.30.2(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(workerd@1.20260317.1)(wrangler@4.78.0) + version: 1.30.2(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1))(workerd@1.20260317.1)(wrangler@4.78.0) '@e18e/eslint-plugin': specifier: ^0.3.0 version: 0.3.0(eslint@9.39.3(jiti@2.6.1)) '@esbuild-plugins/node-globals-polyfill': specifier: ^0.2.3 - version: 0.2.3(esbuild@0.27.3) + version: 0.2.3(esbuild@0.27.4) '@eslint/compat': specifier: 2.0.2 version: 2.0.2(eslint@9.39.3(jiti@2.6.1)) @@ -222,16 +218,16 @@ importers: version: 9.39.3 '@rollup/plugin-inject': specifier: ^5.0.5 - version: 5.0.5(rollup@4.59.0) + version: 5.0.5(rollup@4.60.0) '@rollup/plugin-wasm': specifier: ^6.2.2 - version: 6.2.2(rollup@4.59.0) + version: 6.2.2(rollup@4.60.0) '@sableclient/sable-call-embedded': specifier: v1.1.4 version: 1.1.4 '@sentry/vite-plugin': specifier: ^5.1.1 - version: 5.1.1(rollup@4.59.0) + version: 5.1.1(rollup@4.60.0) '@testing-library/jest-dom': specifier: ^6.9.1 version: 6.9.1 @@ -273,13 +269,13 @@ importers: version: 0.7.39 '@vitejs/plugin-react': specifier: ^6.0.1 - version: 6.0.1(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + version: 6.0.1(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)) '@vitest/coverage-v8': - specifier: ^4.1.0 - version: 4.1.0(vitest@4.1.0) + specifier: ^4.1.2 + version: 4.1.2(vitest@4.1.2) '@vitest/ui': - specifier: ^4.1.0 - version: 4.1.0(vitest@4.1.0) + specifier: ^4.1.2 + version: 4.1.2(vitest@4.1.2) buffer: specifier: ^6.0.3 version: 6.0.3 @@ -305,8 +301,8 @@ importers: specifier: 17.3.0 version: 17.3.0 jsdom: - specifier: ^29.0.0 - version: 29.0.0 + specifier: ^29.0.1 + version: 29.0.1 knip: specifier: 5.85.0 version: 5.85.0(@types/node@24.10.13)(typescript@5.9.3) @@ -318,25 +314,25 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + version: 8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1) vite-plugin-compression2: specifier: 2.5.3 - version: 2.5.3(rollup@4.59.0) + version: 2.5.3(rollup@4.60.0) vite-plugin-pwa: specifier: ^1.2.0 - version: 1.2.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0) + version: 1.2.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0) vite-plugin-static-copy: specifier: ^4.0.0 - version: 4.0.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + version: 4.0.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)) vite-plugin-svgr: specifier: 4.5.0 - version: 4.5.0(rollup@4.59.0)(typescript@5.9.3)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + version: 4.5.0(rollup@4.60.0)(typescript@5.9.3)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)) vite-plugin-top-level-await: specifier: ^1.6.0 - version: 1.6.0(@swc/helpers@0.5.19)(rollup@4.59.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + version: 1.6.0(@swc/helpers@0.5.19)(rollup@4.60.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)) vitest: - specifier: ^4.1.0 - version: 4.1.0(@types/node@24.10.13)(@vitest/ui@4.1.0)(jsdom@29.0.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + specifier: ^4.1.2 + version: 4.1.2(@types/node@24.10.13)(@vitest/ui@4.1.2)(jsdom@29.0.1)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)) wrangler: specifier: ^4.78.0 version: 4.78.0 @@ -346,8 +342,8 @@ packages: '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} - '@apideck/better-ajv-errors@0.3.6': - resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} + '@apideck/better-ajv-errors@0.3.7': + resolution: {integrity: sha512-TajUJwGWbDwkCx/CZi7tRE8PVB7simCvKJfHUsSdvps+aTM/PDPP4gkLmKnc+x3CE//y9i/nj74GqdL/hwk7Iw==} engines: {node: '>=10'} peerDependencies: ajv: '>=8' @@ -480,6 +476,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} engines: {node: '>=6.9.0'} @@ -1000,7 +1001,7 @@ packages: '@esbuild-plugins/node-globals-polyfill@0.2.3': resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} peerDependencies: - esbuild: '>=0.25.0' + esbuild: '*' '@esbuild/aix-ppc64@0.27.3': resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} @@ -1008,156 +1009,312 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.27.4': + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.27.3': resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.27.4': + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.27.3': resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.27.4': + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.27.3': resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.27.4': + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.27.3': resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.27.4': + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.27.3': resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.27.4': + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.27.3': resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.27.4': + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.27.3': resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.27.4': + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.27.3': resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.27.4': + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.27.3': resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.27.4': + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.27.3': resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.27.4': + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.27.3': resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.27.4': + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.27.3': resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.27.4': + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.27.3': resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.27.4': + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.27.3': resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.27.4': + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.27.3': resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.27.4': + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.27.3': resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.27.4': + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.27.3': resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.27.4': + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.27.3': resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.27.4': + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.27.3': resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.27.4': + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.27.3': resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.27.4': + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.27.3': resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.27.4': + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.27.3': resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.27.4': + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.27.3': resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.27.4': + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.27.3': resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.27.4': + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.27.3': resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.27.4': + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2330,7 +2487,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0 '@types/babel__core': ^7.1.9 - rollup: '>=4.59.0' + rollup: ^1.20.0||^2.0.0 peerDependenciesMeta: '@types/babel__core': optional: true @@ -2339,7 +2496,7 @@ packages: resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2348,7 +2505,7 @@ packages: resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^2.78.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2356,13 +2513,13 @@ packages: '@rollup/plugin-replace@2.4.2': resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} peerDependencies: - rollup: '>=4.59.0' + rollup: ^1.20.0 || ^2.0.0 '@rollup/plugin-terser@0.4.4': resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2371,7 +2528,7 @@ packages: resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2380,7 +2537,7 @@ packages: resolution: {integrity: sha512-gpC4R1G9Ni92ZIRTexqbhX7U+9estZrbhP+9SRb0DW9xpB9g7j34r+J2hqrcW/lRI7dJaU84MxZM0Rt82tqYPQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2389,152 +2546,152 @@ packages: resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^1.20.0||^2.0.0 '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.59.0': - resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} + '@rollup/rollup-android-arm-eabi@4.60.0': + resolution: {integrity: sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.59.0': - resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + '@rollup/rollup-android-arm64@4.60.0': + resolution: {integrity: sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.59.0': - resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + '@rollup/rollup-darwin-arm64@4.60.0': + resolution: {integrity: sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.59.0': - resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + '@rollup/rollup-darwin-x64@4.60.0': + resolution: {integrity: sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.59.0': - resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} + '@rollup/rollup-freebsd-arm64@4.60.0': + resolution: {integrity: sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.59.0': - resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + '@rollup/rollup-freebsd-x64@4.60.0': + resolution: {integrity: sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': - resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} + '@rollup/rollup-linux-arm-gnueabihf@4.60.0': + resolution: {integrity: sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.59.0': - resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + '@rollup/rollup-linux-arm-musleabihf@4.60.0': + resolution: {integrity: sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.59.0': - resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + '@rollup/rollup-linux-arm64-gnu@4.60.0': + resolution: {integrity: sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.59.0': - resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + '@rollup/rollup-linux-arm64-musl@4.60.0': + resolution: {integrity: sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.59.0': - resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + '@rollup/rollup-linux-loong64-gnu@4.60.0': + resolution: {integrity: sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.59.0': - resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + '@rollup/rollup-linux-loong64-musl@4.60.0': + resolution: {integrity: sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==} cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.59.0': - resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + '@rollup/rollup-linux-ppc64-gnu@4.60.0': + resolution: {integrity: sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.59.0': - resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + '@rollup/rollup-linux-ppc64-musl@4.60.0': + resolution: {integrity: sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==} cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.59.0': - resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} + '@rollup/rollup-linux-riscv64-gnu@4.60.0': + resolution: {integrity: sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.59.0': - resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} + '@rollup/rollup-linux-riscv64-musl@4.60.0': + resolution: {integrity: sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.59.0': - resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + '@rollup/rollup-linux-s390x-gnu@4.60.0': + resolution: {integrity: sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.59.0': - resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + '@rollup/rollup-linux-x64-gnu@4.60.0': + resolution: {integrity: sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.59.0': - resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + '@rollup/rollup-linux-x64-musl@4.60.0': + resolution: {integrity: sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.59.0': - resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + '@rollup/rollup-openbsd-x64@4.60.0': + resolution: {integrity: sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.59.0': - resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + '@rollup/rollup-openharmony-arm64@4.60.0': + resolution: {integrity: sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.59.0': - resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} + '@rollup/rollup-win32-arm64-msvc@4.60.0': + resolution: {integrity: sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.59.0': - resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} + '@rollup/rollup-win32-ia32-msvc@4.60.0': + resolution: {integrity: sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.59.0': - resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + '@rollup/rollup-win32-x64-gnu@4.60.0': + resolution: {integrity: sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.59.0': - resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} + '@rollup/rollup-win32-x64-msvc@4.60.0': + resolution: {integrity: sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==} cpu: [x64] os: [win32] @@ -2544,28 +2701,28 @@ packages: '@sableclient/sable-call-embedded@1.1.4': resolution: {integrity: sha512-XLRcbUPcn7i3QKZAPjIfUkUEXP0E4DOr0dyRoVCWMjHWj28kq+T7jeB2fRr5lB77olBwNHMjIuoTwrv02xiepQ==} - '@sentry-internal/browser-utils@10.43.0': - resolution: {integrity: sha512-8zYTnzhAPvNkVH1Irs62wl0J/c+0QcJ62TonKnzpSFUUD3V5qz8YDZbjIDGfxy+1EB9fO0sxtddKCzwTHF/MbQ==} + '@sentry-internal/browser-utils@10.46.0': + resolution: {integrity: sha512-WB1gBT9G13V02ekZ6NpUhoI1aGHV2eNfjEPthkU2bGBvFpQKnstwzjg7waIRGR7cu+YSW2Q6UI6aQLgBeOPD1g==} engines: {node: '>=18'} - '@sentry-internal/feedback@10.43.0': - resolution: {integrity: sha512-YoXuwluP6eOcQxTeTtaWb090++MrLyWOVsUTejzUQQ6LFL13Jwt+bDPF1kvBugMq4a7OHw/UNKQfd6//rZMn2g==} + '@sentry-internal/feedback@10.46.0': + resolution: {integrity: sha512-c4pI/z9nZCQXe9GYEw/hE/YTY9AxGBp8/wgKI+T8zylrN35SGHaXv63szzE1WbI8lacBY8lBF7rstq9bQVCaHw==} engines: {node: '>=18'} - '@sentry-internal/replay-canvas@10.43.0': - resolution: {integrity: sha512-ZIw1UNKOFXo1LbPCJPMAx9xv7D8TMZQusLDUgb6BsPQJj0igAuwd7KRGTkjjgnrwBp2O/sxcQFRhQhknWk7QPg==} + '@sentry-internal/replay-canvas@10.46.0': + resolution: {integrity: sha512-ub314MWUsekVCuoH0/HJbbimlI24SkV745UW2pj9xRbxOAEf1wjkmIzxKrMDbTgJGuEunug02XZVdJFJUzOcDw==} engines: {node: '>=18'} - '@sentry-internal/replay@10.43.0': - resolution: {integrity: sha512-khCXlGrlH1IU7P5zCEAJFestMeH97zDVCekj8OsNNDtN/1BmCJ46k6Xi0EqAUzdJgrOLJeLdoYdgtiIjovZ8Sg==} + '@sentry-internal/replay@10.46.0': + resolution: {integrity: sha512-JBsWeXG6bRbxBFK8GzWymWGOB9QE7Kl57BeF3jzgdHTuHSWZ2mRnAmb1K05T4LU+gVygk6yW0KmdC8Py9Qzg9A==} engines: {node: '>=18'} '@sentry/babel-plugin-component-annotate@5.1.1': resolution: {integrity: sha512-x2wEpBHwsTyTF2rWsLKJlzrRF1TTIGOfX+ngdE+Yd5DBkoS58HwQv824QOviPGQRla4/ypISqAXzjdDPL/zalg==} engines: {node: '>= 18'} - '@sentry/browser@10.43.0': - resolution: {integrity: sha512-2V3I3sXi3SMeiZpKixd9ztokSgK27cmvsD9J5oyOyjhGLTW/6QKCwHbKnluMgQMXq20nixQk5zN4wRjRUma3sg==} + '@sentry/browser@10.46.0': + resolution: {integrity: sha512-80DmGlTk5Z2/OxVOzLNxwolMyouuAYKqG8KUcoyintZqHbF6kO1RulI610HmyUt3OagKeBCqt9S7w0VIfCRL+Q==} engines: {node: '>=18'} '@sentry/bundler-plugin-core@5.1.1': @@ -2624,12 +2781,12 @@ packages: engines: {node: '>= 10'} hasBin: true - '@sentry/core@10.43.0': - resolution: {integrity: sha512-l0SszQAPiQGWl/ferw8GP3ALyHXiGiRKJaOvNmhGO+PrTQyZTZ6OYyPnGijAFRg58dE1V3RCH/zw5d2xSUIiNg==} + '@sentry/core@10.46.0': + resolution: {integrity: sha512-N3fj4zqBQOhXliS1Ne9euqIKuciHCGOJfPGQLwBoW9DNz03jF+NB8+dUKtrJ79YLoftjVgf8nbgwtADK7NR+2Q==} engines: {node: '>=18'} - '@sentry/react@10.43.0': - resolution: {integrity: sha512-shvErEpJ41i0Q3lIZl0CDWYQ7m8yHLi7ECG0gFvN8zf8pEdl5grQIOoe3t/GIUzcpCcor16F148ATmKJJypc/Q==} + '@sentry/react@10.46.0': + resolution: {integrity: sha512-Rb1S+9OuUPVwsz7GWnQ6Kgf3azbsseUymIegg3JZHNcW/fM1nPpaljzTBnuineia113DH0pgMBcdrrZDLaosFQ==} engines: {node: '>=18'} peerDependencies: react: ^16.14.0 || 17.x || 18.x || 19.x @@ -2638,7 +2795,7 @@ packages: resolution: {integrity: sha512-1d5NkdRR6aKWBP7czkY8sFFWiKnfmfRpQOj+m9bJTsyTjbMiEQJst6315w5pCVlRItPhBqpAraqAhutZFgvyVg==} engines: {node: '>= 18'} peerDependencies: - rollup: '>=4.59.0' + rollup: '>=3.2.0' '@sentry/vite-plugin@5.1.1': resolution: {integrity: sha512-i6NWUDi2SDikfSUeMJvJTRdwEKYSfTd+mvBO2Ja51S1YK+hnickBuDfD+RvPerIXLuyRu3GamgNPbNqgCGUg/Q==} @@ -2816,31 +2973,31 @@ packages: '@swc/wasm@1.15.18': resolution: {integrity: sha512-zeSORFArxqUwfVMTRHu8AN9k9LlfSn0CKDSzLhJDITpgLoS0xpnocxsgMjQjUcVYDgO47r9zLP49HEjH/iGsFg==} - '@tanstack/query-core@5.90.20': - resolution: {integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==} + '@tanstack/query-core@5.95.2': + resolution: {integrity: sha512-o4T8vZHZET4Bib3jZ/tCW9/7080urD4c+0/AUaYVpIqOsr7y0reBc1oX3ttNaSW5mYyvZHctiQ/UOP2PfdmFEQ==} - '@tanstack/query-devtools@5.93.0': - resolution: {integrity: sha512-+kpsx1NQnOFTZsw6HAFCW3HkKg0+2cepGtAWXjiiSOJJ1CtQpt72EE2nyZb+AjAbLRPoeRmPJ8MtQd8r8gsPdg==} + '@tanstack/query-devtools@5.95.2': + resolution: {integrity: sha512-QfaoqBn9uAZ+ICkA8brd1EHj+qBF6glCFgt94U8XP5BT6ppSsDBI8IJ00BU+cAGjQzp6wcKJL2EmRYvxy0TWIg==} - '@tanstack/react-query-devtools@5.91.3': - resolution: {integrity: sha512-nlahjMtd/J1h7IzOOfqeyDh5LNfG0eULwlltPEonYy0QL+nqrBB+nyzJfULV+moL7sZyxc2sHdNJki+vLA9BSA==} + '@tanstack/react-query-devtools@5.95.2': + resolution: {integrity: sha512-AFQFmbznVkbtfpx8VJ2DylW17wWagQel/qLstVLkYmNRo2CmJt3SNej5hvl6EnEeljJIdC3BTB+W7HZtpsH+3g==} peerDependencies: - '@tanstack/react-query': ^5.90.20 + '@tanstack/react-query': ^5.95.2 react: ^18 || ^19 - '@tanstack/react-query@5.90.21': - resolution: {integrity: sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==} + '@tanstack/react-query@5.95.2': + resolution: {integrity: sha512-/wGkvLj/st5Ud1Q76KF1uFxScV7WeqN1slQx5280ycwAyYkIPGaRZAEgHxe3bjirSd5Zpwkj6zNcR4cqYni/ZA==} peerDependencies: react: ^18 || ^19 - '@tanstack/react-virtual@3.13.21': - resolution: {integrity: sha512-SYXFrmrbPgXBvf+HsOsKhFgqSe4M6B29VHOsX9Jih9TlNkNkDWx0hWMiMLUghMEzyUz772ndzdEeCEBx+3GIZw==} + '@tanstack/react-virtual@3.13.23': + resolution: {integrity: sha512-XnMRnHQ23piOVj2bzJqHrRrLg4r+F86fuBcwteKfbIjJrtGxb4z7tIvPVAe4B+4UVwo9G4Giuz5fmapcrnZ0OQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/virtual-core@3.13.21': - resolution: {integrity: sha512-ww+fmLHyCbPSf7JNbWZP3g7wl6SdNo3ah5Aiw+0e9FDErkVHLKprYUrwTm7dF646FtEkN/KkAKPYezxpmvOjxw==} + '@tanstack/virtual-core@3.13.23': + resolution: {integrity: sha512-zSz2Z2HNyLjCplANTDyl3BcdQJc2k1+yyFoKhNRmCr7V7dY8o8q5m8uFTI1/Pg1kL+Hgrz6u3Xo6eFUB7l66cg==} '@testing-library/dom@10.4.1': resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} @@ -3124,14 +3281,11 @@ packages: '@vanilla-extract/babel-plugin-debug-ids@1.2.2': resolution: {integrity: sha512-MeDWGICAF9zA/OZLOKwhoRlsUW+fiMwnfuOAqFVohL31Agj7Q/RBWAYweqjHLgFBCsdnr6XIfwjJnmb2znEWxw==} - '@vanilla-extract/compiler@0.6.0': - resolution: {integrity: sha512-FlZM8s/h1obGHdYSTo05iIXUr6hsNvoE/okv/e9Sq7GN+niofhUKyuZPSwZNVYMK49xxeWNH9mopOlGRRPV4mw==} - - '@vanilla-extract/css@1.18.0': - resolution: {integrity: sha512-/p0dwOjr0o8gE5BRQ5O9P0u/2DjUd6Zfga2JGmE4KaY7ZITWMszTzk4x4CPlM5cKkRr2ZGzbE6XkuPNfp9shSQ==} + '@vanilla-extract/compiler@0.7.0': + resolution: {integrity: sha512-rZQ40HVmsxfGLjoflwwsaUBLfpbpKDoZC19oiDA0FHq4LdrYtyVbFkc0MfqkNo/qBCvaZfsRezCqk0QQxCqZ8w==} - '@vanilla-extract/css@1.20.0': - resolution: {integrity: sha512-yKuajXFlghIjRZmEfy95z6MYj+mzJPoD3nbNLVAUB8Np6I1P9g5vBlznQPD+0A46osCn0za/wIvp/cg8HU3aig==} + '@vanilla-extract/css@1.20.1': + resolution: {integrity: sha512-5I9RNo5uZW9tsBnqrWzJqELegOqTHBrZyDFnES0gR9gJJHBB9dom1N0bwITM9tKwBcfKrTX4a6DHVeQdJ2ubQA==} '@vanilla-extract/integration@8.0.9': resolution: {integrity: sha512-NP+CSo5IYHDmkMMy5vAxY4R9i2+CAg4sxgvVaxuHiuY9q30i6dNUTujNNKZGW2urEkd4HVVI6NggeIyYjbGPwA==} @@ -3144,8 +3298,8 @@ packages: peerDependencies: '@vanilla-extract/css': ^1.0.0 - '@vanilla-extract/vite-plugin@5.2.1': - resolution: {integrity: sha512-1dmCgmTmls/c4G+t453vZIzZ+82ftr+JC2J48C1drVkiwtZ7DscYSIko9Ci0CyDptBLWz5EO9fWnqzfHnns8tg==} + '@vanilla-extract/vite-plugin@5.2.2': + resolution: {integrity: sha512-AUyB4fDR2b/Mo0lcXhhlf6RxnDPYwFMyKKopalJ4BwQNKYzZSoTwHJ1PLPO9SKhpz7lzXc0Z18GHQZOewzl3YA==} peerDependencies: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3162,48 +3316,48 @@ packages: babel-plugin-react-compiler: optional: true - '@vitest/coverage-v8@4.1.0': - resolution: {integrity: sha512-nDWulKeik2bL2Va/Wl4x7DLuTKAXa906iRFooIRPR+huHkcvp9QDkPQ2RJdmjOFrqOqvNfoSQLF68deE3xC3CQ==} + '@vitest/coverage-v8@4.1.2': + resolution: {integrity: sha512-sPK//PHO+kAkScb8XITeB1bf7fsk85Km7+rt4eeuRR3VS1/crD47cmV5wicisJmjNdfeokTZwjMk4Mj2d58Mgg==} peerDependencies: - '@vitest/browser': 4.1.0 - vitest: 4.1.0 + '@vitest/browser': 4.1.2 + vitest: 4.1.2 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.1.0': - resolution: {integrity: sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==} + '@vitest/expect@4.1.2': + resolution: {integrity: sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==} - '@vitest/mocker@4.1.0': - resolution: {integrity: sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==} + '@vitest/mocker@4.1.2': + resolution: {integrity: sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==} peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@4.1.0': - resolution: {integrity: sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==} + '@vitest/pretty-format@4.1.2': + resolution: {integrity: sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==} - '@vitest/runner@4.1.0': - resolution: {integrity: sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==} + '@vitest/runner@4.1.2': + resolution: {integrity: sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==} - '@vitest/snapshot@4.1.0': - resolution: {integrity: sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==} + '@vitest/snapshot@4.1.2': + resolution: {integrity: sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==} - '@vitest/spy@4.1.0': - resolution: {integrity: sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==} + '@vitest/spy@4.1.2': + resolution: {integrity: sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==} - '@vitest/ui@4.1.0': - resolution: {integrity: sha512-sTSDtVM1GOevRGsCNhp1mBUHKo9Qlc55+HCreFT4fe99AHxl1QQNXSL3uj4Pkjh5yEuWZIx8E2tVC94nnBZECQ==} + '@vitest/ui@4.1.2': + resolution: {integrity: sha512-/irhyeAcKS2u6Zokagf9tqZJ0t8S6kMZq4ZG9BHZv7I+fkRrYfQX4w7geYeC2r6obThz39PDxvXQzZX+qXqGeg==} peerDependencies: - vitest: 4.1.0 + vitest: 4.1.2 - '@vitest/utils@4.1.0': - resolution: {integrity: sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==} + '@vitest/utils@4.1.2': + resolution: {integrity: sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -3341,6 +3495,9 @@ packages: badwords-list@2.0.1-4: resolution: {integrity: sha512-FxfZUp7B9yCnesNtFQS9v6PvZdxTYa14Q60JR6vhjdQdWI4naTjJIyx22JzoER8ooeT8SAAKoHLjKfCV7XgYUQ==} + 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} @@ -3372,8 +3529,14 @@ packages: blurhash@2.0.5: resolution: {integrity: sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==} - brace-expansion@5.0.4: - resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + brace-expansion@1.1.13: + resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==} + + brace-expansion@2.0.3: + resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==} + + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} braces@3.0.3: @@ -3471,6 +3634,9 @@ packages: compute-scroll-into-view@3.1.1: resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -3522,11 +3688,6 @@ packages: css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -3549,8 +3710,8 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} - dayjs@1.11.19: - resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + dayjs@1.11.20: + resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -3732,6 +3893,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.27.4: + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -3979,7 +4145,7 @@ packages: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: - picomatch: ^3 || ^4 + picomatch: '>=4.0.4' peerDependenciesMeta: picomatch: optional: true @@ -4223,10 +4389,10 @@ packages: i18next-http-backend@2.7.3: resolution: {integrity: sha512-FgZxrXdRA5u44xfYsJlEBL4/KH3f2IluBpgV/7riW0YW2VEyM8FzVt2XHAOi6id0Ppj7vZvCZVpp5LrGXnc8Ig==} - i18next@25.8.17: - resolution: {integrity: sha512-vWtCttyn5bpOK4hWbRAe1ZXkA+Yzcn2OcACT+WJavtfGMcxzkfvXTLMeOU8MUhRmAySKjU4VVuKlo0sSGeBokA==} + i18next@25.10.10: + resolution: {integrity: sha512-cqUW2Z3EkRx7NqSyywjkgCLK7KLCL6IFVFcONG7nVYIJ3ekZ1/N5jUsihHV6Bq37NfhgtczxJcxduELtjTwkuQ==} peerDependencies: - typescript: ^5 + typescript: ^5 || ^6 peerDependenciesMeta: typescript: optional: true @@ -4447,8 +4613,8 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - jotai@2.18.1: - resolution: {integrity: sha512-e0NOzK+yRFwHo7DOp0DS0Ycq74KMEAObDWFGmfEL28PD9nLqBTt3/Ug7jf9ca72x0gC9LQZG9zH+0ISICmy3iA==} + jotai@2.19.0: + resolution: {integrity: sha512-r2wwxEXP1F2JteDLZEOPoIpAHhV89paKsN5GWVYndPNMMP/uVZDcC+fNj0A8NjKgaPWzdyO8Vp8YcYKe0uCEqQ==} engines: {node: '>=12.20.0'} peerDependencies: '@babel/core': '>=7.0.0' @@ -4475,8 +4641,8 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true - jsdom@29.0.0: - resolution: {integrity: sha512-9FshNB6OepopZ08unmmGpsF7/qCjxGPbo3NbgfJAnPeHXnsODE9WWffXZtRFRFe0ntzaAOcSKNJFz8wiyvF1jQ==} + jsdom@29.0.1: + resolution: {integrity: sha512-z6JOK5gRO7aMybVq/y/MlIpKh8JIi68FBKMUtKkK2KH/wMSRlCxQ682d08LB9fYXplyY/UXG8P4XXTScmdjApg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -4501,9 +4667,6 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -4746,6 +4909,13 @@ packages: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -4929,18 +5099,6 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@2.3.2: - resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} - engines: {node: '>=8.6'} - - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} @@ -5043,14 +5201,14 @@ packages: peerDependencies: react: '>=16.4.1' - react-i18next@16.5.7: - resolution: {integrity: sha512-t/si6ng+hMPvgRGNgGvHAkMuVRBsIBx5mN+exm/yiBPSFL7VooQ37YYfISxSE0LjvQjG+MTe+0htKdOJY0S/vw==} + react-i18next@16.6.6: + resolution: {integrity: sha512-ZgL2HUoW34UKUkOV7uSQFE1CDnRPD+tCR3ywSuWH7u2iapnz86U8Bi3Vrs620qNDzCf1F47NxglCEkchCTDOHw==} peerDependencies: - i18next: '>= 25.6.2' + i18next: '>= 25.10.9' react: '>= 16.8.0' react-dom: '*' react-native: '*' - typescript: ^5 + typescript: ^5 || ^6 peerDependenciesMeta: react-dom: optional: true @@ -5158,8 +5316,13 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup@4.59.0: - resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} + rollup@2.80.0: + resolution: {integrity: sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==} + engines: {node: '>=10.0.0'} + hasBin: true + + rollup@4.60.0: + resolution: {integrity: sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -5284,8 +5447,8 @@ packages: resolution: {integrity: sha512-KAkBqZl3c2GvNgNhcoyJae1aKldDW0LO279wF9bk1PnluRTETKBq0WyzRXxEhoQLk56yHaOY4JCBEKDuJIET5g==} engines: {node: '>=20.0.0'} - smol-toml@1.6.0: - resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==} + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} engines: {node: '>= 18'} snake-case@3.0.4: @@ -5537,8 +5700,12 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@7.24.3: - resolution: {integrity: sha512-eJdUmK/Wrx2d+mnWWmwwLRyA7OQCkLap60sk3dOK4ViZR7DKwwptwuIvFBg2HaiP9ESaEdhtpSymQPvytpmkCA==} + undici@7.24.4: + resolution: {integrity: sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==} + engines: {node: '>=20.18.1'} + + undici@7.24.6: + resolution: {integrity: sha512-Xi4agocCbRzt0yYMZGMA6ApD7gvtUFaxm4ZmeacWI4cZxaF6C+8I8QfofC20NAePiB/IcvZmzkJ7XPa471AEtA==} engines: {node: '>=20.18.1'} unenv@2.0.0-rc.24: @@ -5671,7 +5838,7 @@ packages: sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 - yaml: ^2.4.2 + yaml: '>=2.8.3' peerDependenciesMeta: '@types/node': optional: true @@ -5703,7 +5870,7 @@ packages: peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 '@vitejs/devtools': ^0.1.0 - esbuild: '>=0.25.0' + esbuild: ^0.27.0 jiti: '>=1.21.0' less: ^4.0.0 sass: ^1.70.0 @@ -5712,7 +5879,7 @@ packages: sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 - yaml: ^2.4.2 + yaml: '>=2.8.3' peerDependenciesMeta: '@types/node': optional: true @@ -5739,21 +5906,21 @@ packages: yaml: optional: true - vitest@4.1.0: - resolution: {integrity: sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==} + vitest@4.1.2: + resolution: {integrity: sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.0 - '@vitest/browser-preview': 4.1.0 - '@vitest/browser-webdriverio': 4.1.0 - '@vitest/ui': 4.1.0 + '@vitest/browser-playwright': 4.1.2 + '@vitest/browser-preview': 4.1.2 + '@vitest/browser-webdriverio': 4.1.2 + '@vitest/ui': 4.1.2 happy-dom: '*' jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -5926,11 +6093,6 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} - engines: {node: '>= 14.6'} - hasBin: true - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -5954,10 +6116,9 @@ snapshots: '@adobe/css-tools@4.4.4': {} - '@apideck/better-ajv-errors@0.3.6(ajv@8.18.0)': + '@apideck/better-ajv-errors@0.3.7(ajv@8.18.0)': dependencies: ajv: 8.18.0 - json-schema: 0.4.0 jsonpointer: 5.0.1 leven: 3.1.0 @@ -5991,7 +6152,7 @@ snapshots: '@atlaskit/pragmatic-drag-and-drop@1.7.9': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 bind-event-listener: 3.0.0 raf-schd: 4.0.3 @@ -6153,6 +6314,11 @@ snapshots: dependencies: '@babel/types': 7.29.0 + '@babel/parser@7.29.2': + dependencies: + '@babel/types': 7.29.0 + optional: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -6670,12 +6836,12 @@ snapshots: optionalDependencies: workerd: 1.20260317.1 - '@cloudflare/vite-plugin@1.30.2(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(workerd@1.20260317.1)(wrangler@4.78.0)': + '@cloudflare/vite-plugin@1.30.2(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1))(workerd@1.20260317.1)(wrangler@4.78.0)': dependencies: '@cloudflare/unenv-preset': 2.16.0(unenv@2.0.0-rc.24)(workerd@1.20260317.1) miniflare: 4.20260317.3 unenv: 2.0.0-rc.24 - vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1) wrangler: 4.78.0 ws: 8.18.0 transitivePeerDependencies: @@ -6750,88 +6916,166 @@ snapshots: '@emotion/hash@0.9.2': {} - '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.27.3)': + '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.27.4)': dependencies: - esbuild: 0.27.3 + esbuild: 0.27.4 '@esbuild/aix-ppc64@0.27.3': optional: true + '@esbuild/aix-ppc64@0.27.4': + optional: true + '@esbuild/android-arm64@0.27.3': optional: true + '@esbuild/android-arm64@0.27.4': + optional: true + '@esbuild/android-arm@0.27.3': optional: true + '@esbuild/android-arm@0.27.4': + optional: true + '@esbuild/android-x64@0.27.3': optional: true + '@esbuild/android-x64@0.27.4': + optional: true + '@esbuild/darwin-arm64@0.27.3': optional: true + '@esbuild/darwin-arm64@0.27.4': + optional: true + '@esbuild/darwin-x64@0.27.3': optional: true + '@esbuild/darwin-x64@0.27.4': + optional: true + '@esbuild/freebsd-arm64@0.27.3': optional: true + '@esbuild/freebsd-arm64@0.27.4': + optional: true + '@esbuild/freebsd-x64@0.27.3': optional: true + '@esbuild/freebsd-x64@0.27.4': + optional: true + '@esbuild/linux-arm64@0.27.3': optional: true + '@esbuild/linux-arm64@0.27.4': + optional: true + '@esbuild/linux-arm@0.27.3': optional: true + '@esbuild/linux-arm@0.27.4': + optional: true + '@esbuild/linux-ia32@0.27.3': optional: true + '@esbuild/linux-ia32@0.27.4': + optional: true + '@esbuild/linux-loong64@0.27.3': optional: true + '@esbuild/linux-loong64@0.27.4': + optional: true + '@esbuild/linux-mips64el@0.27.3': optional: true + '@esbuild/linux-mips64el@0.27.4': + optional: true + '@esbuild/linux-ppc64@0.27.3': optional: true + '@esbuild/linux-ppc64@0.27.4': + optional: true + '@esbuild/linux-riscv64@0.27.3': optional: true + '@esbuild/linux-riscv64@0.27.4': + optional: true + '@esbuild/linux-s390x@0.27.3': optional: true + '@esbuild/linux-s390x@0.27.4': + optional: true + '@esbuild/linux-x64@0.27.3': optional: true + '@esbuild/linux-x64@0.27.4': + optional: true + '@esbuild/netbsd-arm64@0.27.3': optional: true + '@esbuild/netbsd-arm64@0.27.4': + optional: true + '@esbuild/netbsd-x64@0.27.3': optional: true + '@esbuild/netbsd-x64@0.27.4': + optional: true + '@esbuild/openbsd-arm64@0.27.3': optional: true + '@esbuild/openbsd-arm64@0.27.4': + optional: true + '@esbuild/openbsd-x64@0.27.3': optional: true + '@esbuild/openbsd-x64@0.27.4': + optional: true + '@esbuild/openharmony-arm64@0.27.3': optional: true + '@esbuild/openharmony-arm64@0.27.4': + optional: true + '@esbuild/sunos-x64@0.27.3': optional: true + '@esbuild/sunos-x64@0.27.4': + optional: true + '@esbuild/win32-arm64@0.27.3': optional: true + '@esbuild/win32-arm64@0.27.4': + optional: true + '@esbuild/win32-ia32@0.27.3': optional: true + '@esbuild/win32-ia32@0.27.4': + optional: true + '@esbuild/win32-x64@0.27.3': optional: true + '@esbuild/win32-x64@0.27.4': + optional: true + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.3(jiti@2.6.1))': dependencies: eslint: 9.39.3(jiti@2.6.1) @@ -6849,7 +7093,7 @@ snapshots: dependencies: '@eslint/object-schema': 2.1.7 debug: 4.4.3 - minimatch: 10.2.4 + minimatch: 3.1.5 transitivePeerDependencies: - supports-color @@ -6874,7 +7118,7 @@ snapshots: ignore: 5.3.2 import-fresh: 3.3.1 js-yaml: 4.1.1 - minimatch: 10.2.4 + minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color @@ -8256,180 +8500,188 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.7': {} - '@rollup/plugin-babel@5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.59.0)': + '@rollup/plugin-babel@5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@2.80.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.28.6 - '@rollup/pluginutils': 3.1.0(rollup@4.59.0) - rollup: 4.59.0 + '@rollup/pluginutils': 3.1.0(rollup@2.80.0) + rollup: 2.80.0 optionalDependencies: '@types/babel__core': 7.20.5 transitivePeerDependencies: - supports-color - '@rollup/plugin-inject@5.0.5(rollup@4.59.0)': + '@rollup/plugin-inject@5.0.5(rollup@4.60.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.0) estree-walker: 2.0.2 magic-string: 0.30.21 optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.0 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.59.0)': + '@rollup/plugin-node-resolve@15.3.1(rollup@2.80.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@2.80.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.59.0 + rollup: 2.80.0 - '@rollup/plugin-replace@2.4.2(rollup@4.59.0)': + '@rollup/plugin-replace@2.4.2(rollup@2.80.0)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.59.0) + '@rollup/pluginutils': 3.1.0(rollup@2.80.0) magic-string: 0.25.9 - rollup: 4.59.0 + rollup: 2.80.0 - '@rollup/plugin-terser@0.4.4(rollup@4.59.0)': + '@rollup/plugin-terser@0.4.4(rollup@2.80.0)': dependencies: serialize-javascript: 7.0.5 smob: 1.6.1 terser: 5.46.1 optionalDependencies: - rollup: 4.59.0 + rollup: 2.80.0 - '@rollup/plugin-virtual@3.0.2(rollup@4.59.0)': + '@rollup/plugin-virtual@3.0.2(rollup@4.60.0)': optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.0 - '@rollup/plugin-wasm@6.2.2(rollup@4.59.0)': + '@rollup/plugin-wasm@6.2.2(rollup@4.60.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.0) optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.0 - '@rollup/pluginutils@3.1.0(rollup@4.59.0)': + '@rollup/pluginutils@3.1.0(rollup@2.80.0)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 - picomatch: 2.3.2 - rollup: 4.59.0 + picomatch: 4.0.4 + rollup: 2.80.0 - '@rollup/pluginutils@5.3.0(rollup@4.59.0)': + '@rollup/pluginutils@5.3.0(rollup@2.80.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: - rollup: 4.59.0 + rollup: 2.80.0 - '@rollup/rollup-android-arm-eabi@4.59.0': + '@rollup/pluginutils@5.3.0(rollup@4.60.0)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.4 + optionalDependencies: + rollup: 4.60.0 + + '@rollup/rollup-android-arm-eabi@4.60.0': optional: true - '@rollup/rollup-android-arm64@4.59.0': + '@rollup/rollup-android-arm64@4.60.0': optional: true - '@rollup/rollup-darwin-arm64@4.59.0': + '@rollup/rollup-darwin-arm64@4.60.0': optional: true - '@rollup/rollup-darwin-x64@4.59.0': + '@rollup/rollup-darwin-x64@4.60.0': optional: true - '@rollup/rollup-freebsd-arm64@4.59.0': + '@rollup/rollup-freebsd-arm64@4.60.0': optional: true - '@rollup/rollup-freebsd-x64@4.59.0': + '@rollup/rollup-freebsd-x64@4.60.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + '@rollup/rollup-linux-arm-gnueabihf@4.60.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.59.0': + '@rollup/rollup-linux-arm-musleabihf@4.60.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.59.0': + '@rollup/rollup-linux-arm64-gnu@4.60.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.59.0': + '@rollup/rollup-linux-arm64-musl@4.60.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.59.0': + '@rollup/rollup-linux-loong64-gnu@4.60.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.59.0': + '@rollup/rollup-linux-loong64-musl@4.60.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.59.0': + '@rollup/rollup-linux-ppc64-gnu@4.60.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.59.0': + '@rollup/rollup-linux-ppc64-musl@4.60.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.59.0': + '@rollup/rollup-linux-riscv64-gnu@4.60.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.59.0': + '@rollup/rollup-linux-riscv64-musl@4.60.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.59.0': + '@rollup/rollup-linux-s390x-gnu@4.60.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.59.0': + '@rollup/rollup-linux-x64-gnu@4.60.0': optional: true - '@rollup/rollup-linux-x64-musl@4.59.0': + '@rollup/rollup-linux-x64-musl@4.60.0': optional: true - '@rollup/rollup-openbsd-x64@4.59.0': + '@rollup/rollup-openbsd-x64@4.60.0': optional: true - '@rollup/rollup-openharmony-arm64@4.59.0': + '@rollup/rollup-openharmony-arm64@4.60.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.59.0': + '@rollup/rollup-win32-arm64-msvc@4.60.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.59.0': + '@rollup/rollup-win32-ia32-msvc@4.60.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.59.0': + '@rollup/rollup-win32-x64-gnu@4.60.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.59.0': + '@rollup/rollup-win32-x64-msvc@4.60.0': optional: true '@rtsao/scc@1.1.0': {} '@sableclient/sable-call-embedded@1.1.4': {} - '@sentry-internal/browser-utils@10.43.0': + '@sentry-internal/browser-utils@10.46.0': dependencies: - '@sentry/core': 10.43.0 + '@sentry/core': 10.46.0 - '@sentry-internal/feedback@10.43.0': + '@sentry-internal/feedback@10.46.0': dependencies: - '@sentry/core': 10.43.0 + '@sentry/core': 10.46.0 - '@sentry-internal/replay-canvas@10.43.0': + '@sentry-internal/replay-canvas@10.46.0': dependencies: - '@sentry-internal/replay': 10.43.0 - '@sentry/core': 10.43.0 + '@sentry-internal/replay': 10.46.0 + '@sentry/core': 10.46.0 - '@sentry-internal/replay@10.43.0': + '@sentry-internal/replay@10.46.0': dependencies: - '@sentry-internal/browser-utils': 10.43.0 - '@sentry/core': 10.43.0 + '@sentry-internal/browser-utils': 10.46.0 + '@sentry/core': 10.46.0 '@sentry/babel-plugin-component-annotate@5.1.1': {} - '@sentry/browser@10.43.0': + '@sentry/browser@10.46.0': dependencies: - '@sentry-internal/browser-utils': 10.43.0 - '@sentry-internal/feedback': 10.43.0 - '@sentry-internal/replay': 10.43.0 - '@sentry-internal/replay-canvas': 10.43.0 - '@sentry/core': 10.43.0 + '@sentry-internal/browser-utils': 10.46.0 + '@sentry-internal/feedback': 10.46.0 + '@sentry-internal/replay': 10.46.0 + '@sentry-internal/replay-canvas': 10.46.0 + '@sentry/core': 10.46.0 '@sentry/bundler-plugin-core@5.1.1': dependencies: @@ -8488,27 +8740,27 @@ snapshots: - encoding - supports-color - '@sentry/core@10.43.0': {} + '@sentry/core@10.46.0': {} - '@sentry/react@10.43.0(react@18.3.1)': + '@sentry/react@10.46.0(react@18.3.1)': dependencies: - '@sentry/browser': 10.43.0 - '@sentry/core': 10.43.0 + '@sentry/browser': 10.46.0 + '@sentry/core': 10.46.0 react: 18.3.1 - '@sentry/rollup-plugin@5.1.1(rollup@4.59.0)': + '@sentry/rollup-plugin@5.1.1(rollup@4.60.0)': dependencies: '@sentry/bundler-plugin-core': 5.1.1 magic-string: 0.30.21 - rollup: 4.59.0 + rollup: 4.60.0 transitivePeerDependencies: - encoding - supports-color - '@sentry/vite-plugin@5.1.1(rollup@4.59.0)': + '@sentry/vite-plugin@5.1.1(rollup@4.60.0)': dependencies: '@sentry/bundler-plugin-core': 5.1.1 - '@sentry/rollup-plugin': 5.1.1(rollup@4.59.0) + '@sentry/rollup-plugin': 5.1.1(rollup@4.60.0) transitivePeerDependencies: - encoding - rollup @@ -8528,7 +8780,7 @@ snapshots: eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 - picomatch: 4.0.3 + picomatch: 4.0.4 '@surma/rollup-plugin-off-main-thread@2.2.3': dependencies: @@ -8666,28 +8918,28 @@ snapshots: '@swc/wasm@1.15.18': {} - '@tanstack/query-core@5.90.20': {} + '@tanstack/query-core@5.95.2': {} - '@tanstack/query-devtools@5.93.0': {} + '@tanstack/query-devtools@5.95.2': {} - '@tanstack/react-query-devtools@5.91.3(@tanstack/react-query@5.90.21(react@18.3.1))(react@18.3.1)': + '@tanstack/react-query-devtools@5.95.2(@tanstack/react-query@5.95.2(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/query-devtools': 5.93.0 - '@tanstack/react-query': 5.90.21(react@18.3.1) + '@tanstack/query-devtools': 5.95.2 + '@tanstack/react-query': 5.95.2(react@18.3.1) react: 18.3.1 - '@tanstack/react-query@5.90.21(react@18.3.1)': + '@tanstack/react-query@5.95.2(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.90.20 + '@tanstack/query-core': 5.95.2 react: 18.3.1 - '@tanstack/react-virtual@3.13.21(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-virtual@3.13.23(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/virtual-core': 3.13.21 + '@tanstack/virtual-core': 3.13.23 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@tanstack/virtual-core@3.13.21': {} + '@tanstack/virtual-core@3.13.23': {} '@testing-library/dom@10.4.1': dependencies: @@ -8732,7 +8984,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 @@ -8746,7 +8998,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 optional: true @@ -8972,12 +9224,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@vanilla-extract/compiler@0.6.0(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(yaml@2.8.2)': + '@vanilla-extract/compiler@0.7.0(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)': dependencies: - '@vanilla-extract/css': 1.20.0 + '@vanilla-extract/css': 1.20.1 '@vanilla-extract/integration': 8.0.9 - vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1) + vite-node: 3.2.4(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -8995,29 +9247,11 @@ snapshots: - tsx - yaml - '@vanilla-extract/css@1.18.0': - dependencies: - '@emotion/hash': 0.9.2 - '@vanilla-extract/private': 1.0.9 - css-what: 6.2.2 - cssesc: 3.0.0 - csstype: 3.2.3 - dedent: 1.7.2 - deep-object-diff: 1.1.9 - deepmerge: 4.3.1 - lru-cache: 10.4.3 - media-query-parser: 2.0.2 - modern-ahocorasick: 1.1.0 - picocolors: 1.1.1 - transitivePeerDependencies: - - babel-plugin-macros - - '@vanilla-extract/css@1.20.0': + '@vanilla-extract/css@1.20.1': dependencies: '@emotion/hash': 0.9.2 '@vanilla-extract/private': 1.0.9 css-what: 6.2.2 - cssesc: 3.0.0 csstype: 3.2.3 dedent: 1.7.2 deep-object-diff: 1.1.9 @@ -9034,9 +9268,9 @@ snapshots: '@babel/core': 7.29.0 '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) '@vanilla-extract/babel-plugin-debug-ids': 1.2.2 - '@vanilla-extract/css': 1.20.0 + '@vanilla-extract/css': 1.20.1 dedent: 1.7.2 - esbuild: 0.27.3 + esbuild: 0.27.4 eval: 0.1.8 find-up: 5.0.0 javascript-stringify: 2.1.0 @@ -9047,15 +9281,15 @@ snapshots: '@vanilla-extract/private@1.0.9': {} - '@vanilla-extract/recipes@0.5.7(@vanilla-extract/css@1.18.0)': + '@vanilla-extract/recipes@0.5.7(@vanilla-extract/css@1.20.1)': dependencies: - '@vanilla-extract/css': 1.18.0 + '@vanilla-extract/css': 1.20.1 - '@vanilla-extract/vite-plugin@5.2.1(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(yaml@2.8.2)': + '@vanilla-extract/vite-plugin@5.2.2(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1))': dependencies: - '@vanilla-extract/compiler': 0.6.0(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(yaml@2.8.2) + '@vanilla-extract/compiler': 0.7.0(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1) '@vanilla-extract/integration': 8.0.9 - vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -9073,15 +9307,15 @@ snapshots: - tsx - yaml - '@vitejs/plugin-react@6.0.1(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))': + '@vitejs/plugin-react@6.0.1(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1) - '@vitest/coverage-v8@4.1.0(vitest@4.1.0)': + '@vitest/coverage-v8@4.1.2(vitest@4.1.2)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.0 + '@vitest/utils': 4.1.2 ast-v8-to-istanbul: 1.0.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -9090,57 +9324,57 @@ snapshots: obug: 2.1.1 std-env: 4.0.0 tinyrainbow: 3.1.0 - vitest: 4.1.0(@types/node@24.10.13)(@vitest/ui@4.1.0)(jsdom@29.0.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + vitest: 4.1.2(@types/node@24.10.13)(@vitest/ui@4.1.2)(jsdom@29.0.1)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)) - '@vitest/expect@4.1.0': + '@vitest/expect@4.1.2': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.0 - '@vitest/utils': 4.1.0 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))': + '@vitest/mocker@4.1.2(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1))': dependencies: - '@vitest/spy': 4.1.0 + '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1) - '@vitest/pretty-format@4.1.0': + '@vitest/pretty-format@4.1.2': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.0': + '@vitest/runner@4.1.2': dependencies: - '@vitest/utils': 4.1.0 + '@vitest/utils': 4.1.2 pathe: 2.0.3 - '@vitest/snapshot@4.1.0': + '@vitest/snapshot@4.1.2': dependencies: - '@vitest/pretty-format': 4.1.0 - '@vitest/utils': 4.1.0 + '@vitest/pretty-format': 4.1.2 + '@vitest/utils': 4.1.2 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.0': {} + '@vitest/spy@4.1.2': {} - '@vitest/ui@4.1.0(vitest@4.1.0)': + '@vitest/ui@4.1.2(vitest@4.1.2)': dependencies: - '@vitest/utils': 4.1.0 + '@vitest/utils': 4.1.2 fflate: 0.8.2 flatted: 3.4.2 pathe: 2.0.3 sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vitest: 4.1.0(@types/node@24.10.13)(@vitest/ui@4.1.0)(jsdom@29.0.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) + vitest: 4.1.2(@types/node@24.10.13)(@vitest/ui@4.1.2)(jsdom@29.0.1)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)) - '@vitest/utils@4.1.0': + '@vitest/utils@4.1.2': dependencies: - '@vitest/pretty-format': 4.1.0 + '@vitest/pretty-format': 4.1.2 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 @@ -9183,7 +9417,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.2 + picomatch: 4.0.4 argparse@2.0.1: {} @@ -9312,6 +9546,8 @@ snapshots: badwords-list@2.0.1-4: {} + balanced-match@1.0.2: {} + balanced-match@4.0.4: {} base-x@5.0.1: {} @@ -9332,7 +9568,16 @@ snapshots: blurhash@2.0.5: {} - brace-expansion@5.0.4: + brace-expansion@1.1.13: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.3: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.5: dependencies: balanced-match: 4.0.4 @@ -9427,6 +9672,8 @@ snapshots: compute-scroll-into-view@3.1.1: {} + concat-map@0.0.1: {} + confbox@0.1.8: {} confusing-browser-globals@1.0.11: {} @@ -9473,8 +9720,6 @@ snapshots: css.escape@1.5.1: {} - cssesc@3.0.0: {} - csstype@3.2.3: {} damerau-levenshtein@1.0.8: {} @@ -9504,7 +9749,7 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 - dayjs@1.11.19: {} + dayjs@1.11.20: {} debug@3.2.7: dependencies: @@ -9748,6 +9993,35 @@ snapshots: '@esbuild/win32-ia32': 0.27.3 '@esbuild/win32-x64': 0.27.3 + esbuild@0.27.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.4 + '@esbuild/android-arm': 0.27.4 + '@esbuild/android-arm64': 0.27.4 + '@esbuild/android-x64': 0.27.4 + '@esbuild/darwin-arm64': 0.27.4 + '@esbuild/darwin-x64': 0.27.4 + '@esbuild/freebsd-arm64': 0.27.4 + '@esbuild/freebsd-x64': 0.27.4 + '@esbuild/linux-arm': 0.27.4 + '@esbuild/linux-arm64': 0.27.4 + '@esbuild/linux-ia32': 0.27.4 + '@esbuild/linux-loong64': 0.27.4 + '@esbuild/linux-mips64el': 0.27.4 + '@esbuild/linux-ppc64': 0.27.4 + '@esbuild/linux-riscv64': 0.27.4 + '@esbuild/linux-s390x': 0.27.4 + '@esbuild/linux-x64': 0.27.4 + '@esbuild/netbsd-arm64': 0.27.4 + '@esbuild/netbsd-x64': 0.27.4 + '@esbuild/openbsd-arm64': 0.27.4 + '@esbuild/openbsd-x64': 0.27.4 + '@esbuild/openharmony-arm64': 0.27.4 + '@esbuild/sunos-x64': 0.27.4 + '@esbuild/win32-arm64': 0.27.4 + '@esbuild/win32-ia32': 0.27.4 + '@esbuild/win32-x64': 0.27.4 + escalade@3.2.0: {} escape-string-regexp@4.0.0: {} @@ -9873,7 +10147,7 @@ snapshots: hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 - minimatch: 10.2.4 + minimatch: 3.1.5 object.fromentries: 2.0.8 object.groupby: 1.0.3 object.values: 1.2.1 @@ -9901,7 +10175,7 @@ snapshots: hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 - minimatch: 10.2.4 + minimatch: 3.1.5 object.fromentries: 2.0.8 safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 @@ -9953,7 +10227,7 @@ snapshots: estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 - minimatch: 10.2.4 + minimatch: 3.1.5 object.entries: 1.1.9 object.fromentries: 2.0.8 object.values: 1.2.1 @@ -10007,7 +10281,7 @@ snapshots: is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 - minimatch: 10.2.4 + minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -10100,7 +10374,7 @@ snapshots: filelist@1.0.6: dependencies: - minimatch: 10.2.4 + minimatch: 5.1.9 fill-range@7.1.1: dependencies: @@ -10130,10 +10404,10 @@ snapshots: dependencies: tabbable: 6.4.0 - folds@2.6.2(@vanilla-extract/css@1.18.0)(@vanilla-extract/recipes@0.5.7(@vanilla-extract/css@1.18.0))(classnames@2.5.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + folds@2.6.2(@vanilla-extract/css@1.20.1)(@vanilla-extract/recipes@0.5.7(@vanilla-extract/css@1.20.1))(classnames@2.5.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@vanilla-extract/css': 1.18.0 - '@vanilla-extract/recipes': 0.5.7(@vanilla-extract/css@1.18.0) + '@vanilla-extract/css': 1.20.1 + '@vanilla-extract/recipes': 0.5.7(@vanilla-extract/css@1.20.1) classnames: 2.5.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -10357,9 +10631,9 @@ snapshots: transitivePeerDependencies: - encoding - i18next@25.8.17(typescript@5.9.3): + i18next@25.10.10(typescript@5.9.3): dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 optionalDependencies: typescript: 5.9.3 @@ -10571,7 +10845,7 @@ snapshots: jiti@2.6.1: {} - jotai@2.18.1(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@18.3.28)(react@18.3.1): + jotai@2.19.0(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@18.3.28)(react@18.3.1): optionalDependencies: '@babel/core': 7.29.0 '@babel/template': 7.28.6 @@ -10586,7 +10860,7 @@ snapshots: dependencies: argparse: 2.0.1 - jsdom@29.0.0: + jsdom@29.0.1: dependencies: '@asamuzakjp/css-color': 5.0.1 '@asamuzakjp/dom-selector': 7.0.3 @@ -10603,7 +10877,7 @@ snapshots: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.1 - undici: 7.24.3 + undici: 7.24.6 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 whatwg-mimetype: 5.0.0 @@ -10622,8 +10896,6 @@ snapshots: json-schema-traverse@1.0.0: {} - json-schema@0.4.0: {} - json-stable-stringify-without-jsonify@1.0.1: {} json5@1.0.2: @@ -10666,8 +10938,8 @@ snapshots: minimist: 1.2.8 oxc-resolver: 11.19.1 picocolors: 1.1.1 - picomatch: 4.0.3 - smol-toml: 1.6.0 + picomatch: 4.0.4 + smol-toml: 1.6.1 strip-json-comments: 5.0.3 typescript: 5.9.3 zod: 4.3.6 @@ -10825,14 +11097,14 @@ snapshots: media-query-parser@2.0.2: dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 merge2@1.4.1: {} micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 + picomatch: 4.0.4 min-indent@1.0.1: {} @@ -10840,7 +11112,7 @@ snapshots: dependencies: '@cspotcode/source-map-support': 0.8.1 sharp: 0.34.5 - undici: 7.24.3 + undici: 7.24.4 workerd: 1.20260317.1 ws: 8.18.0 youch: 4.1.0-beta.10 @@ -10850,7 +11122,15 @@ snapshots: minimatch@10.2.4: dependencies: - brace-expansion: 5.0.4 + brace-expansion: 5.0.5 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.13 + + minimatch@5.1.9: + dependencies: + brace-expansion: 2.0.3 minimist@1.2.8: {} @@ -11049,12 +11329,6 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} - - picomatch@2.3.2: {} - - picomatch@4.0.3: {} - picomatch@4.0.4: {} pkg-types@1.3.1: @@ -11187,11 +11461,11 @@ snapshots: react: 18.3.1 react-async-script: 1.2.0(react@18.3.1) - react-i18next@16.5.7(i18next@25.8.17(typescript@5.9.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3): + react-i18next@16.6.6(i18next@25.10.10(typescript@5.9.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3): dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 html-parse-stringify: 3.0.1 - i18next: 25.8.17(typescript@5.9.3) + i18next: 25.10.10(typescript@5.9.3) react: 18.3.1 use-sync-external-store: 1.6.0(react@18.3.1) optionalDependencies: @@ -11227,7 +11501,7 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 2.3.2 + picomatch: 4.0.4 redent@3.0.0: dependencies: @@ -11321,35 +11595,39 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 - rollup@4.59.0: + rollup@2.80.0: + optionalDependencies: + fsevents: 2.3.3 + + rollup@4.60.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.59.0 - '@rollup/rollup-android-arm64': 4.59.0 - '@rollup/rollup-darwin-arm64': 4.59.0 - '@rollup/rollup-darwin-x64': 4.59.0 - '@rollup/rollup-freebsd-arm64': 4.59.0 - '@rollup/rollup-freebsd-x64': 4.59.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 - '@rollup/rollup-linux-arm-musleabihf': 4.59.0 - '@rollup/rollup-linux-arm64-gnu': 4.59.0 - '@rollup/rollup-linux-arm64-musl': 4.59.0 - '@rollup/rollup-linux-loong64-gnu': 4.59.0 - '@rollup/rollup-linux-loong64-musl': 4.59.0 - '@rollup/rollup-linux-ppc64-gnu': 4.59.0 - '@rollup/rollup-linux-ppc64-musl': 4.59.0 - '@rollup/rollup-linux-riscv64-gnu': 4.59.0 - '@rollup/rollup-linux-riscv64-musl': 4.59.0 - '@rollup/rollup-linux-s390x-gnu': 4.59.0 - '@rollup/rollup-linux-x64-gnu': 4.59.0 - '@rollup/rollup-linux-x64-musl': 4.59.0 - '@rollup/rollup-openbsd-x64': 4.59.0 - '@rollup/rollup-openharmony-arm64': 4.59.0 - '@rollup/rollup-win32-arm64-msvc': 4.59.0 - '@rollup/rollup-win32-ia32-msvc': 4.59.0 - '@rollup/rollup-win32-x64-gnu': 4.59.0 - '@rollup/rollup-win32-x64-msvc': 4.59.0 + '@rollup/rollup-android-arm-eabi': 4.60.0 + '@rollup/rollup-android-arm64': 4.60.0 + '@rollup/rollup-darwin-arm64': 4.60.0 + '@rollup/rollup-darwin-x64': 4.60.0 + '@rollup/rollup-freebsd-arm64': 4.60.0 + '@rollup/rollup-freebsd-x64': 4.60.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.0 + '@rollup/rollup-linux-arm-musleabihf': 4.60.0 + '@rollup/rollup-linux-arm64-gnu': 4.60.0 + '@rollup/rollup-linux-arm64-musl': 4.60.0 + '@rollup/rollup-linux-loong64-gnu': 4.60.0 + '@rollup/rollup-linux-loong64-musl': 4.60.0 + '@rollup/rollup-linux-ppc64-gnu': 4.60.0 + '@rollup/rollup-linux-ppc64-musl': 4.60.0 + '@rollup/rollup-linux-riscv64-gnu': 4.60.0 + '@rollup/rollup-linux-riscv64-musl': 4.60.0 + '@rollup/rollup-linux-s390x-gnu': 4.60.0 + '@rollup/rollup-linux-x64-gnu': 4.60.0 + '@rollup/rollup-linux-x64-musl': 4.60.0 + '@rollup/rollup-openbsd-x64': 4.60.0 + '@rollup/rollup-openharmony-arm64': 4.60.0 + '@rollup/rollup-win32-arm64-msvc': 4.60.0 + '@rollup/rollup-win32-ia32-msvc': 4.60.0 + '@rollup/rollup-win32-x64-gnu': 4.60.0 + '@rollup/rollup-win32-x64-msvc': 4.60.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -11534,7 +11812,7 @@ snapshots: smob@1.6.1: {} - smol-toml@1.6.0: {} + smol-toml@1.6.1: {} snake-case@3.0.4: dependencies: @@ -11726,7 +12004,7 @@ snapshots: ts-declaration-location@1.0.7(typescript@5.9.3): dependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 typescript: 5.9.3 tsconfig-paths@3.15.0: @@ -11803,7 +12081,9 @@ snapshots: undici-types@7.16.0: {} - undici@7.24.3: {} + undici@7.24.4: {} + + undici@7.24.6: {} unenv@2.0.0-rc.24: dependencies: @@ -11877,13 +12157,13 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - vite-node@3.2.4(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(yaml@2.8.2): + vite-node@3.2.4(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1) transitivePeerDependencies: - '@types/node' - jiti @@ -11898,61 +12178,61 @@ snapshots: - tsx - yaml - vite-plugin-compression2@2.5.3(rollup@4.59.0): + vite-plugin-compression2@2.5.3(rollup@4.60.0): dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.0) tar-mini: 0.2.0 transitivePeerDependencies: - rollup - vite-plugin-pwa@1.2.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0): + vite-plugin-pwa@1.2.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0): dependencies: debug: 4.4.3 pretty-bytes: 6.1.1 tinyglobby: 0.2.15 - vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1) workbox-build: 7.4.0(@types/babel__core@7.20.5) workbox-window: 7.4.0 transitivePeerDependencies: - supports-color - vite-plugin-static-copy@4.0.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)): + vite-plugin-static-copy@4.0.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)): dependencies: chokidar: 3.6.0 p-map: 7.0.4 picocolors: 1.1.1 tinyglobby: 0.2.15 - vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1) - vite-plugin-svgr@4.5.0(rollup@4.59.0)(typescript@5.9.3)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)): + vite-plugin-svgr@4.5.0(rollup@4.60.0)(typescript@5.9.3)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)): dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.0) '@svgr/core': 8.1.0(typescript@5.9.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3)) - vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1) transitivePeerDependencies: - rollup - supports-color - typescript - vite-plugin-top-level-await@1.6.0(@swc/helpers@0.5.19)(rollup@4.59.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)): + vite-plugin-top-level-await@1.6.0(@swc/helpers@0.5.19)(rollup@4.60.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)): dependencies: - '@rollup/plugin-virtual': 3.0.2(rollup@4.59.0) + '@rollup/plugin-virtual': 3.0.2(rollup@4.60.0) '@swc/core': 1.15.18(@swc/helpers@0.5.19) '@swc/wasm': 1.15.18 uuid: 10.0.0 - vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1) transitivePeerDependencies: - '@swc/helpers' - rollup - vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)(yaml@2.8.2): + vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1): dependencies: - esbuild: 0.27.3 + esbuild: 0.27.4 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 postcss: 8.5.8 - rollup: 4.59.0 + rollup: 4.60.0 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.13 @@ -11960,9 +12240,8 @@ snapshots: jiti: 2.6.1 lightningcss: 1.32.0 terser: 5.46.1 - yaml: 2.8.2 - vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2): + vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -11971,38 +12250,37 @@ snapshots: tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.13 - esbuild: 0.27.3 + esbuild: 0.27.4 fsevents: 2.3.3 jiti: 2.6.1 terser: 5.46.1 - yaml: 2.8.2 - vitest@4.1.0(@types/node@24.10.13)(@vitest/ui@4.1.0)(jsdom@29.0.0)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)): + vitest@4.1.2(@types/node@24.10.13)(@vitest/ui@4.1.2)(jsdom@29.0.1)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)): dependencies: - '@vitest/expect': 4.1.0 - '@vitest/mocker': 4.1.0(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2)) - '@vitest/pretty-format': 4.1.0 - '@vitest/runner': 4.1.0 - '@vitest/snapshot': 4.1.0 - '@vitest/spy': 4.1.0 - '@vitest/utils': 4.1.0 + '@vitest/expect': 4.1.2 + '@vitest/mocker': 4.1.2(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)) + '@vitest/pretty-format': 4.1.2 + '@vitest/runner': 4.1.2 + '@vitest/snapshot': 4.1.2 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.1)(yaml@2.8.2) + vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.13 - '@vitest/ui': 4.1.0(vitest@4.1.0) - jsdom: 29.0.0 + '@vitest/ui': 4.1.2(vitest@4.1.2) + jsdom: 29.0.1 transitivePeerDependencies: - msw @@ -12104,14 +12382,14 @@ snapshots: workbox-build@7.4.0(@types/babel__core@7.20.5): dependencies: - '@apideck/better-ajv-errors': 0.3.6(ajv@8.18.0) + '@apideck/better-ajv-errors': 0.3.7(ajv@8.18.0) '@babel/core': 7.29.0 '@babel/preset-env': 7.29.2(@babel/core@7.29.0) '@babel/runtime': 7.29.2 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.59.0) - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.59.0) - '@rollup/plugin-replace': 2.4.2(rollup@4.59.0) - '@rollup/plugin-terser': 0.4.4(rollup@4.59.0) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@2.80.0) + '@rollup/plugin-node-resolve': 15.3.1(rollup@2.80.0) + '@rollup/plugin-replace': 2.4.2(rollup@2.80.0) + '@rollup/plugin-terser': 0.4.4(rollup@2.80.0) '@surma/rollup-plugin-off-main-thread': 2.2.3 ajv: 8.18.0 common-tags: 1.8.2 @@ -12120,7 +12398,7 @@ snapshots: glob: 11.1.0 lodash: 4.17.23 pretty-bytes: 5.6.0 - rollup: 4.59.0 + rollup: 2.80.0 source-map: 0.8.0-beta.0 stringify-object: 3.3.0 strip-comments: 2.0.1 @@ -12238,9 +12516,6 @@ snapshots: yallist@3.1.1: {} - yaml@2.8.2: - optional: true - yocto-queue@0.1.0: {} youch-core@0.3.3: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fbcf9139d..ebb82f27f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -12,19 +12,16 @@ minimumReleaseAgeExclude: - '@sableclient/sable-call-embedded' overrides: - brace-expansion: '>=1.1.12' - esbuild: '>=0.25.0' - flatted: '>=3.4.2' - lodash: '>=4.17.23' - minimatch: '>=10.2.3' - rollup: '>=4.59.0' - serialize-javascript: '>=7.0.3' - undici: '>=7.24.0' + serialize-javascript: '>=7.0.5' + picomatch: '>=4.0.4' + smol-toml: '>=1.6.1' + yaml: '>=2.8.3' peerDependencyRules: allowedVersions: - 'folds>@vanilla-extract/css': '1.18.0' - 'folds>@vanilla-extract/recipes': '0.5.7' - 'folds>classnames': '2.5.1' - 'folds>react': '18.3.1' - 'folds>react-dom': '18.3.1' + 'folds>@vanilla-extract/css': '^1.20.1' + 'folds>@vanilla-extract/recipes': '^0.5.7' + 'folds>classnames': '^2.5.1' + 'folds>react': '^18.3.1' + 'folds>react-dom': '^18.3.1' + 'vite-plugin-pwa>vite': '^8.0.3' From ebc5e118769af71cce201353b442916858b9f974 Mon Sep 17 00:00:00 2001 From: hazre Date: Tue, 31 Mar 2026 00:04:19 +0200 Subject: [PATCH 08/23] refactor: simplify tsconfig layout --- .github/workflows/cloudflare-web-preview.yml | 4 +- .github/workflows/sentry-preview-issues.yml | 2 +- eslint.config.js | 4 +- knip.json | 7 ++- package.json | 2 +- scripts/migrate-matrix-sdk-imports.js | 6 +- scripts/normalize-imports.js | 4 +- tsconfig.build.json | 11 ---- tsconfig.json | 58 ++++---------------- tsconfig.web.json | 51 +++++++++++++++++ vite.config.ts | 2 +- 11 files changed, 79 insertions(+), 72 deletions(-) delete mode 100644 tsconfig.build.json create mode 100644 tsconfig.web.json diff --git a/.github/workflows/cloudflare-web-preview.yml b/.github/workflows/cloudflare-web-preview.yml index db6611ff2..1c768a453 100644 --- a/.github/workflows/cloudflare-web-preview.yml +++ b/.github/workflows/cloudflare-web-preview.yml @@ -8,8 +8,8 @@ on: - 'package.json' - 'package-lock.json' - 'vite.config.ts' + - 'tsconfig.web.json' - 'tsconfig.json' - - 'tsconfig.build.json' - 'tsconfig.node.json' - '.github/workflows/cloudflare-web-preview.yml' - '.github/actions/setup/**' @@ -22,8 +22,8 @@ on: - 'package.json' - 'package-lock.json' - 'vite.config.ts' + - 'tsconfig.web.json' - 'tsconfig.json' - - 'tsconfig.build.json' - 'tsconfig.node.json' - '.github/workflows/cloudflare-web-preview.yml' - '.github/actions/setup/**' diff --git a/.github/workflows/sentry-preview-issues.yml b/.github/workflows/sentry-preview-issues.yml index 31d748925..eb5077992 100644 --- a/.github/workflows/sentry-preview-issues.yml +++ b/.github/workflows/sentry-preview-issues.yml @@ -8,8 +8,8 @@ on: - 'index.html' - 'package.json' - 'vite.config.ts' + - 'tsconfig.web.json' - 'tsconfig.json' - - 'tsconfig.build.json' - 'tsconfig.node.json' workflow_dispatch: inputs: diff --git a/eslint.config.js b/eslint.config.js index 07303ad44..f7cf561c8 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -118,7 +118,7 @@ const projectOverrides = defineConfig([ 'import-x/resolver-next': [ createTypeScriptImportResolver({ alwaysTryTypes: true, - project: ['tsconfig.json', 'tsconfig.node.json'], + project: ['tsconfig.web.json', 'tsconfig.node.json'], }), ], }, @@ -165,7 +165,7 @@ const projectOverrides = defineConfig([ languageOptions: { parserOptions: { projectService: false, - project: ['tsconfig.json', 'tsconfig.node.json'], + project: ['tsconfig.web.json', 'tsconfig.node.json'], tsconfigRootDir: import.meta.dirname, }, }, diff --git a/knip.json b/knip.json index e011aaea4..f3b110164 100644 --- a/knip.json +++ b/knip.json @@ -1,7 +1,12 @@ { "$schema": "https://unpkg.com/knip@5/schema.json", "entry": ["src/sw.ts"], - "ignore": ["src/ext.d.ts", "src/types/matrix-sdk-events.d.ts"], + "ignore": [ + "src/ext.d.ts", + "src/types/matrix-sdk-events.d.ts", + "src/client/secretStorageKeys.d.ts", + "src/app/utils/bgColorImg.d.ts" + ], "ignoreExportsUsedInFile": { "interface": true, "type": true diff --git a/package.json b/package.json index 20fb1e7d7..970ad116d 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "lint:fix": "eslint . --fix", "fmt": "prettier --write .", "fmt:check": "prettier --check .", - "typecheck": "tsc -b tsconfig.build.json", + "typecheck": "tsc -b", "test": "vitest", "test:ui": "vitest --ui", "test:run": "vitest run", diff --git a/scripts/migrate-matrix-sdk-imports.js b/scripts/migrate-matrix-sdk-imports.js index ab0934874..af862aeeb 100644 --- a/scripts/migrate-matrix-sdk-imports.js +++ b/scripts/migrate-matrix-sdk-imports.js @@ -94,12 +94,12 @@ function parseArgs(argv) { * @returns {import('typescript').Program} */ function loadProgram(projectRoot) { - const tsconfigPath = path.join(projectRoot, 'tsconfig.json'); + const tsconfigPath = path.join(projectRoot, 'tsconfig.web.json'); const configResult = ts.readConfigFile(tsconfigPath, ts.sys.readFile); if (configResult.error) { const message = ts.flattenDiagnosticMessageText(configResult.error.messageText, '\n'); - throw new Error(`Failed to read tsconfig.json: ${message}`); + throw new Error(`Failed to read tsconfig.web.json: ${message}`); } const parsedConfig = ts.parseJsonConfigFileContent( @@ -114,7 +114,7 @@ function loadProgram(projectRoot) { const message = parsedConfig.errors .map((error) => ts.flattenDiagnosticMessageText(error.messageText, '\n')) .join('\n'); - throw new Error(`Failed to parse tsconfig.json:\n${message}`); + throw new Error(`Failed to parse tsconfig.web.json:\n${message}`); } return ts.createProgram({ diff --git a/scripts/normalize-imports.js b/scripts/normalize-imports.js index a8dc36b1c..2fb08797b 100644 --- a/scripts/normalize-imports.js +++ b/scripts/normalize-imports.js @@ -72,13 +72,13 @@ async function main() { const projectRoot = process.cwd(); const { write, roots } = parseArgs(process.argv.slice(2)); const aliases = await loadAliasMapFromTsconfig( - path.join(projectRoot, 'tsconfig.json'), + path.join(projectRoot, 'tsconfig.web.json'), projectRoot ); const { dim, red, green } = createTextHelpers(); if (aliases.length === 0) { - throw new Error('No aliases found in tsconfig.json'); + throw new Error('No aliases found in tsconfig.web.json'); } const targetRoots = roots.map((root) => path.resolve(projectRoot, root)); diff --git a/tsconfig.build.json b/tsconfig.build.json deleted file mode 100644 index 1195be209..000000000 --- a/tsconfig.build.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "files": [], - "references": [ - { - "path": "./tsconfig.node.json" - }, - { - "path": "./tsconfig.json" - } - ] -} diff --git a/tsconfig.json b/tsconfig.json index 80d6c8ece..a41f5c356 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,51 +1,13 @@ { - "compilerOptions": { - "jsx": "react-jsx", - "target": "ESNext", - "module": "ESNext", - "lib": ["ESNext", "DOM", "DOM.Iterable"], - "allowJs": false, - "checkJs": false, - "strict": true, - "esModuleInterop": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "composite": true, - "forceConsistentCasingInFileNames": true, - "isolatedModules": true, - "verbatimModuleSyntax": true, - "noEmit": true, - "tsBuildInfoFile": "./.tsbuildinfo/tsconfig.tsbuildinfo", - "baseUrl": ".", - "paths": { - "$hooks": ["src/app/hooks"], - "$hooks/*": ["src/app/hooks/*"], - "$plugins": ["src/app/plugins"], - "$plugins/*": ["src/app/plugins/*"], - "$components": ["src/app/components"], - "$components/*": ["src/app/components/*"], - "$features": ["src/app/features"], - "$features/*": ["src/app/features/*"], - "$state": ["src/app/state"], - "$state/*": ["src/app/state/*"], - "$styles": ["src/app/styles"], - "$styles/*": ["src/app/styles/*"], - "$utils": ["src/app/utils"], - "$utils/*": ["src/app/utils/*"], - "$pages": ["src/app/pages"], - "$pages/*": ["src/app/pages/*"], - "$generated": ["src/app/generated"], - "$generated/*": ["src/app/generated/*"], - "$types": ["src/types"], - "$types/*": ["src/types/*"], - "$public": ["public"], - "$public/*": ["public/*"], - "$client": ["src/client"], - "$client/*": ["src/client/*"] + "extends": "./tsconfig.web.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.web.json" + }, + { + "path": "./tsconfig.node.json" } - }, - "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts", "src/**/*.js", "src/**/*.jsx"], - "exclude": ["node_modules", "dist", "coverage"] + ] } diff --git a/tsconfig.web.json b/tsconfig.web.json new file mode 100644 index 000000000..80d6c8ece --- /dev/null +++ b/tsconfig.web.json @@ -0,0 +1,51 @@ +{ + "compilerOptions": { + "jsx": "react-jsx", + "target": "ESNext", + "module": "ESNext", + "lib": ["ESNext", "DOM", "DOM.Iterable"], + "allowJs": false, + "checkJs": false, + "strict": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "composite": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "verbatimModuleSyntax": true, + "noEmit": true, + "tsBuildInfoFile": "./.tsbuildinfo/tsconfig.tsbuildinfo", + "baseUrl": ".", + "paths": { + "$hooks": ["src/app/hooks"], + "$hooks/*": ["src/app/hooks/*"], + "$plugins": ["src/app/plugins"], + "$plugins/*": ["src/app/plugins/*"], + "$components": ["src/app/components"], + "$components/*": ["src/app/components/*"], + "$features": ["src/app/features"], + "$features/*": ["src/app/features/*"], + "$state": ["src/app/state"], + "$state/*": ["src/app/state/*"], + "$styles": ["src/app/styles"], + "$styles/*": ["src/app/styles/*"], + "$utils": ["src/app/utils"], + "$utils/*": ["src/app/utils/*"], + "$pages": ["src/app/pages"], + "$pages/*": ["src/app/pages/*"], + "$generated": ["src/app/generated"], + "$generated/*": ["src/app/generated/*"], + "$types": ["src/types"], + "$types/*": ["src/types/*"], + "$public": ["public"], + "$public/*": ["public/*"], + "$client": ["src/client"], + "$client/*": ["src/client/*"] + } + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts", "src/**/*.js", "src/**/*.jsx"], + "exclude": ["node_modules", "dist", "coverage"] +} diff --git a/vite.config.ts b/vite.config.ts index c59789218..88815ee98 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -226,7 +226,7 @@ export default defineConfig(({ command }) => ({ '@vanilla-extract/recipes/createRuntimeFn', ], needsInterop: ['matrix-widget-api'], - esbuildOptions: { + rolldownOptions: { define: { global: 'globalThis', }, From 94ba091ecf9f08c420136957289d80ba7e35253f Mon Sep 17 00:00:00 2001 From: hazre Date: Thu, 2 Apr 2026 12:47:08 +0200 Subject: [PATCH 09/23] chore: update knope installer --- .github/workflows/release.yml | 2 +- scripts/install-knope.js | 56 ++++++++++++++++++++++++++++------- 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d3314e27b..6037b7363 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,7 +29,7 @@ jobs: - uses: knope-dev/action@19617851f9f13ab2f27a05989c55efb18aca3675 # v2.1.2 with: - version: 0.22.3 + version: 0.22.4 - name: Create Release run: knope release --verbose diff --git a/scripts/install-knope.js b/scripts/install-knope.js index 4b8d0118a..27e7bb609 100644 --- a/scripts/install-knope.js +++ b/scripts/install-knope.js @@ -1,5 +1,6 @@ #!/usr/bin/env node import { spawnSync } from 'node:child_process'; +import { createHash } from 'node:crypto'; import process from 'node:process'; import { chmodSync, existsSync, mkdirSync, realpathSync, writeFileSync } from 'node:fs'; import { join, dirname, resolve, sep } from 'node:path'; @@ -10,18 +11,37 @@ import { PrefixedLogger, createTextHelpers } from './utils/console-style.js'; const __dirname = dirname(fileURLToPath(import.meta.url)); -const VERSION = '0.22.3'; +const VERSION = '0.22.4'; /** * @typedef {'linux-x64' | 'linux-arm64' | 'darwin-x64' | 'darwin-arm64' | 'win32-x64'} SupportedTargetKey */ -/** @type {Record} */ +/** + * Pinned to the published release asset digests for knope. + * Source: GitHub release asset metadata at publish time. + * @type {Record} + */ const TARGETS = { - 'linux-x64': 'x86_64-unknown-linux-musl', - 'linux-arm64': 'aarch64-unknown-linux-musl', - 'darwin-x64': 'x86_64-apple-darwin', - 'darwin-arm64': 'aarch64-apple-darwin', - 'win32-x64': 'x86_64-pc-windows-msvc', + 'linux-x64': { + target: 'x86_64-unknown-linux-musl', + digest: 'sha256:45a74925ae9f4c9c2c33b51992ae50241ec4fa836bf8d2977c0b8e8172dd69cf', + }, + 'linux-arm64': { + target: 'aarch64-unknown-linux-musl', + digest: 'sha256:95e882afdb4154c5baaba91f7bbd1fb1d41cec6898363a2b30e7abad4057b83b', + }, + 'darwin-x64': { + target: 'x86_64-apple-darwin', + digest: 'sha256:010dc197bf159bbd9d60e897252248ba2b0e204beae7250ce54a9deae1ec4876', + }, + 'darwin-arm64': { + target: 'aarch64-apple-darwin', + digest: 'sha256:02131f284315c8ece8a4ef69a0aff5f658309d4df73b95cfdfbe0fbd9e9ce259', + }, + 'win32-x64': { + target: 'x86_64-pc-windows-msvc', + digest: 'sha256:09f735b2da42cd594189042d1379c0a3a350a8c0ccb741015a84c6ff334543b1', + }, }; /** @@ -150,6 +170,14 @@ function isPathWithin(candidatePath, rootPath) { return candidate === root || candidate.startsWith(`${root}${sep}`); } +/** + * @param {Buffer} buffer + * @returns {string} + */ +function getSha256Digest(buffer) { + return `sha256:${createHash('sha256').update(buffer).digest('hex')}`; +} + const logger = new PrefixedLogger('[postinstall:knope]'); const { dim, red, green } = createTextHelpers({ useColor: logger.useColor }); @@ -159,16 +187,17 @@ if (process.env.GITHUB_ACTIONS && process.env.CI) { } const targetKey = `${process.platform}-${process.arch}`; -const target = Object.hasOwn(TARGETS, targetKey) +const targetConfig = Object.hasOwn(TARGETS, targetKey) ? TARGETS[/** @type {SupportedTargetKey} */ (targetKey)] : undefined; -if (!target) { +if (!targetConfig) { const supported = Object.keys(TARGETS).join(', '); logger.error( `${dim('Unsupported platform: ')}${red(`${process.platform}-${process.arch}`)}${dim('. Supported targets: ')}${supported}` ); process.exit(1); } +const { target, digest: expectedDigest } = targetConfig; const bin = join( __dirname, @@ -214,7 +243,8 @@ if (systemKnopePath) { } } -const url = `https://github.com/knope-dev/knope/releases/download/knope%2Fv${VERSION}/knope-${target}.tgz`; +const assetName = `knope-${target}.tgz`; +const url = `https://github.com/knope-dev/knope/releases/download/knope%2Fv${VERSION}/${assetName}`; logger.info( `${dim('Downloading knope ')}${green(`v${VERSION}`)}${dim(' for ')}${target}${dim('...')}` ); @@ -223,6 +253,12 @@ if (!response.ok) { throw new Error(`Failed to download knope: ${response.status} ${response.statusText}`); } const gzipBytes = Buffer.from(await response.arrayBuffer()); +const actualDigest = getSha256Digest(gzipBytes); +if (actualDigest !== expectedDigest) { + throw new Error( + `Downloaded ${assetName} digest mismatch: expected ${expectedDigest}, got ${actualDigest}` + ); +} const tarBytes = gunzipSync(gzipBytes); const expectedBinaryName = process.platform === 'win32' ? 'knope.exe' : 'knope'; const knopeBinary = extractRegularFileFromTar(tarBytes, expectedBinaryName); From cfa52ddc243ce941b528348717ec2e68233619ab Mon Sep 17 00:00:00 2001 From: hazre Date: Thu, 2 Apr 2026 12:48:53 +0200 Subject: [PATCH 10/23] chore: update github actions --- .github/actions/prepare-tofu/action.yml | 2 +- .github/actions/setup/action.yml | 2 +- .github/workflows/docker-publish.yml | 10 +++++----- .github/workflows/quality-checks.yml | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/actions/prepare-tofu/action.yml b/.github/actions/prepare-tofu/action.yml index c64332e3c..dcb95842c 100644 --- a/.github/actions/prepare-tofu/action.yml +++ b/.github/actions/prepare-tofu/action.yml @@ -28,7 +28,7 @@ runs: SENTRY_PROJECT: ${{ env.SENTRY_PROJECT }} - name: Setup OpenTofu - uses: opentofu/setup-opentofu@9d84900f3238fab8cd84ce47d658d25dd008be2f # v1.0.8 + uses: opentofu/setup-opentofu@fc711fa910b93cba0f3fbecaafc9f42fd0c411cb # v2.0.0 with: tofu_version: ${{ inputs.opentofu-version }} diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 9b4c9acbb..f7d1e4180 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -19,7 +19,7 @@ runs: using: composite steps: - name: Setup pnpm - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 + uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0 - name: Setup node uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 03a63ef99..540ded829 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -39,7 +39,7 @@ jobs: - name: Log in to GitHub Container Registry if: github.event_name != 'pull_request' - uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 + uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -64,7 +64,7 @@ jobs: - name: Extract metadata id: meta - uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0 + uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} flavor: | @@ -94,14 +94,14 @@ jobs: NODE_OPTIONS=--max_old_space_size=4096 pnpm run build - name: Set up QEMU - uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0 + uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0 + uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 - name: Build and push Docker image id: push - uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 + uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 with: context: . push: ${{ github.event_name != 'pull_request' }} diff --git a/.github/workflows/quality-checks.yml b/.github/workflows/quality-checks.yml index 5d56101fd..b1d8f99e1 100644 --- a/.github/workflows/quality-checks.yml +++ b/.github/workflows/quality-checks.yml @@ -151,7 +151,7 @@ jobs: fi - name: Update PR comment - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 continue-on-error: true with: script: | From 800044a109c9a9776791134d6a45b81faab1b572 Mon Sep 17 00:00:00 2001 From: hazre Date: Thu, 2 Apr 2026 14:06:11 +0200 Subject: [PATCH 11/23] fix: resolve PR check failures --- scripts/utils/import-rewrites.js | 2 +- src/app/components/power/PowerIcon.tsx | 25 ++++-- .../components/url-preview/ClientPreview.tsx | 4 +- .../user-profile/UserRoomProfile.tsx | 3 +- src/app/hooks/useCommands.ts | 10 +-- src/app/utils/sanitize.test.ts | 12 ++- src/app/utils/sanitize.ts | 82 ++++++++++++++++++- src/sw.ts | 4 +- 8 files changed, 120 insertions(+), 22 deletions(-) diff --git a/scripts/utils/import-rewrites.js b/scripts/utils/import-rewrites.js index 5f4be69b0..376a3cfb0 100644 --- a/scripts/utils/import-rewrites.js +++ b/scripts/utils/import-rewrites.js @@ -55,7 +55,7 @@ export const MATRIX_IMPORT_BOUNDARY_FILES = new Set([ * @returns {string} */ export function toPosix(inputPath) { - return inputPath.split(path.sep).join('/'); + return inputPath.replace(/\\/g, '/'); } /** diff --git a/src/app/components/power/PowerIcon.tsx b/src/app/components/power/PowerIcon.tsx index f86331035..69bb3e90c 100644 --- a/src/app/components/power/PowerIcon.tsx +++ b/src/app/components/power/PowerIcon.tsx @@ -5,10 +5,25 @@ type PowerIconProps = css.PowerIconVariants & { iconSrc: string; name?: string; }; + +const ALLOWED_ICON_PROTOCOLS = new Set(['http:', 'https:']); + +function getSafeIconUrl(iconSrc: string): string | undefined { + try { + const parsed = new URL(iconSrc); + return ALLOWED_ICON_PROTOCOLS.has(parsed.protocol) ? parsed.href : undefined; + } catch { + return undefined; + } +} + export function PowerIcon({ size, iconSrc, name }: PowerIconProps) { - return JUMBO_EMOJI_REG.test(iconSrc) ? ( - {iconSrc} - ) : ( - {name} - ); + if (JUMBO_EMOJI_REG.test(iconSrc)) { + return {iconSrc}; + } + + const safeIconUrl = getSafeIconUrl(iconSrc); + if (!safeIconUrl) return null; + + return {name}; } diff --git a/src/app/components/url-preview/ClientPreview.tsx b/src/app/components/url-preview/ClientPreview.tsx index 9921fd3f8..8dbcb0bdb 100644 --- a/src/app/components/url-preview/ClientPreview.tsx +++ b/src/app/components/url-preview/ClientPreview.tsx @@ -167,7 +167,7 @@ function parseYoutubeLink(url: Readonly): YoutubeLink | null { // new URL can throw return null; } - const urlHost = parsedURL.host; + const urlHost = parsedURL.hostname.toLowerCase(); const urlSearchParams = parsedURL.searchParams; /** @@ -203,7 +203,7 @@ function parseYoutubeLink(url: Readonly): YoutubeLink | null { videoId, timestamp, playlist, - isMusic: url.includes('music.youtube.com'), + isMusic: urlHost === 'music.youtube.com' || urlHost.endsWith('.music.youtube.com'), }; } diff --git a/src/app/components/user-profile/UserRoomProfile.tsx b/src/app/components/user-profile/UserRoomProfile.tsx index 20cec6b51..b756810f9 100644 --- a/src/app/components/user-profile/UserRoomProfile.tsx +++ b/src/app/components/user-profile/UserRoomProfile.tsx @@ -33,6 +33,7 @@ import { useSpoilerClickHandler } from '$hooks/useSpoilerClickHandler'; import { RenderBody } from '$components/message'; import { getSettings, settingsAtom } from '$state/settings'; import { filterPronounsByLanguage } from '$utils/pronouns'; +import { extractPlainTextFromCustomHtml } from '$utils/sanitize'; import { useSetting } from '$state/hooks/settings'; import { useSettingsLinkBaseUrl } from '$features/settings/useSettingsLinkBaseUrl'; import { CreatorChip } from './CreatorChip'; @@ -134,7 +135,7 @@ function UserExtendedSection({ const safetyTrim = rawBio.length > 2048 ? rawBio.slice(0, 2048) : rawBio; - const visibleText = safetyTrim.replaceAll(/<[^>]*>?/gm, ''); + const visibleText = extractPlainTextFromCustomHtml(safetyTrim); const VISIBLE_LIMIT = 1024; if (visibleText.length <= VISIBLE_LIMIT) { diff --git a/src/app/hooks/useCommands.ts b/src/app/hooks/useCommands.ts index cba409952..b402164df 100644 --- a/src/app/hooks/useCommands.ts +++ b/src/app/hooks/useCommands.ts @@ -31,6 +31,7 @@ import { settingsAtom } from '$state/settings'; import { useOpenBugReportModal } from '$state/hooks/bugReportModal'; import { createRoomEncryptionState } from '$components/create-room'; import { parsePronounsInput } from '$utils/pronouns'; +import { extractPlainTextFromCustomHtml } from '$utils/sanitize'; import { sendFeedback } from '$utils/sendFeedbackToUser'; import { PKitCommandMessageHandler } from '$plugins/pluralkit-handler/PKitCommandMessageHandler'; import { useRoomNavigate } from './useRoomNavigate'; @@ -1352,14 +1353,7 @@ export const useCommands = (mx: MatrixClient, room: Room): CommandRecord => { exe: async (payload) => { await mx.sendMessage(room.roomId, { msgtype: MsgType.Text, - body: payload - .replaceAll('
', '\n') - .replaceAll('
  • ', '\n- ') - .replaceAll( - /(.*?))"(.*?)>(?(.*?))<\/a>/g, - '[$]($)' - ) - .replaceAll(/<[^>]*>/g, ''), + body: extractPlainTextFromCustomHtml(payload), format: 'org.matrix.custom.html', formatted_body: payload, }); diff --git a/src/app/utils/sanitize.test.ts b/src/app/utils/sanitize.test.ts index c1332cfc7..fce7c1f4e 100644 --- a/src/app/utils/sanitize.test.ts +++ b/src/app/utils/sanitize.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest'; -import { sanitizeCustomHtml } from './sanitize'; +import { extractPlainTextFromCustomHtml, sanitizeCustomHtml } from './sanitize'; describe('sanitizeCustomHtml', () => { it('keeps permitted Matrix v1.18 tags', () => { @@ -138,3 +138,13 @@ describe('sanitizeCustomHtml', () => { expect((result.match(/
    /g) ?? []).length).toBeLessThanOrEqual(100); }); }); + +describe('extractPlainTextFromCustomHtml', () => { + it('converts sanitized html into readable plain text', () => { + const result = extractPlainTextFromCustomHtml( + '

    Hello
    world

    • One
    • Two
    ' + ); + + expect(result).toBe('Hello\nworld\n- One\n- Two'); + }); +}); diff --git a/src/app/utils/sanitize.ts b/src/app/utils/sanitize.ts index f7106fdc4..1111e3dce 100644 --- a/src/app/utils/sanitize.ts +++ b/src/app/utils/sanitize.ts @@ -78,6 +78,31 @@ const forbiddenContentTags = ['mx-reply', 'script', 'style', 'textarea', 'option const codeLanguageClassRegex = /^language-[A-Za-z0-9_-]+$/; const orderedListStartRegex = /^-?\d+$/; const allowedUriRegex = /^(?:https?|ftp|mailto|magnet|mxc):/i; +const textBlockTags = new Set([ + 'blockquote', + 'caption', + 'details', + 'div', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'li', + 'ol', + 'p', + 'pre', + 'summary', + 'table', + 'tbody', + 'td', + 'tfoot', + 'th', + 'thead', + 'tr', + 'ul', +]); export function sanitizeText(body: string): string { const tagsToReplace: Record = { @@ -273,7 +298,7 @@ const pruneInvalidEmptyElements = ( }); }; -export const sanitizeCustomHtml = (customHtml: string): string => { +export function sanitizeCustomHtml(customHtml: string): string { if (typeof window === 'undefined') { return sanitizeText(customHtml); } @@ -345,4 +370,57 @@ export const sanitizeCustomHtml = (customHtml: string): string => { const container = document.createElement('div'); container.append(fragment); return restoreProtectedImageSources(container.innerHTML, protectedSources); -}; +} + +function appendPlainTextLineBreak(parts: string[]) { + const previous = parts.at(-1); + if (previous?.endsWith('\n')) return; + parts.push('\n'); +} + +function collectPlainTextFromNode(node: Node, parts: string[]): void { + if (node.nodeType === Node.TEXT_NODE) { + const text = node.textContent; + if (text) parts.push(text); + return; + } + + if (!(node instanceof Element)) return; + + const tagName = node.tagName.toLowerCase(); + + if (tagName === 'br') { + appendPlainTextLineBreak(parts); + return; + } + + if (tagName === 'li') { + parts.push('- '); + } + + [...node.childNodes].forEach((child) => collectPlainTextFromNode(child, parts)); + + if (textBlockTags.has(tagName)) { + appendPlainTextLineBreak(parts); + } +} + +export function extractPlainTextFromCustomHtml(customHtml: string): string { + if (typeof DOMParser === 'undefined') { + return customHtml; + } + + const parser = new DOMParser(); + const doc = parser.parseFromString(sanitizeCustomHtml(customHtml), 'text/html'); + const parts: string[] = []; + + [...doc.body.childNodes].forEach((child) => collectPlainTextFromNode(child, parts)); + + return parts + .join('') + .replace(/\r\n?/g, '\n') + .replace(/\u00a0/g, ' ') + .replace(/[ \t]+\n/g, '\n') + .replace(/\n{3,}/g, '\n\n') + .trim(); +} diff --git a/src/sw.ts b/src/sw.ts index 682491c19..f3266b7a5 100644 --- a/src/sw.ts +++ b/src/sw.ts @@ -164,7 +164,7 @@ function setSession(clientId: string, accessToken: unknown, baseUrl: unknown, us } const resolveSession = clientToResolve.get(clientId); - if (resolveSession) { + if (typeof resolveSession === 'function') { resolveSession(sessions.get(clientId)); clientToResolve.delete(clientId); clientToSessionPromise.delete(clientId); @@ -562,7 +562,7 @@ self.addEventListener('message', (event: ExtendableMessageEvent) => { const { eventId } = data as { eventId?: string }; if (typeof eventId === 'string') { const resolve = decryptionPendingMap.get(eventId); - if (resolve) { + if (typeof resolve === 'function') { decryptionPendingMap.delete(eventId); resolve(data as DecryptionResult); } From 33d627c55989686314b71de20c3a08bfbc6e6e98 Mon Sep 17 00:00:00 2001 From: hazre Date: Mon, 13 Apr 2026 09:30:56 +0200 Subject: [PATCH 12/23] ci: add dependency diff workflows --- .github/workflows/dependency-diff-analyze.yml | 31 +++++++++++++++++++ .github/workflows/dependency-diff-comment.yml | 29 +++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 .github/workflows/dependency-diff-analyze.yml create mode 100644 .github/workflows/dependency-diff-comment.yml diff --git a/.github/workflows/dependency-diff-analyze.yml b/.github/workflows/dependency-diff-analyze.yml new file mode 100644 index 000000000..d528259ad --- /dev/null +++ b/.github/workflows/dependency-diff-analyze.yml @@ -0,0 +1,31 @@ +name: Dependency diff (analyze) + +on: + pull_request: + +jobs: + dependency-diff: + name: Dependency diff + runs-on: ubuntu-latest + if: github.head_ref != 'release' + permissions: + contents: read + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + fetch-depth: 0 + persist-credentials: false + + - name: Analyze dependencies + id: analyze + uses: e18e/action-dependency-diff@5d3c6ac2ad2de2eaca1dc120c5accfd9590764b6 # v1.5.1 + with: + mode: artifact + + - name: Upload comment artifact + if: steps.analyze.outputs.artifact-path + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: e18e-diff-result + path: ${{ steps.analyze.outputs.artifact-path }} diff --git a/.github/workflows/dependency-diff-comment.yml b/.github/workflows/dependency-diff-comment.yml new file mode 100644 index 000000000..518ffad06 --- /dev/null +++ b/.github/workflows/dependency-diff-comment.yml @@ -0,0 +1,29 @@ +name: Dependency diff (comment) + +on: + workflow_run: + workflows: ['Dependency diff (analyze)'] + types: + - completed + +jobs: + dependency-diff-comment: + name: Dependency diff comment + runs-on: ubuntu-latest + if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request' + permissions: + actions: read + pull-requests: write + steps: + - name: Download comment artifact + uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + name: e18e-diff-result + run-id: ${{ github.event.workflow_run.id }} + + - name: Post dependency diff comment + uses: e18e/action-dependency-diff@5d3c6ac2ad2de2eaca1dc120c5accfd9590764b6 # v1.5.1 + with: + artifact-path: e18e-diff-result.json + mode: comment-from-artifact From cf6da2402cf6f423b0022962821c603529cbf039 Mon Sep 17 00:00:00 2001 From: hazre Date: Mon, 13 Apr 2026 19:42:59 +0200 Subject: [PATCH 13/23] chore: simplify package scripts --- package.json | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/package.json b/package.json index dc40208bb..35374dd0d 100644 --- a/package.json +++ b/package.json @@ -17,15 +17,11 @@ "fmt": "prettier --write .", "fmt:check": "prettier --check .", "typecheck": "tsc -b", + "check": "pnpm run \"/^(typecheck|lint|fmt:check|knip|test:run)$/\"", "test": "vitest", "test:ui": "vitest --ui", "test:run": "vitest run", "test:coverage": "vitest run --coverage", - "imports:normalize": "node scripts/normalize-imports.js", - "imports:normalize:write": "node scripts/normalize-imports.js --write", - "imports:repair": "pnpm run imports:normalize:write", - "imports:migrate:matrix-sdk": "node scripts/migrate-matrix-sdk-imports.js", - "imports:migrate:matrix-sdk:write": "node scripts/migrate-matrix-sdk-imports.js --write", "knip": "knip", "tunnel": "cloudflared tunnel --url http://localhost:8080", "knope": "knope", From 9998034c5cf9d4c521facd08f9bea43e71047b2d Mon Sep 17 00:00:00 2001 From: hazre Date: Tue, 14 Apr 2026 17:06:17 +0200 Subject: [PATCH 14/23] refactor: remove cloudflare vite plugin --- .github/workflows/cloudflare-web-preview.yml | 8 +- infra/README.md | 4 +- knip.json | 6 +- package.json | 8 +- pnpm-lock.yaml | 835 ------------------- pnpm-workspace.yaml | 2 - vite.config.ts | 16 +- wrangler.jsonc | 9 + 8 files changed, 27 insertions(+), 861 deletions(-) create mode 100644 wrangler.jsonc diff --git a/.github/workflows/cloudflare-web-preview.yml b/.github/workflows/cloudflare-web-preview.yml index 1c768a453..5b9b943b4 100644 --- a/.github/workflows/cloudflare-web-preview.yml +++ b/.github/workflows/cloudflare-web-preview.yml @@ -6,7 +6,8 @@ on: - 'src/**' - 'index.html' - 'package.json' - - 'package-lock.json' + - 'pnpm-lock.yaml' + - 'wrangler.jsonc' - 'vite.config.ts' - 'tsconfig.web.json' - 'tsconfig.json' @@ -20,7 +21,8 @@ on: - 'src/**' - 'index.html' - 'package.json' - - 'package-lock.json' + - 'pnpm-lock.yaml' + - 'wrangler.jsonc' - 'vite.config.ts' - 'tsconfig.web.json' - 'tsconfig.json' @@ -101,7 +103,7 @@ jobs: accountId: ${{ secrets.TF_VAR_ACCOUNT_ID }} command: > versions upload - -c dist/wrangler.json + -c wrangler.jsonc --preview-alias ${{ steps.alias.outputs.alias }} --message "$PREVIEW_MESSAGE" diff --git a/infra/README.md b/infra/README.md index 3e01697cf..ab9ea42c9 100644 --- a/infra/README.md +++ b/infra/README.md @@ -87,12 +87,12 @@ Preview builds: - `infra/web/main.tf` enables preview URL capability with `subdomain.previews_enabled = true`. - Previews are handled by Cloudflare Workers Builds, not GitHub Actions. - Connect the repo once in Cloudflare Workers Builds. -- Set the Cloudflare Builds deploy command to `npx wrangler versions upload`. +- Set the Cloudflare Builds deploy command to `pnpm run wrangler versions upload`. - This disables automatic deployments while still allowing Cloudflare to build PRs/branches and save them as preview versions. - That keeps Cloudflare from promoting `dev` commits to production. Production stays on the OpenTofu/GitHub Actions path in this repo. ```bash -npx wrangler versions upload +pnpm run wrangler versions upload ``` Production deploys: diff --git a/knip.json b/knip.json index f3b110164..6cff9d53b 100644 --- a/knip.json +++ b/knip.json @@ -5,7 +5,8 @@ "src/ext.d.ts", "src/types/matrix-sdk-events.d.ts", "src/client/secretStorageKeys.d.ts", - "src/app/utils/bgColorImg.d.ts" + "src/app/utils/bgColorImg.d.ts", + "scripts/*" ], "ignoreExportsUsedInFile": { "interface": true, @@ -14,8 +15,7 @@ "ignoreDependencies": [ "buffer", "@sableclient/sable-call-embedded", - "@matrix-org/matrix-sdk-crypto-wasm", - "@testing-library/user-event" + "@matrix-org/matrix-sdk-crypto-wasm" ], "ignoreBinaries": ["knope"], "rules": { diff --git a/package.json b/package.json index 35374dd0d..e4cd0b39f 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "test:run": "vitest run", "test:coverage": "vitest run --coverage", "knip": "knip", - "tunnel": "cloudflared tunnel --url http://localhost:8080", + "tunnel": "pnpm dlx cloudflared tunnel --url http://localhost:8080", + "wrangler": "pnpm dlx --allow-build=esbuild --allow-build=sharp --allow-build=workerd wrangler", "knope": "knope", "document-change": "knope document-change", "postinstall": "node scripts/install-knope.js" @@ -95,7 +96,6 @@ "workbox-precaching": "^7.4.0" }, "devDependencies": { - "@cloudflare/vite-plugin": "^1.30.2", "@e18e/eslint-plugin": "^0.3.0", "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@eslint/compat": "2.0.2", @@ -119,7 +119,6 @@ "@vitest/coverage-v8": "^4.1.2", "@vitest/ui": "^4.1.2", "buffer": "^6.0.3", - "cloudflared": "^0.7.1", "eslint": "9.39.3", "eslint-config-airbnb-extended": "3.0.1", "eslint-config-prettier": "10.1.8", @@ -136,7 +135,6 @@ "vite-plugin-static-copy": "^4.0.0", "vite-plugin-svgr": "4.5.0", "vite-plugin-top-level-await": "^1.6.0", - "vitest": "^4.1.2", - "wrangler": "^4.78.0" + "vitest": "^4.1.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9381d9149..b70c88fc2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -198,9 +198,6 @@ importers: specifier: ^7.4.0 version: 7.4.0 devDependencies: - '@cloudflare/vite-plugin': - specifier: ^1.30.2 - version: 1.30.2(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1))(workerd@1.20260317.1)(wrangler@4.78.0) '@e18e/eslint-plugin': specifier: ^0.3.0 version: 0.3.0(eslint@9.39.3(jiti@2.6.1)) @@ -270,9 +267,6 @@ importers: buffer: specifier: ^6.0.3 version: 6.0.3 - cloudflared: - specifier: ^0.7.1 - version: 0.7.1 eslint: specifier: 9.39.3 version: 9.39.3(jiti@2.6.1) @@ -324,9 +318,6 @@ importers: vitest: specifier: ^4.1.2 version: 4.1.2(@types/node@24.10.13)(@vitest/ui@4.1.2)(jsdom@29.0.1)(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1)) - wrangler: - specifier: ^4.78.0 - version: 4.78.0 packages: @@ -880,59 +871,6 @@ packages: resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} hasBin: true - '@cloudflare/kv-asset-handler@0.4.2': - resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} - engines: {node: '>=18.0.0'} - - '@cloudflare/unenv-preset@2.16.0': - resolution: {integrity: sha512-8ovsRpwzPoEqPUzoErAYVv8l3FMZNeBVQfJTvtzP4AgLSRGZISRfuChFxHWUQd3n6cnrwkuTGxT+2cGo8EsyYg==} - peerDependencies: - unenv: 2.0.0-rc.24 - workerd: 1.20260301.1 || ~1.20260302.1 || ~1.20260303.1 || ~1.20260304.1 || >1.20260305.0 <2.0.0-0 - peerDependenciesMeta: - workerd: - optional: true - - '@cloudflare/vite-plugin@1.30.2': - resolution: {integrity: sha512-1TG/GyYxMAVhRtbKs9dPCsJY+c4qaPk+NKiLywKLV/BuvgMTBGhrmIvkC9NQSaw9sa5fPOYmv9me68AIs5kXJQ==} - peerDependencies: - vite: ^6.1.0 || ^7.0.0 || ^8.0.0 - wrangler: ^4.78.0 - - '@cloudflare/workerd-darwin-64@1.20260317.1': - resolution: {integrity: sha512-8hjh3sPMwY8M/zedq3/sXoA2Q4BedlGufn3KOOleIG+5a4ReQKLlUah140D7J6zlKmYZAFMJ4tWC7hCuI/s79g==} - engines: {node: '>=16'} - cpu: [x64] - os: [darwin] - - '@cloudflare/workerd-darwin-arm64@1.20260317.1': - resolution: {integrity: sha512-M/MnNyvO5HMgoIdr3QHjdCj2T1ki9gt0vIUnxYxBu9ISXS/jgtMl6chUVPJ7zHYBn9MyYr8ByeN6frjYxj0MGg==} - engines: {node: '>=16'} - cpu: [arm64] - os: [darwin] - - '@cloudflare/workerd-linux-64@1.20260317.1': - resolution: {integrity: sha512-1ltuEjkRcS3fsVF7CxsKlWiRmzq2ZqMfqDN0qUOgbUwkpXsLVJsXmoblaLf5OP00ELlcgF0QsN0p2xPEua4Uug==} - engines: {node: '>=16'} - cpu: [x64] - os: [linux] - - '@cloudflare/workerd-linux-arm64@1.20260317.1': - resolution: {integrity: sha512-3QrNnPF1xlaNwkHpasvRvAMidOvQs2NhXQmALJrEfpIJ/IDL2la8g499yXp3eqhG3hVMCB07XVY149GTs42Xtw==} - engines: {node: '>=16'} - cpu: [arm64] - os: [linux] - - '@cloudflare/workerd-windows-64@1.20260317.1': - resolution: {integrity: sha512-MfZTz+7LfuIpMGTa3RLXHX8Z/pnycZLItn94WRdHr8LPVet+C5/1Nzei399w/jr3+kzT4pDKk26JF/tlI5elpQ==} - engines: {node: '>=16'} - cpu: [x64] - os: [win32] - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - '@csstools/color-helpers@6.0.2': resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} engines: {node: '>=20.19.0'} @@ -997,312 +935,156 @@ packages: peerDependencies: esbuild: '*' - '@esbuild/aix-ppc64@0.27.3': - resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.27.4': resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.27.3': - resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.27.4': resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.27.3': - resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.27.4': resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.27.3': - resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.27.4': resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.27.3': - resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.27.4': resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.27.3': - resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.27.4': resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.3': - resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.27.4': resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.3': - resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.27.4': resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.27.3': - resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.27.4': resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.27.3': - resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.27.4': resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.27.3': - resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.27.4': resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.27.3': - resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.27.4': resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.27.3': - resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.27.4': resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.27.3': - resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.27.4': resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.27.3': - resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.27.4': resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.27.3': - resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.27.4': resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.27.3': - resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.27.4': resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.3': - resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.27.4': resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.3': - resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.27.4': resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.27.3': - resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.27.4': resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.3': - resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.27.4': resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.27.3': - resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/openharmony-arm64@0.27.4': resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.27.3': - resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.27.4': resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.27.3': - resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.27.4': resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.3': - resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.27.4': resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.27.3': - resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.27.4': resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} engines: {node: '>=18'} @@ -1406,159 +1188,6 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@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} - 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} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.2.4': - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.2.4': - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-linux-arm64@1.2.4': - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-arm@1.2.4': - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-ppc64@1.2.4': - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-riscv64@1.2.4': - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-s390x@1.2.4': - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-x64@1.2.4': - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@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} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@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} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-ppc64@0.34.5': - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@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} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-s390x@0.34.5': - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-x64@0.34.5': - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@img/sharp-linuxmusl-arm64@0.34.5': - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@img/sharp-linuxmusl-x64@0.34.5': - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [musl] - - '@img/sharp-wasm32@0.34.5': - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.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} - 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} - 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} - cpu: [x64] - os: [win32] - '@internationalized/date@3.12.0': resolution: {integrity: sha512-/PyIMzK29jtXaGU23qTvNZxvBXRtKbNnGDFD+PY6CZw/Y8Ex8pFUzkuCJCG9aOqmShjqhS9mPqP6Dk5onQY8rQ==} @@ -1594,9 +1223,6 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@juggle/resize-observer@3.4.0': resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} @@ -1825,15 +1451,6 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@poppinss/colors@4.1.6': - resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} - - '@poppinss/dumper@0.6.5': - resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} - - '@poppinss/exception@1.2.3': - resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} - '@react-aria/breadcrumbs@3.5.32': resolution: {integrity: sha512-S61vh5DJ2PXiXUwD7gk+pvS/b4VPrc3ZJOUZ0yVRLHkVESr5LhIZH+SAVgZkm1lzKyMRG+BH+fiRH/DZRSs7SA==} peerDependencies: @@ -2795,13 +2412,6 @@ packages: resolution: {integrity: sha512-i6NWUDi2SDikfSUeMJvJTRdwEKYSfTd+mvBO2Ja51S1YK+hnickBuDfD+RvPerIXLuyRu3GamgNPbNqgCGUg/Q==} engines: {node: '>= 18'} - '@sindresorhus/is@7.2.0': - resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==} - engines: {node: '>=18'} - - '@speed-highlight/core@1.2.14': - resolution: {integrity: sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==} - '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -3511,9 +3121,6 @@ packages: bind-event-listener@3.0.0: resolution: {integrity: sha512-PJvH288AWQhKs2v9zyfYdPzlPqf5bXbGMmhmUIY9x4dAUGIWgomO771oBQNwJnMQSnUIXhKu6sgzpBRXTlvb8Q==} - blake3-wasm@2.1.5: - resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} - blurhash@2.0.5: resolution: {integrity: sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==} @@ -3593,10 +3200,6 @@ packages: classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - cloudflared@0.7.1: - resolution: {integrity: sha512-jJn1Gu9Tf4qnIu8tfiHZ25Hs8rNcRYSVf8zAd97wvYdOCzftm1CTs1S/RPhijjGi8gUT1p9yzfDi9zYlU/0RwA==} - hasBin: true - clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -3638,10 +3241,6 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie@1.1.1: - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} - engines: {node: '>=18'} - core-js-compat@3.49.0: resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} @@ -3838,9 +3437,6 @@ packages: error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - error-stack-parser-es@1.0.5: - resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} - es-abstract@1.24.1: resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} @@ -3879,11 +3475,6 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - esbuild@0.27.3: - resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.27.4: resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} engines: {node: '>=18'} @@ -4685,10 +4276,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - knip@5.85.0: resolution: {integrity: sha512-V2kyON+DZiYdNNdY6GALseiNCwX7dYdpz9Pv85AUn69Gk0UKCts+glOKWfe5KmaMByRjM9q17Mzj/KinTVOyxg==} engines: {node: '>=18.18.0'} @@ -4888,11 +4475,6 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - miniflare@4.20260317.3: - resolution: {integrity: sha512-tK78D3X4q30/SXqVwMhWrUfH+ffRou9dJLC+jkhNy5zh1I7i7T4JH6xihOvYxdCSBavJ5fQXaaxDJz6orh09BA==} - engines: {node: '>=18.0.0'} - hasBin: true - minimatch@10.2.4: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} @@ -5067,9 +4649,6 @@ packages: resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} engines: {node: 18 || 20 || >=22} - path-to-regexp@6.3.0: - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -5356,10 +4935,6 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} - sharp@0.34.5: - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -5514,10 +5089,6 @@ packages: style-to-object@1.0.3: resolution: {integrity: sha512-xOpx7S53E0V3DpVsvt7ySvoiumRpfXiC99PUXLqGB3wiAnN9ybEIpuzlZ8LAZg+h1sl9JkEUwtSQXxcCgFqbbg==} - supports-color@10.2.2: - resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} - engines: {node: '>=18'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -5673,17 +5244,10 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@7.24.4: - resolution: {integrity: sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==} - engines: {node: '>=20.18.1'} - undici@7.24.6: resolution: {integrity: sha512-Xi4agocCbRzt0yYMZGMA6ApD7gvtUFaxm4ZmeacWI4cZxaF6C+8I8QfofC20NAePiB/IcvZmzkJ7XPa471AEtA==} engines: {node: '>=20.18.1'} - unenv@2.0.0-rc.24: - resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} - unhomoglyph@1.0.6: resolution: {integrity: sha512-7uvcWI3hWshSADBu4JpnyYbTVc7YlhF5GDW/oPD5AxIxl34k4wXR3WDkPnzLxkN32LiTCTKMQLtKVZiwki3zGg==} @@ -6029,33 +5593,6 @@ packages: workbox-window@7.4.0: resolution: {integrity: sha512-/bIYdBLAVsNR3v7gYGaV4pQW3M3kEPx5E8vDxGvxo6khTrGtSSCS7QiFKv9ogzBgZiy0OXLP9zO28U/1nF1mfw==} - workerd@1.20260317.1: - resolution: {integrity: sha512-ZuEq1OdrJBS+NV+L5HMYPCzVn49a2O60slQiiLpG44jqtlOo+S167fWC76kEXteXLLLydeuRrluRel7WdOUa4g==} - engines: {node: '>=16'} - hasBin: true - - wrangler@4.78.0: - resolution: {integrity: sha512-He/vUhk4ih0D0eFmtNnlbT6Od8j+BEokaSR+oYjbVsH0SWIrIch+eHqfLRSBjBQaOoh6HCNxcafcIkBm2u0Hag==} - engines: {node: '>=20.3.0'} - hasBin: true - peerDependencies: - '@cloudflare/workers-types': ^4.20260317.1 - peerDependenciesMeta: - '@cloudflare/workers-types': - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -6070,12 +5607,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - youch-core@0.3.3: - resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} - - youch@4.1.0-beta.10: - resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} - zod-validation-error@4.0.2: resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} engines: {node: '>=18.0.0'} @@ -6803,46 +6334,6 @@ snapshots: dependencies: css-tree: 3.2.1 - '@cloudflare/kv-asset-handler@0.4.2': {} - - '@cloudflare/unenv-preset@2.16.0(unenv@2.0.0-rc.24)(workerd@1.20260317.1)': - dependencies: - unenv: 2.0.0-rc.24 - optionalDependencies: - workerd: 1.20260317.1 - - '@cloudflare/vite-plugin@1.30.2(vite@8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1))(workerd@1.20260317.1)(wrangler@4.78.0)': - dependencies: - '@cloudflare/unenv-preset': 2.16.0(unenv@2.0.0-rc.24)(workerd@1.20260317.1) - miniflare: 4.20260317.3 - unenv: 2.0.0-rc.24 - vite: 8.0.3(@types/node@24.10.13)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.1) - wrangler: 4.78.0 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - workerd - - '@cloudflare/workerd-darwin-64@1.20260317.1': - optional: true - - '@cloudflare/workerd-darwin-arm64@1.20260317.1': - optional: true - - '@cloudflare/workerd-linux-64@1.20260317.1': - optional: true - - '@cloudflare/workerd-linux-arm64@1.20260317.1': - optional: true - - '@cloudflare/workerd-windows-64@1.20260317.1': - optional: true - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - '@csstools/color-helpers@6.0.2': {} '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': @@ -6895,159 +6386,81 @@ snapshots: dependencies: esbuild: 0.27.4 - '@esbuild/aix-ppc64@0.27.3': - optional: true - '@esbuild/aix-ppc64@0.27.4': optional: true - '@esbuild/android-arm64@0.27.3': - optional: true - '@esbuild/android-arm64@0.27.4': optional: true - '@esbuild/android-arm@0.27.3': - optional: true - '@esbuild/android-arm@0.27.4': optional: true - '@esbuild/android-x64@0.27.3': - optional: true - '@esbuild/android-x64@0.27.4': optional: true - '@esbuild/darwin-arm64@0.27.3': - optional: true - '@esbuild/darwin-arm64@0.27.4': optional: true - '@esbuild/darwin-x64@0.27.3': - optional: true - '@esbuild/darwin-x64@0.27.4': optional: true - '@esbuild/freebsd-arm64@0.27.3': - optional: true - '@esbuild/freebsd-arm64@0.27.4': optional: true - '@esbuild/freebsd-x64@0.27.3': - optional: true - '@esbuild/freebsd-x64@0.27.4': optional: true - '@esbuild/linux-arm64@0.27.3': - optional: true - '@esbuild/linux-arm64@0.27.4': optional: true - '@esbuild/linux-arm@0.27.3': - optional: true - '@esbuild/linux-arm@0.27.4': optional: true - '@esbuild/linux-ia32@0.27.3': - optional: true - '@esbuild/linux-ia32@0.27.4': optional: true - '@esbuild/linux-loong64@0.27.3': - optional: true - '@esbuild/linux-loong64@0.27.4': optional: true - '@esbuild/linux-mips64el@0.27.3': - optional: true - '@esbuild/linux-mips64el@0.27.4': optional: true - '@esbuild/linux-ppc64@0.27.3': - optional: true - '@esbuild/linux-ppc64@0.27.4': optional: true - '@esbuild/linux-riscv64@0.27.3': - optional: true - '@esbuild/linux-riscv64@0.27.4': optional: true - '@esbuild/linux-s390x@0.27.3': - optional: true - '@esbuild/linux-s390x@0.27.4': optional: true - '@esbuild/linux-x64@0.27.3': - optional: true - '@esbuild/linux-x64@0.27.4': optional: true - '@esbuild/netbsd-arm64@0.27.3': - optional: true - '@esbuild/netbsd-arm64@0.27.4': optional: true - '@esbuild/netbsd-x64@0.27.3': - optional: true - '@esbuild/netbsd-x64@0.27.4': optional: true - '@esbuild/openbsd-arm64@0.27.3': - optional: true - '@esbuild/openbsd-arm64@0.27.4': optional: true - '@esbuild/openbsd-x64@0.27.3': - optional: true - '@esbuild/openbsd-x64@0.27.4': optional: true - '@esbuild/openharmony-arm64@0.27.3': - optional: true - '@esbuild/openharmony-arm64@0.27.4': optional: true - '@esbuild/sunos-x64@0.27.3': - optional: true - '@esbuild/sunos-x64@0.27.4': optional: true - '@esbuild/win32-arm64@0.27.3': - optional: true - '@esbuild/win32-arm64@0.27.4': optional: true - '@esbuild/win32-ia32@0.27.3': - optional: true - '@esbuild/win32-ia32@0.27.4': optional: true - '@esbuild/win32-x64@0.27.3': - optional: true - '@esbuild/win32-x64@0.27.4': optional: true @@ -7150,102 +6563,6 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@img/colour@1.1.0': {} - - '@img/sharp-darwin-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 - optional: true - - '@img/sharp-darwin-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 - optional: true - - '@img/sharp-libvips-darwin-arm64@1.2.4': - optional: true - - '@img/sharp-libvips-darwin-x64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-arm64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-arm@1.2.4': - optional: true - - '@img/sharp-libvips-linux-ppc64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-riscv64@1.2.4': - optional: true - - '@img/sharp-libvips-linux-s390x@1.2.4': - optional: true - - '@img/sharp-libvips-linux-x64@1.2.4': - optional: true - - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - optional: true - - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - optional: true - - '@img/sharp-linux-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 - optional: true - - '@img/sharp-linux-arm@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 - optional: true - - '@img/sharp-linux-ppc64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 - optional: true - - '@img/sharp-linux-riscv64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 - optional: true - - '@img/sharp-linux-s390x@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 - optional: true - - '@img/sharp-linux-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 - optional: true - - '@img/sharp-linuxmusl-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - optional: true - - '@img/sharp-linuxmusl-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - optional: true - - '@img/sharp-wasm32@0.34.5': - dependencies: - '@emnapi/runtime': 1.8.1 - optional: true - - '@img/sharp-win32-arm64@0.34.5': - optional: true - - '@img/sharp-win32-ia32@0.34.5': - optional: true - - '@img/sharp-win32-x64@0.34.5': - optional: true - '@internationalized/date@3.12.0': dependencies: '@swc/helpers': 0.5.19 @@ -7289,11 +6606,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - '@juggle/resize-observer@3.4.0': {} '@matrix-org/matrix-sdk-crypto-wasm@15.3.0': {} @@ -7449,18 +6761,6 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@poppinss/colors@4.1.6': - dependencies: - kleur: 4.1.5 - - '@poppinss/dumper@0.6.5': - dependencies: - '@poppinss/colors': 4.1.6 - '@sindresorhus/is': 7.2.0 - supports-color: 10.2.2 - - '@poppinss/exception@1.2.3': {} - '@react-aria/breadcrumbs@3.5.32(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@react-aria/i18n': 3.12.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -8741,10 +8041,6 @@ snapshots: - rollup - supports-color - '@sindresorhus/is@7.2.0': {} - - '@speed-highlight/core@1.2.14': {} - '@standard-schema/spec@1.1.0': {} '@stylistic/eslint-plugin@5.10.0(eslint@9.39.3(jiti@2.6.1))': @@ -9533,8 +8829,6 @@ snapshots: bind-event-listener@3.0.0: {} - blake3-wasm@2.1.5: {} - blurhash@2.0.5: {} brace-expansion@1.1.13: @@ -9623,8 +8917,6 @@ snapshots: classnames@2.5.1: {} - cloudflared@0.7.1: {} - clsx@2.1.1: {} color-convert@2.0.1: @@ -9651,8 +8943,6 @@ snapshots: convert-source-map@2.0.0: {} - cookie@1.1.1: {} - core-js-compat@3.49.0: dependencies: browserslist: 4.28.1 @@ -9830,8 +9120,6 @@ snapshots: dependencies: is-arrayish: 0.2.1 - error-stack-parser-es@1.0.5: {} - es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 @@ -9937,35 +9225,6 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild@0.27.3: - optionalDependencies: - '@esbuild/aix-ppc64': 0.27.3 - '@esbuild/android-arm': 0.27.3 - '@esbuild/android-arm64': 0.27.3 - '@esbuild/android-x64': 0.27.3 - '@esbuild/darwin-arm64': 0.27.3 - '@esbuild/darwin-x64': 0.27.3 - '@esbuild/freebsd-arm64': 0.27.3 - '@esbuild/freebsd-x64': 0.27.3 - '@esbuild/linux-arm': 0.27.3 - '@esbuild/linux-arm64': 0.27.3 - '@esbuild/linux-ia32': 0.27.3 - '@esbuild/linux-loong64': 0.27.3 - '@esbuild/linux-mips64el': 0.27.3 - '@esbuild/linux-ppc64': 0.27.3 - '@esbuild/linux-riscv64': 0.27.3 - '@esbuild/linux-s390x': 0.27.3 - '@esbuild/linux-x64': 0.27.3 - '@esbuild/netbsd-arm64': 0.27.3 - '@esbuild/netbsd-x64': 0.27.3 - '@esbuild/openbsd-arm64': 0.27.3 - '@esbuild/openbsd-x64': 0.27.3 - '@esbuild/openharmony-arm64': 0.27.3 - '@esbuild/sunos-x64': 0.27.3 - '@esbuild/win32-arm64': 0.27.3 - '@esbuild/win32-ia32': 0.27.3 - '@esbuild/win32-x64': 0.27.3 - esbuild@0.27.4: optionalDependencies: '@esbuild/aix-ppc64': 0.27.4 @@ -10891,8 +10150,6 @@ snapshots: dependencies: json-buffer: 3.0.1 - kleur@4.1.5: {} - knip@5.85.0(@types/node@24.10.13)(typescript@5.9.3): dependencies: '@nodelib/fs.walk': 1.2.8 @@ -11074,18 +10331,6 @@ snapshots: min-indent@1.0.1: {} - miniflare@4.20260317.3: - dependencies: - '@cspotcode/source-map-support': 0.8.1 - sharp: 0.34.5 - undici: 7.24.4 - workerd: 1.20260317.1 - ws: 8.18.0 - youch: 4.1.0-beta.10 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - minimatch@10.2.4: dependencies: brace-expansion: 5.0.5 @@ -11280,8 +10525,6 @@ snapshots: lru-cache: 11.2.6 minipass: 7.1.3 - path-to-regexp@6.3.0: {} - path-type@4.0.0: {} pathe@2.0.3: {} @@ -11652,37 +10895,6 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 - sharp@0.34.5: - dependencies: - '@img/colour': 1.1.0 - detect-libc: 2.1.2 - semver: 7.7.4 - 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 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -11869,8 +11081,6 @@ snapshots: dependencies: inline-style-parser: 0.2.2 - supports-color@10.2.2: {} - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -12029,14 +11239,8 @@ snapshots: undici-types@7.16.0: {} - undici@7.24.4: {} - undici@7.24.6: {} - unenv@2.0.0-rc.24: - dependencies: - pathe: 2.0.3 - unhomoglyph@1.0.6: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -12432,32 +11636,6 @@ snapshots: '@types/trusted-types': 2.0.7 workbox-core: 7.4.0 - workerd@1.20260317.1: - optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20260317.1 - '@cloudflare/workerd-darwin-arm64': 1.20260317.1 - '@cloudflare/workerd-linux-64': 1.20260317.1 - '@cloudflare/workerd-linux-arm64': 1.20260317.1 - '@cloudflare/workerd-windows-64': 1.20260317.1 - - wrangler@4.78.0: - dependencies: - '@cloudflare/kv-asset-handler': 0.4.2 - '@cloudflare/unenv-preset': 2.16.0(unenv@2.0.0-rc.24)(workerd@1.20260317.1) - blake3-wasm: 2.1.5 - esbuild: 0.27.3 - miniflare: 4.20260317.3 - path-to-regexp: 6.3.0 - unenv: 2.0.0-rc.24 - workerd: 1.20260317.1 - optionalDependencies: - fsevents: 2.3.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - ws@8.18.0: {} - xml-name-validator@5.0.0: {} xmlchars@2.2.0: {} @@ -12466,19 +11644,6 @@ snapshots: yocto-queue@0.1.0: {} - youch-core@0.3.3: - dependencies: - '@poppinss/exception': 1.2.3 - error-stack-parser-es: 1.0.5 - - youch@4.1.0-beta.10: - dependencies: - '@poppinss/colors': 4.1.6 - '@poppinss/dumper': 0.6.5 - '@speed-highlight/core': 1.2.14 - cookie: 1.1.1 - youch-core: 0.3.3 - zod-validation-error@4.0.2(zod@4.3.6): dependencies: zod: 4.3.6 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ebb82f27f..164810c18 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,11 +1,9 @@ allowBuilds: '@sentry/cli': true '@swc/core': true - cloudflared: true esbuild: true sharp: true unrs-resolver: true - workerd: true engineStrict: true minimumReleaseAge: 1440 minimumReleaseAgeExclude: diff --git a/vite.config.ts b/vite.config.ts index 88815ee98..92a95ac6e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from 'vite'; import type { ViteDevServer, PluginOption } from 'vite'; -import { execSync } from 'child_process'; +import { execFileSync, execSync } from 'child_process'; import type { RollupInjectOptions } from '@rollup/plugin-inject'; import react from '@vitejs/plugin-react'; import svgr from 'vite-plugin-svgr'; @@ -16,7 +16,6 @@ import { compression, defineAlgorithm } from 'vite-plugin-compression2'; import { constants as zlibConstants } from 'zlib'; import fs from 'fs'; import path from 'path'; -import { cloudflare } from '@cloudflare/vite-plugin'; import { createRequire } from 'module'; import { sentryVitePlugin } from '@sentry/vite-plugin'; import buildConfig from './build.config.ts'; @@ -61,7 +60,10 @@ const isReleaseTag = (() => { const envVal = process.env.VITE_IS_RELEASE_TAG; if (envVal !== undefined && envVal !== '') return envVal === 'true'; try { - const tag = execSync('git describe --exact-match --tags HEAD 2>/dev/null').toString().trim(); + const tag = execFileSync('git', ['describe', '--exact-match', '--tags', 'HEAD'], { + encoding: 'utf8', + stdio: ['ignore', 'pipe', 'ignore'], + }).trim(); return tag.startsWith('v'); } catch { return false; @@ -178,14 +180,6 @@ export default defineConfig(({ command }) => ({ type: 'module', }, }), - cloudflare({ - config: { - compatibility_date: '2026-03-03', - assets: { - not_found_handling: 'single-page-application', - }, - }, - }), compression({ algorithms: [ defineAlgorithm('brotliCompress', { diff --git a/wrangler.jsonc b/wrangler.jsonc new file mode 100644 index 000000000..88329f764 --- /dev/null +++ b/wrangler.jsonc @@ -0,0 +1,9 @@ +{ + "$schema": "https://www.unpkg.com/wrangler/config-schema.json", + "name": "sable", + "compatibility_date": "2026-03-03", + "assets": { + "directory": "./dist", + "not_found_handling": "single-page-application", + }, +} From 0bc8dae94005742d05269dd1ec6f4cb832ef6f45 Mon Sep 17 00:00:00 2001 From: hazre Date: Tue, 14 Apr 2026 20:23:16 +0200 Subject: [PATCH 15/23] refactor: convert secret storage keys to typescript --- src/client/secretStorageKeys.d.ts | 8 ----- src/client/secretStorageKeys.js | 37 ---------------------- src/client/secretStorageKeys.ts | 52 +++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 45 deletions(-) delete mode 100644 src/client/secretStorageKeys.d.ts delete mode 100644 src/client/secretStorageKeys.js create mode 100644 src/client/secretStorageKeys.ts diff --git a/src/client/secretStorageKeys.d.ts b/src/client/secretStorageKeys.d.ts deleted file mode 100644 index 9b14490f6..000000000 --- a/src/client/secretStorageKeys.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { CryptoCallbacks } from '$types/matrix-sdk'; - -export function storePrivateKey(keyId: string, privateKey: Uint8Array): void; -export function clearSecretStorageKeys(): void; -export const cryptoCallbacks: Pick< - CryptoCallbacks, - 'getSecretStorageKey' | 'cacheSecretStorageKey' ->; diff --git a/src/client/secretStorageKeys.js b/src/client/secretStorageKeys.js deleted file mode 100644 index 78c0cb4cb..000000000 --- a/src/client/secretStorageKeys.js +++ /dev/null @@ -1,37 +0,0 @@ -const secretStorageKeys = new Map(); - -export function storePrivateKey(keyId, privateKey) { - if (privateKey instanceof Uint8Array === false) { - throw new Error('Unable to store, privateKey is invalid.'); - } - secretStorageKeys.set(keyId, privateKey); -} - -function hasPrivateKey(keyId) { - return secretStorageKeys.get(keyId) instanceof Uint8Array; -} - -function getPrivateKey(keyId) { - return secretStorageKeys.get(keyId); -} - -export function clearSecretStorageKeys() { - secretStorageKeys.clear(); -} - -async function getSecretStorageKey({ keys }) { - const keyIds = Object.keys(keys); - const keyId = keyIds.find(hasPrivateKey); - if (!keyId) return undefined; - const privateKey = getPrivateKey(keyId); - return [keyId, privateKey]; -} - -function cacheSecretStorageKey(keyId, keyInfo, privateKey) { - secretStorageKeys.set(keyId, privateKey); -} - -export const cryptoCallbacks = { - getSecretStorageKey, - cacheSecretStorageKey, -}; diff --git a/src/client/secretStorageKeys.ts b/src/client/secretStorageKeys.ts new file mode 100644 index 000000000..cfa45a5d4 --- /dev/null +++ b/src/client/secretStorageKeys.ts @@ -0,0 +1,52 @@ +import type { CryptoCallbacks } from '$types/matrix-sdk'; + +const secretStorageKeys = new Map(); + +export function storePrivateKey(keyId: string, privateKey: Uint8Array): void { + if (privateKey instanceof Uint8Array === false) { + throw new Error('Unable to store, privateKey is invalid.'); + } + secretStorageKeys.set(keyId, privateKey); +} + +function hasPrivateKey(keyId: string): boolean { + return secretStorageKeys.get(keyId) instanceof Uint8Array; +} + +function getPrivateKey(keyId: string): Uint8Array | undefined { + return secretStorageKeys.get(keyId); +} + +export function clearSecretStorageKeys(): void { + secretStorageKeys.clear(); +} + +const getSecretStorageKey: NonNullable = async ( + { keys }, + name +) => { + void name; + const keyIds = Object.keys(keys); + const keyId = keyIds.find(hasPrivateKey); + if (!keyId) return null; + const privateKey = getPrivateKey(keyId); + if (!privateKey) return null; + return [keyId, privateKey]; +}; + +const cacheSecretStorageKey: NonNullable = ( + keyId, + keyInfo, + privateKey +) => { + void keyInfo; + secretStorageKeys.set(keyId, privateKey); +}; + +export const cryptoCallbacks: Pick< + CryptoCallbacks, + 'getSecretStorageKey' | 'cacheSecretStorageKey' +> = { + getSecretStorageKey, + cacheSecretStorageKey, +}; From bb90fa7b80cc9ec3710804ff64f9939865b1dbca Mon Sep 17 00:00:00 2001 From: hazre Date: Tue, 14 Apr 2026 20:26:46 +0200 Subject: [PATCH 16/23] refactor: convert bg color utility to typescript --- src/app/utils/bgColorImg.d.ts | 3 --- src/app/utils/{bgColorImg.js => bgColorImg.ts} | 7 ++++++- 2 files changed, 6 insertions(+), 4 deletions(-) delete mode 100644 src/app/utils/bgColorImg.d.ts rename src/app/utils/{bgColorImg.js => bgColorImg.ts} (96%) diff --git a/src/app/utils/bgColorImg.d.ts b/src/app/utils/bgColorImg.d.ts deleted file mode 100644 index f38db24f9..000000000 --- a/src/app/utils/bgColorImg.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare function bgColorImg(img: HTMLImageElement): string; - -export default bgColorImg; diff --git a/src/app/utils/bgColorImg.js b/src/app/utils/bgColorImg.ts similarity index 96% rename from src/app/utils/bgColorImg.js rename to src/app/utils/bgColorImg.ts index c14326ba8..db7f397f2 100644 --- a/src/app/utils/bgColorImg.js +++ b/src/app/utils/bgColorImg.ts @@ -1,12 +1,17 @@ // Getting a dominant color from an IMG source, // and darkening it a bit afterwards for contrast -export default function bgColorImg(img) { +export default function bgColorImg(img: HTMLImageElement): string { const size = 32; const darken = 0.8; const canvas = document.createElement('canvas'); canvas.width = size; canvas.height = size; const ctx = canvas.getContext('2d', { willReadFrequently: true }); + + if (!ctx) { + return 'rgb(0, 0, 0)'; + } + ctx.drawImage(img, 0, 0, size, size); const px = ctx.getImageData(0, 0, size, size).data; From 00abf3a381c72d35ea11361bbce94476d36e0bcb Mon Sep 17 00:00:00 2001 From: hazre Date: Tue, 14 Apr 2026 20:34:34 +0200 Subject: [PATCH 17/23] chore: enforce typescript-only app sources --- eslint.config.js | 20 ++++++++++++++++++++ knip.json | 8 +------- tsconfig.web.json | 2 +- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index f7cf561c8..bb6e37e4e 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -221,6 +221,26 @@ const projectOverrides = defineConfig([ '@typescript-eslint/consistent-type-definitions': 'off', }, }, + { + name: 'project/secret-storage-helpers', + files: ['src/client/secretStorageKeys.ts'], + rules: { + 'no-void': 'off', + }, + }, + { + name: 'project/no-js-in-src', + files: ['src/**/*.{js,jsx}'], + rules: { + 'no-restricted-syntax': [ + 'error', + { + selector: 'Program', + message: 'JavaScript files are not allowed under src. Use TypeScript instead.', + }, + ], + }, + }, ]); export default defineConfig([ diff --git a/knip.json b/knip.json index 6cff9d53b..f1c2ed12d 100644 --- a/knip.json +++ b/knip.json @@ -1,13 +1,7 @@ { "$schema": "https://unpkg.com/knip@5/schema.json", "entry": ["src/sw.ts"], - "ignore": [ - "src/ext.d.ts", - "src/types/matrix-sdk-events.d.ts", - "src/client/secretStorageKeys.d.ts", - "src/app/utils/bgColorImg.d.ts", - "scripts/*" - ], + "ignore": ["src/ext.d.ts", "src/types/matrix-sdk-events.d.ts", "scripts/*"], "ignoreExportsUsedInFile": { "interface": true, "type": true diff --git a/tsconfig.web.json b/tsconfig.web.json index 80d6c8ece..df4b9b311 100644 --- a/tsconfig.web.json +++ b/tsconfig.web.json @@ -46,6 +46,6 @@ "$client/*": ["src/client/*"] } }, - "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts", "src/**/*.js", "src/**/*.jsx"], + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts"], "exclude": ["node_modules", "dist", "coverage"] } From c5a48434e7e7a6667a271989c096fe2a0103bb78 Mon Sep 17 00:00:00 2001 From: hazre Date: Tue, 14 Apr 2026 20:38:31 +0200 Subject: [PATCH 18/23] fix: narrow secret storage lint exception --- eslint.config.js | 7 ------- src/client/secretStorageKeys.ts | 11 ++++------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index bb6e37e4e..5923b9479 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -221,13 +221,6 @@ const projectOverrides = defineConfig([ '@typescript-eslint/consistent-type-definitions': 'off', }, }, - { - name: 'project/secret-storage-helpers', - files: ['src/client/secretStorageKeys.ts'], - rules: { - 'no-void': 'off', - }, - }, { name: 'project/no-js-in-src', files: ['src/**/*.{js,jsx}'], diff --git a/src/client/secretStorageKeys.ts b/src/client/secretStorageKeys.ts index cfa45a5d4..f66c0340c 100644 --- a/src/client/secretStorageKeys.ts +++ b/src/client/secretStorageKeys.ts @@ -21,11 +21,9 @@ export function clearSecretStorageKeys(): void { secretStorageKeys.clear(); } -const getSecretStorageKey: NonNullable = async ( - { keys }, - name -) => { - void name; +const getSecretStorageKey: NonNullable = async ({ + keys, +}) => { const keyIds = Object.keys(keys); const keyId = keyIds.find(hasPrivateKey); if (!keyId) return null; @@ -36,10 +34,9 @@ const getSecretStorageKey: NonNullable = const cacheSecretStorageKey: NonNullable = ( keyId, - keyInfo, + _keyInfo, privateKey ) => { - void keyInfo; secretStorageKeys.set(keyId, privateKey); }; From 5cbe9487f45e5b31e56673fd9887d39963b1468d Mon Sep 17 00:00:00 2001 From: hazre Date: Tue, 14 Apr 2026 20:44:39 +0200 Subject: [PATCH 19/23] fix: cover cjs and mjs in src js ban --- eslint.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eslint.config.js b/eslint.config.js index 5923b9479..8574288db 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -223,7 +223,7 @@ const projectOverrides = defineConfig([ }, { name: 'project/no-js-in-src', - files: ['src/**/*.{js,jsx}'], + files: ['src/**/*.{js,jsx,cjs,mjs}'], rules: { 'no-restricted-syntax': [ 'error', From 9d870e0948522cad25cb9b4fa17d2600d6f25bb6 Mon Sep 17 00:00:00 2001 From: hazre Date: Wed, 15 Apr 2026 14:17:14 +0200 Subject: [PATCH 20/23] refactor: use jotai-family atomFamily --- package.json | 1 + pnpm-lock.yaml | 13 +++++++++++++ src/app/state/room/roomInputDrafts.ts | 2 +- src/app/state/room/roomToOpenThread.ts | 2 +- src/app/state/room/roomToThreadBrowser.ts | 2 +- src/app/state/scheduledMessages.ts | 2 +- src/app/state/upload.ts | 2 +- 7 files changed, 19 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e4cd0b39f..78bf0c905 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "immer": "^9.0.21", "is-hotkey": "^0.2.0", "jotai": "^2.19.0", + "jotai-family": "^1.0.1", "linkify-react": "^4.3.2", "linkifyjs": "^4.3.2", "matrix-js-sdk": "^38.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b70c88fc2..1bf462b1f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -134,6 +134,9 @@ importers: jotai: specifier: ^2.19.0 version: 2.19.0(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@18.3.28)(react@18.3.1) + jotai-family: + specifier: ^1.0.1 + version: 1.0.1(jotai@2.19.0(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@18.3.28)(react@18.3.1)) linkify-react: specifier: ^4.3.2 version: 4.3.2(linkifyjs@4.3.2)(react@18.3.1) @@ -4192,6 +4195,12 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + jotai-family@1.0.1: + resolution: {integrity: sha512-Zb/79GNDhC/z82R+6qTTpeKW4l4H6ZCApfF5W8G4SH37E4mhbysU7r8DkP0KX94hWvjB/6lt/97nSr3wB+64Zg==} + engines: {node: '>=12.20.0'} + peerDependencies: + jotai: '>=2.9.0' + jotai@2.19.0: resolution: {integrity: sha512-r2wwxEXP1F2JteDLZEOPoIpAHhV89paKsN5GWVYndPNMMP/uVZDcC+fNj0A8NjKgaPWzdyO8Vp8YcYKe0uCEqQ==} engines: {node: '>=12.20.0'} @@ -10070,6 +10079,10 @@ snapshots: jiti@2.6.1: {} + jotai-family@1.0.1(jotai@2.19.0(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@18.3.28)(react@18.3.1)): + dependencies: + jotai: 2.19.0(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@18.3.28)(react@18.3.1) + jotai@2.19.0(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@18.3.28)(react@18.3.1): optionalDependencies: '@babel/core': 7.29.0 diff --git a/src/app/state/room/roomInputDrafts.ts b/src/app/state/room/roomInputDrafts.ts index 852c84ac2..9aa9667bf 100644 --- a/src/app/state/room/roomInputDrafts.ts +++ b/src/app/state/room/roomInputDrafts.ts @@ -1,5 +1,5 @@ import { atom } from 'jotai'; -import { atomFamily } from 'jotai/utils'; +import { atomFamily } from 'jotai-family'; import { type Descendant } from 'slate'; import { type EncryptedAttachmentInfo } from 'browser-encrypt-attachment'; import { type IEventRelation } from '$types/matrix-sdk'; diff --git a/src/app/state/room/roomToOpenThread.ts b/src/app/state/room/roomToOpenThread.ts index 0a60fa4a7..c177cf0b5 100644 --- a/src/app/state/room/roomToOpenThread.ts +++ b/src/app/state/room/roomToOpenThread.ts @@ -1,5 +1,5 @@ import { atom } from 'jotai'; -import { atomFamily } from 'jotai/utils'; +import { atomFamily } from 'jotai-family'; const createOpenThreadAtom = () => atom(undefined); export type TOpenThreadAtom = ReturnType; diff --git a/src/app/state/room/roomToThreadBrowser.ts b/src/app/state/room/roomToThreadBrowser.ts index 3d8963165..91b7f1b77 100644 --- a/src/app/state/room/roomToThreadBrowser.ts +++ b/src/app/state/room/roomToThreadBrowser.ts @@ -1,5 +1,5 @@ import { atom } from 'jotai'; -import { atomFamily } from 'jotai/utils'; +import { atomFamily } from 'jotai-family'; const createThreadBrowserAtom = () => atom(false); export type TThreadBrowserAtom = ReturnType; diff --git a/src/app/state/scheduledMessages.ts b/src/app/state/scheduledMessages.ts index ba28b60eb..3bb0dd172 100644 --- a/src/app/state/scheduledMessages.ts +++ b/src/app/state/scheduledMessages.ts @@ -1,5 +1,5 @@ import { atom } from 'jotai'; -import { atomFamily } from 'jotai/utils'; +import { atomFamily } from 'jotai-family'; export const delayedEventsSupportedAtom = atom(false); diff --git a/src/app/state/upload.ts b/src/app/state/upload.ts index 125db34f2..2179ee360 100644 --- a/src/app/state/upload.ts +++ b/src/app/state/upload.ts @@ -1,5 +1,5 @@ import { atom, useAtom } from 'jotai'; -import { atomFamily } from 'jotai/utils'; +import { atomFamily } from 'jotai-family'; import { type MatrixClient, type UploadResponse, From 1d6d0a510f46a0d19d548e11346beb25c492741d Mon Sep 17 00:00:00 2001 From: hazre Date: Fri, 17 Apr 2026 01:06:22 +0200 Subject: [PATCH 21/23] refactor: emoji detection in text --- .../components/message/MsgTypeRenderers.tsx | 9 +- src/app/components/power/PowerIcon.tsx | 4 +- .../plugins/react-custom-html-parser.test.tsx | 14 +++ src/app/plugins/react-custom-html-parser.tsx | 64 +++++++++++--- src/app/utils/emojiDetection.test.ts | 44 ++++++++++ src/app/utils/emojiDetection.ts | 88 +++++++++++++++++++ src/app/utils/regex.ts | 14 --- 7 files changed, 203 insertions(+), 34 deletions(-) create mode 100644 src/app/utils/emojiDetection.test.ts create mode 100644 src/app/utils/emojiDetection.ts diff --git a/src/app/components/message/MsgTypeRenderers.tsx b/src/app/components/message/MsgTypeRenderers.tsx index b4391dc9c..f0c6fb281 100644 --- a/src/app/components/message/MsgTypeRenderers.tsx +++ b/src/app/components/message/MsgTypeRenderers.tsx @@ -1,7 +1,8 @@ import { type CSSProperties, type ReactNode, useMemo } from 'react'; import { Box, Chip, Icon, Icons, Text, toRem } from 'folds'; import { type IContent, type IPreviewUrlResponse } from '$types/matrix-sdk'; -import { JUMBO_EMOJI_REG, URL_REG } from '$utils/regex'; +import { URL_REG } from '$utils/regex'; +import { isJumboEmojiText } from '$utils/emojiDetection'; import { trimReplyFromBody } from '$utils/room'; import { type IAudioContent, @@ -126,7 +127,7 @@ export function MText({ ) ) return true; - if (!JUMBO_EMOJI_REG.test(trimmedBody)) return false; + if (!isJumboEmojiText(trimmedBody)) return false; if (trimmedBody.includes(':')) { const hasImage = customBody && /]*>/i.test(customBody); @@ -225,7 +226,7 @@ export function MEmote({ return ; } const trimmedBody = trimReplyFromBody(body); - const isJumbo = JUMBO_EMOJI_REG.test(trimmedBody); + const isJumbo = isJumboEmojiText(trimmedBody); let bundleContent: object[] | undefined; const urlsMatch = trimmedBody.match(URL_REG); @@ -277,7 +278,7 @@ export function MNotice({ return ; } const trimmedBody = trimReplyFromBody(body); - const isJumbo = JUMBO_EMOJI_REG.test(trimmedBody); + const isJumbo = isJumboEmojiText(trimmedBody); let bundleContent: object[] | undefined; const urlsMatch = trimmedBody.match(URL_REG); diff --git a/src/app/components/power/PowerIcon.tsx b/src/app/components/power/PowerIcon.tsx index 69bb3e90c..63f9d6d8e 100644 --- a/src/app/components/power/PowerIcon.tsx +++ b/src/app/components/power/PowerIcon.tsx @@ -1,4 +1,4 @@ -import { JUMBO_EMOJI_REG } from '$utils/regex'; +import { isJumboEmojiText } from '$utils/emojiDetection'; import * as css from './style.css'; type PowerIconProps = css.PowerIconVariants & { @@ -18,7 +18,7 @@ function getSafeIconUrl(iconSrc: string): string | undefined { } export function PowerIcon({ size, iconSrc, name }: PowerIconProps) { - if (JUMBO_EMOJI_REG.test(iconSrc)) { + if (isJumboEmojiText(iconSrc, 1)) { return {iconSrc}; } diff --git a/src/app/plugins/react-custom-html-parser.test.tsx b/src/app/plugins/react-custom-html-parser.test.tsx index 5d0e11e81..ed626de06 100644 --- a/src/app/plugins/react-custom-html-parser.test.tsx +++ b/src/app/plugins/react-custom-html-parser.test.tsx @@ -10,6 +10,7 @@ import { getReactCustomHtmlParser, makeMentionCustomProps, renderMatrixMention, + scaleSystemEmoji, } from './react-custom-html-parser'; const settingsLinkBaseUrl = 'https://app.example'; @@ -136,6 +137,19 @@ describe('getReactCustomHtmlParser code blocks', () => { }); describe('react custom html parser', () => { + it.each(['🫩', '🫪', '🫯', '🇩🇪', '🙂‍↔️'])( + 'wraps modern emoji text %s in emoticon markup', + (emoji) => { + const result = scaleSystemEmoji(emoji); + expect(result).toHaveLength(1); + expect(typeof result[0]).not.toBe('string'); + } + ); + + it('does not wrap emojis inside urls', () => { + expect(scaleSystemEmoji('https://example.com/🫩')).toEqual(['https://example.com/🫩']); + }); + it('renders same-origin raw settings links as mention-style chips through the factory link render path', () => { const renderLink = factoryRenderLinkifyWithMention( settingsLinkBaseUrl, diff --git a/src/app/plugins/react-custom-html-parser.tsx b/src/app/plugins/react-custom-html-parser.tsx index ec647166b..cd7033f9f 100644 --- a/src/app/plugins/react-custom-html-parser.tsx +++ b/src/app/plugins/react-custom-html-parser.tsx @@ -30,7 +30,8 @@ import { } from '$utils/matrix'; import { getMemberDisplayName } from '$utils/room'; import { type Nicknames } from '$state/nicknames'; -import { EMOJI_PATTERN, sanitizeForRegex, URL_NEG_LB } from '$utils/regex'; +import { sanitizeForRegex, URL_REG } from '$utils/regex'; +import { splitEmojiText } from '$utils/emojiDetection'; import { findAndReplace } from '$utils/findAndReplace'; import { onEnterOrSpace } from '$utils/keyboard'; import { copyToClipboard } from '$utils/dom'; @@ -48,8 +49,6 @@ import { } from './matrix-to'; import { getHexcodeForEmoji, getShortcodeFor } from './emoji'; -const EMOJI_REG_G = new RegExp(`${URL_NEG_LB}(${EMOJI_PATTERN})`, 'g'); - export const LINKIFY_OPTS: LinkifyOpts = { attributes: { target: '_blank', @@ -311,19 +310,56 @@ export const factoryRenderLinkifyWithMention = ( return renderLink; }; -export const scaleSystemEmoji = (text: string): (string | JSX.Element)[] => - findAndReplace( - text, - EMOJI_REG_G, - (match, pushIndex) => ( - - - {match[0]} +const scaleEmojiChunk = (text: string, output: (string | JSX.Element)[]) => { + splitEmojiText(text).forEach((part) => { + if (part.type === 'text') { + output.push(part.value); + return; + } + + output.push( + + + {part.value} - ), - (txt) => txt - ); + ); + }); +}; + +export const scaleSystemEmoji = (text: string): (string | JSX.Element)[] => { + const parts: (string | JSX.Element)[] = []; + const urlReg = new RegExp(URL_REG); + let lastIndex = 0; + + [...text.matchAll(urlReg)].forEach((match) => { + const start = match.index ?? 0; + scaleEmojiChunk(text.slice(lastIndex, start), parts); + parts.push(match[0]); + lastIndex = start + match[0].length; + }); + + scaleEmojiChunk(text.slice(lastIndex), parts); + + const normalized: (string | JSX.Element)[] = []; + parts.forEach((part) => { + if (typeof part !== 'string') { + normalized.push(part); + return; + } + + if (part === '') return; + const previous = normalized.at(-1); + if (typeof previous === 'string') { + normalized[normalized.length - 1] = `${previous}${part}`; + return; + } + + normalized.push(part); + }); + + return normalized.length > 0 ? normalized : ['']; +}; export const makeHighlightRegex = (highlights: string[]): RegExp | undefined => { const pattern = highlights.map(sanitizeForRegex).join('|'); diff --git a/src/app/utils/emojiDetection.test.ts b/src/app/utils/emojiDetection.test.ts new file mode 100644 index 000000000..d3df123ef --- /dev/null +++ b/src/app/utils/emojiDetection.test.ts @@ -0,0 +1,44 @@ +import { describe, it, expect } from 'vitest'; +import { isEmojiGrapheme, isJumboEmojiText, splitEmojiText } from './emojiDetection'; + +describe('isEmojiGrapheme', () => { + it.each(['🫩', '🫪', '🫯', '🇩🇪', '🙂‍↔️', '™️'])('matches emoji grapheme %s', (emoji) => { + expect(isEmojiGrapheme(emoji)).toBe(true); + }); + + it.each(['a', '12', 'http'])('does not match plain text segment %s', (value) => { + expect(isEmojiGrapheme(value)).toBe(false); + }); +}); + +describe('splitEmojiText', () => { + it('preserves newer emoji as standalone parts', () => { + expect(splitEmojiText('a🫪b')).toEqual([ + { type: 'text', value: 'a' }, + { type: 'emoji', value: '🫪' }, + { type: 'text', value: 'b' }, + ]); + }); + + it('keeps emoji sequences whole', () => { + expect(splitEmojiText('🙂‍↔️')).toEqual([ + { type: 'text', value: '' }, + { type: 'emoji', value: '🙂‍↔️' }, + { type: 'text', value: '' }, + ]); + }); +}); + +describe('isJumboEmojiText', () => { + it.each(['🫩', '🫪', '🫯', '🇩🇪', '🙂‍↔️'])('matches modern emoji sequence %s', (emoji) => { + expect(isJumboEmojiText(emoji)).toBe(true); + }); + + it.each(['123', 'hello', 'abc 123'])('does not match non-emoji text %s', (value) => { + expect(isJumboEmojiText(value)).toBe(false); + }); + + it('still matches shortcode-only content', () => { + expect(isJumboEmojiText(':blobcat:')).toBe(true); + }); +}); diff --git a/src/app/utils/emojiDetection.ts b/src/app/utils/emojiDetection.ts new file mode 100644 index 000000000..ba19616a7 --- /dev/null +++ b/src/app/utils/emojiDetection.ts @@ -0,0 +1,88 @@ +/** + * Emoji detection works on grapheme clusters, not raw code points. + * Intl.Segmenter keeps ZWJ sequences, flags, and keycaps intact as single user-visible units. + * Each grapheme is treated as emoji-like if it is a keycap sequence, an emoji forced by Variation Selector-16, or contains Emoji_Presentation, Extended_Pictographic, or Regional_Indicator. + * This is intentionally broader than `\p{RGI_Emoji}` because browsers can lag on that property for newer emojis like `🫪`. + * The goal here is UI rendering, so broad emoji-like detection is more useful than strict Unicode interchange validation. + */ + +const graphemeSegmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' }); + +const SHORTCODE_TOKEN_REG = /^:[^:\s]+:/u; +const EMOJI_GRAPHEME_REG = + /[#*0-9]\uFE0F?\u20E3|\p{Emoji}\uFE0F|[\p{Emoji_Presentation}\p{Extended_Pictographic}\p{Regional_Indicator}]/u; + +export type EmojiTextPart = + | { + type: 'text'; + value: string; + } + | { + type: 'emoji'; + value: string; + }; + +export const getFirstGrapheme = (text: string): string => { + const first = graphemeSegmenter.segment(text)[Symbol.iterator]().next(); + return first.done ? '' : first.value.segment; +}; + +export const isEmojiGrapheme = (segment: string): boolean => { + if (!segment) return false; + return EMOJI_GRAPHEME_REG.test(segment); +}; + +export const splitEmojiText = (text: string): EmojiTextPart[] => { + const parts: EmojiTextPart[] = []; + let buffer = ''; + let foundEmoji = false; + + [...graphemeSegmenter.segment(text)].forEach(({ segment }) => { + if (isEmojiGrapheme(segment)) { + foundEmoji = true; + parts.push({ type: 'text', value: buffer }); + buffer = ''; + parts.push({ type: 'emoji', value: segment }); + } else { + buffer += segment; + } + }); + + if (!foundEmoji) { + return [{ type: 'text', value: buffer }]; + } + + parts.push({ type: 'text', value: buffer }); + return parts; +}; + +export const isJumboEmojiText = (text: string, maxTokens = 10): boolean => { + if (!text) return false; + + let tokenCount = 0; + let index = 0; + + while (index < text.length) { + const remainder = text.slice(index); + const whitespaceMatch = /^\s+/u.exec(remainder); + if (whitespaceMatch) { + index += whitespaceMatch[0].length; + } else { + const shortcodeMatch = SHORTCODE_TOKEN_REG.exec(remainder); + if (shortcodeMatch) { + tokenCount += 1; + if (tokenCount > maxTokens) return false; + index += shortcodeMatch[0].length; + } else { + const grapheme = getFirstGrapheme(remainder); + if (!isEmojiGrapheme(grapheme)) return false; + + tokenCount += 1; + if (tokenCount > maxTokens) return false; + index += grapheme.length; + } + } + } + + return tokenCount > 0; +}; diff --git a/src/app/utils/regex.ts b/src/app/utils/regex.ts index 0b98b0e2b..4f5bbc001 100644 --- a/src/app/utils/regex.ts +++ b/src/app/utils/regex.ts @@ -10,17 +10,3 @@ export const URL_REG = new RegExp(HTTP_URL_PATTERN, 'g'); export const EMAIL_REGEX = /^(([^<>()[\]\\.,;:\s@\\"]+(\.[^<>()[\]\\.,;:\s@\\"]+)*)|(\\".+\\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - -export const URL_NEG_LB = '(? Date: Sun, 19 Apr 2026 13:50:36 +0200 Subject: [PATCH 22/23] fix: remove invalid global polyfill --- src/client/initMatrix.ts | 6 +++--- vite.config.ts | 13 ------------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/src/client/initMatrix.ts b/src/client/initMatrix.ts index 88bab74d9..134de49bb 100644 --- a/src/client/initMatrix.ts +++ b/src/client/initMatrix.ts @@ -275,12 +275,12 @@ const buildClient = async (session: Session): Promise => { const storeName = getSessionStoreName(session); const indexedDBStore = new IndexedDBStore({ - indexedDB: global.indexedDB, - localStorage: global.localStorage, + indexedDB: globalThis.indexedDB, + localStorage: globalThis.localStorage, dbName: storeName.sync, }); - const legacyCryptoStore = new IndexedDBCryptoStore(global.indexedDB, storeName.crypto); + const legacyCryptoStore = new IndexedDBCryptoStore(globalThis.indexedDB, storeName.crypto); const mx = createClient({ baseUrl: session.baseUrl, diff --git a/vite.config.ts b/vite.config.ts index 92a95ac6e..2b01a9a1c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -7,7 +7,6 @@ import svgr from 'vite-plugin-svgr'; import { wasm } from '@rollup/plugin-wasm'; import { viteStaticCopy } from 'vite-plugin-static-copy'; import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin'; -import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill'; import * as injectModule from '@rollup/plugin-inject'; import * as topLevelAwaitModule from 'vite-plugin-top-level-await'; import type { Options as TopLevelAwaitOptions } from 'vite-plugin-top-level-await'; @@ -220,18 +219,6 @@ export default defineConfig(({ command }) => ({ '@vanilla-extract/recipes/createRuntimeFn', ], needsInterop: ['matrix-widget-api'], - rolldownOptions: { - define: { - global: 'globalThis', - }, - plugins: [ - // Enable esbuild polyfill plugins - NodeGlobalsPolyfillPlugin({ - process: false, - buffer: true, - }), - ], - }, }, build: { outDir: 'dist', From 8337ab585b76b8233e997e38b8a2d13ad7b8f7b4 Mon Sep 17 00:00:00 2001 From: hazre Date: Wed, 22 Apr 2026 23:56:56 +0200 Subject: [PATCH 23/23] feat: switch to published twemoji font --- knip.json | 3 ++- package.json | 4 +-- pnpm-lock.yaml | 30 ++++++++++------------ pnpm-workspace.yaml | 1 + public/font/Twemoji.Mozilla.v15.1.0.ttf | Bin 1451584 -> 0 bytes public/font/Twemoji.Mozilla.v15.1.0.woff2 | Bin 491736 -> 0 bytes src/index.css | 8 +----- 7 files changed, 19 insertions(+), 27 deletions(-) delete mode 100644 public/font/Twemoji.Mozilla.v15.1.0.ttf delete mode 100644 public/font/Twemoji.Mozilla.v15.1.0.woff2 diff --git a/knip.json b/knip.json index f1c2ed12d..782522a8e 100644 --- a/knip.json +++ b/knip.json @@ -9,7 +9,8 @@ "ignoreDependencies": [ "buffer", "@sableclient/sable-call-embedded", - "@matrix-org/matrix-sdk-crypto-wasm" + "@matrix-org/matrix-sdk-crypto-wasm", + "@sableclient/twemoji-font" ], "ignoreBinaries": ["knope"], "rules": { diff --git a/package.json b/package.json index 78bf0c905..d43ecc9cc 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "@fontsource-variable/nunito": "5.2.7", "@fontsource/space-mono": "5.2.9", "@phosphor-icons/react": "^2.1.10", + "@sableclient/twemoji-font": "^1.0.2", "@sentry/react": "^10.46.0", "@tanstack/react-query": "^5.95.2", "@tanstack/react-query-devtools": "^5.95.2", @@ -58,7 +59,7 @@ "domhandler": "^5.0.3", "dompurify": "^3.3.3", "emojibase": "^15.3.1", - "emojibase-data": "^15.3.2", + "emojibase-data": "^17.0.0", "eslint-plugin-react": "7.37.5", "eventemitter3": "^5.0.4", "file-saver": "^2.0.5", @@ -98,7 +99,6 @@ }, "devDependencies": { "@e18e/eslint-plugin": "^0.3.0", - "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@eslint/compat": "2.0.2", "@eslint/js": "9.39.3", "@rollup/plugin-inject": "^5.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1bf462b1f..c91be4abf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,6 +35,9 @@ importers: '@phosphor-icons/react': specifier: ^2.1.10 version: 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@sableclient/twemoji-font': + specifier: ^1.0.2 + version: 1.0.2 '@sentry/react': specifier: ^10.46.0 version: 10.46.0(react@18.3.1) @@ -90,8 +93,8 @@ importers: specifier: ^15.3.1 version: 15.3.1 emojibase-data: - specifier: ^15.3.2 - version: 15.3.2(emojibase@15.3.1) + specifier: ^17.0.0 + version: 17.0.0(emojibase@15.3.1) eslint-plugin-react: specifier: 7.37.5 version: 7.37.5(eslint@9.39.3(jiti@2.6.1)) @@ -204,9 +207,6 @@ importers: '@e18e/eslint-plugin': specifier: ^0.3.0 version: 0.3.0(eslint@9.39.3(jiti@2.6.1)) - '@esbuild-plugins/node-globals-polyfill': - specifier: ^0.2.3 - version: 0.2.3(esbuild@0.27.4) '@eslint/compat': specifier: 2.0.2 version: 2.0.2(eslint@9.39.3(jiti@2.6.1)) @@ -933,11 +933,6 @@ packages: '@emotion/hash@0.9.2': resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - '@esbuild-plugins/node-globals-polyfill@0.2.3': - resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} - peerDependencies: - esbuild: '*' - '@esbuild/aix-ppc64@0.27.4': resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} engines: {node: '>=18'} @@ -2315,6 +2310,9 @@ packages: '@sableclient/sable-call-embedded@1.1.4': resolution: {integrity: sha512-XLRcbUPcn7i3QKZAPjIfUkUEXP0E4DOr0dyRoVCWMjHWj28kq+T7jeB2fRr5lB77olBwNHMjIuoTwrv02xiepQ==} + '@sableclient/twemoji-font@1.0.2': + resolution: {integrity: sha512-9IaGNpTrj6d0q7m+Lq6U+iYKwoHQSxyUQB1kox5OzTi9T1eU4eFJLGCqtq5Sst0SbCnNsfBqTiC4s0x85+Q2oQ==} + '@sentry-internal/browser-utils@10.46.0': resolution: {integrity: sha512-WB1gBT9G13V02ekZ6NpUhoI1aGHV2eNfjEPthkU2bGBvFpQKnstwzjg7waIRGR7cu+YSW2Q6UI6aQLgBeOPD1g==} engines: {node: '>=18'} @@ -3409,8 +3407,8 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - emojibase-data@15.3.2: - resolution: {integrity: sha512-TpDyTDDTdqWIJixV5sTA6OQ0P0JfIIeK2tFRR3q56G9LK65ylAZ7z3KyBXokpvTTJ+mLUXQXbLNyVkjvnTLE+A==} + emojibase-data@17.0.0: + resolution: {integrity: sha512-Yvgb5AWoHViHV/gq1qr5ZAarcBip+B27/ZLRsUJkbgAEaLlZ/fof9g882LTpmEpyhBNEC0m2SEmItljHsTygjA==} peerDependencies: emojibase: '*' @@ -6391,10 +6389,6 @@ snapshots: '@emotion/hash@0.9.2': {} - '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.27.4)': - dependencies: - esbuild: 0.27.4 - '@esbuild/aix-ppc64@0.27.4': optional: true @@ -7939,6 +7933,8 @@ snapshots: '@sableclient/sable-call-embedded@1.1.4': {} + '@sableclient/twemoji-font@1.0.2': {} + '@sentry-internal/browser-utils@10.46.0': dependencies: '@sentry/core': 10.46.0 @@ -9106,7 +9102,7 @@ snapshots: emoji-regex@9.2.2: {} - emojibase-data@15.3.2(emojibase@15.3.1): + emojibase-data@17.0.0(emojibase@15.3.1): dependencies: emojibase: 15.3.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 164810c18..f8cf6ebc8 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -8,6 +8,7 @@ engineStrict: true minimumReleaseAge: 1440 minimumReleaseAgeExclude: - '@sableclient/sable-call-embedded' + - '@sableclient/twemoji-font' overrides: serialize-javascript: '>=7.0.5' diff --git a/public/font/Twemoji.Mozilla.v15.1.0.ttf b/public/font/Twemoji.Mozilla.v15.1.0.ttf deleted file mode 100644 index efb3c898003476518a84b373f78216c343d43576..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1451584 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Ä%<@D9|dUQ0E`=?uQN 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%0ATbZ#)ei_TwT-+)gR8X9hc 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

    1+kZwwhY9Uf!Hz- z8v$YmKHXSg*)+p3-Q1S@xTf3$OrMT2Jx^4@vsK* z5CriM1o03A@lXQsPy+E#0`cGh@u&gu$N+JFhq!A)++iaV!C@@8!$zip@ux5shPdBG z=7bY=Mka;vTR7lGriJmRaDYI#-$oY0@Xj#TN4Vc2+;0)?w+JV!2=`lr`)y=i8J`#C z`Uv-1g!?VR{TAVVi*Ub1xZg&W-oo>6zm3d7<4<9(k8r<5xZfh&ZzEIGxCrLqejAyw z4tL^yi*UbZs} zaDs(!f)!aT4Nu423E>0_;RFle&V_L2Lb!7w+_?}=unt5yCK2}7QzWuWEvkI!|lTf7QzV@!U-0_2^PW$7QzV@!U-0_2^PW$7Q#Io;T|4Y zx(%zw2^PZr9pMBE;RGwPG=PhQ2_3=-7QzV@!UDz7$#04#UOy62b!+!UGw?0~x|O5yCkU!owQEIT6C6 z8^Spe!Z{Jb=?}tr55jp*WR)ZY;gK)0HiAFlX96cR2q!fNCp8EsHIa1^ToT_SJVpjM zmH@{R;8+42OMqhua4Z4N&ms%A3AF@x6b^8J0nX0?9A|(7jKZU06do0$@TeGtvzh;q z_AXnp#7=kD3)o(;Y-}*tToQw1lny7Q!%69IQaYTJ4kx9I-Haa zC#Azld2mu5oRkMA<-tkC(4;&#DGyF6h9>2~Nj1@=nrKo@G^r+(HL0YUR8mbUsV0?FlS-;dCDo)0 z_emG-lP=sRUARxWaG$iVOxjl_?JJY^l}Y=`qN&CvA zePzN&CvA zePzN&CvA zePzN&CvA zePzzTCmOxk)TZ9S8!=1CXs zlQyDB8_}eVXwrrIqzm^+7w(fT+$U{PlQyYIo7ALDYSP9qX=9kQF-+PRCT$FpHik(X z!=#O2(#9}pW0DXYo7VeH z>wUhd>5P;*4rj>frO1){N-n3G0TB$d! z)SFi7O)K@Lm3q@ky=kT1v{G+csW+|En^x*gEA^(8dech1X{Fw@Qg2$RH?7p0R_aYF z^`@12(@MQ*rQWnsZ(5=^Ezz5n=uJ!XrX_mQ61{1O-n7(iT52~fwVRgOO-t>jrFPR& zyJ@N2wA5}|YBw#lo0i&5OYNqmcGGgYX*u1roNii9H!Y`|meWnk>89m$({j3Lb=k$4#r_rqyxN>bN~t$M46-WBYvkH(v%m{+lb0$A5Dr_xNuv)*t`PS3UE8 zj}`FvZ>~`u|4HQY{x9e0J>NU>&;Q@;KmY!xLqR`xp^rd^fAx?w?~u%6h@JwS16=}L z1APYi3N$^?;q$j~^zezJ#qGma@TNm6IUPr+czu{o!D~Y?-v<-CYoO0SUxB7TH_*R+ z^x^mVPmg~s|8EAgj}h@OA|6M?(};K;5icX+bwvCe5x+*nY0%4&o5xWvkE325hs{U5 zJdS#K9QE=z>g93N%j2k*$5Agw9-T(LJdJvJ8ujut)H&+qY1GTpbubv`0qruNjoN+= zg@e$-L1;04tk3Xov}U0lTc4ptKfblzLm#vl zdDCK!m^hRS(@2hJBX=UKw2iPri?BkAutJNlLW{8e48j2I(1s9N^aEP-16uUMNx#(x zE%ZSPeb7ewA}+{9T%bibs2L`fcv2Z z#}=GhaBab73%**=x^r*cxwjtN|FmsNZ9A7+QG9)t;tLwX6EwmZG(sm@t{BmB3W%1Q zO3=baZYq)^n}&bTqAj%WkLeR~IelaUTF8;DMzpYj9LrDopt1ad#_|)*R~O1mK?}P% zZHt_CrQl6)wp>-}oQj&|1BytgwM5^o{`m!pCqaOLPDkVof@?}*@j(X(F zs+5dbK$K$Cpv9;`iAV zU$NXsU&JM=GxBez56rv#K;CFMm8`pvVn<_4IpMVFmcqQ%m$Vm z^(eD}B}YBVY+%Vzk9^3YscXqmk9?pKl0HyL;%JO~ppufKG4g>*N{+_pH0sf5G)AY$ zK6GT3&$wZ7fCw#eN6HMq72 z8hJNp44-J3pMy4%BmYS*b9T_eZsu&sk+VY|H1;0JF(PJSM9f6W&9qK&mPCrPBvPCuan#F^n=Y!OwST!xVhkd_$ACeL z0fQC;1}z2*S_~Mp=t?FaIXGBGcPAj7yM!EBU@A$8hVg8+p>0X-Q*g z7cEbsMPt(p|Dc6`(851x;UBc{kByWREW6N1!9k1o<;EOxt$!|xS{tUdHcV@6nAXO? zKk$Sc+t5fZd_k^_mG!l;GOdkOcal>2Yg*W4nS@v#x`h-ZO|CopphR6&81S?#HaJzX z4NfJt9W=2Gj%jUhOdGXrgJZciIHtA1F|7@bX%QUPhs{j%5AN+uG_9S9rbXY_prdbG z?S(#HDz~WMdRRXkmkmGJJs+a=B5;2DFh} z_?($iZG8o+445<)c@kOVNo0{HkwulKKs-u>`OKGP!Hw2glFG@@BSF69m} z1Qv`TFfoR}#25k-V+c%)Auy5aUWL{~u6vWnb#D?QYBV3Y>FeHTeT-PrdK9;IsXA^k z{O^n_g`hQ>S4kQn1-$q0mrFGnHfkHeK`w#=ErJ6r zf&(pr!?qS(HZ6i<;!rYzW621Pi7}Z?jLB?bbP-~N5n6;1T7(f=gb~`vMuZW$2qUxz zBRh9&2ZJ5n=ho2=@Q-G5r0gj9X_<2sC_02!eiPJjjTmQsqeY^ka!ZCyY=TXMGtY?sdM)C?8 zfesph4jPk9w7g6ZjbD$#ZvLVaa$z?&FUdg*pL3%Mx$qA;7DLFfdx%D^@P?K|azGNv z0ZEK_p)>jiZ6p_dBNu){V-bg87IDy6#6e>bi^jr^xI$wp|9LDXUr-4Ihe<9DQ(1u7 zE5PA~OM4X(zj4$_?oA?bPa<(oBDpt-1T=^QK4>F30v~b&K4=6!XaqiJ1YR@-lE4?5 z3uhKh&_;4hs*r2@=At{=vRI=nv{BnOF1`^l{L4ixU!a8zXki1|$VMA`+ihd-^M!VL zR9ZWcDsd>;PNXUsK5}LeeaUkS^%+|91zPk4+Ndw>JhC(GJTk4FN3QWpb?ay5zwF!l%O%VL1S=(#^4rOw=jd&`r-j^?cROWtP|>c2|VE~;7&vZ2%;)a|6H+ey=$PMYR4v?yefrtl<9LzT4f*_%$O zERl=zq@;zum`cb+RhqO>+wg_95kF`VKWGs@Xc0eXZTxb2$v@ND_?g!FY+CEHX|2zu zwLUvfw{yre?Lqhw`$N*gm)IYWWBP{;FNtP+y-cFN$b}7ZTlg2b61$Nrp~Y1UG{z(R zgQguQhh?TGE1^KHZtNBR?SgckD#TFe`0F>j!a z?6z~=zQkO2GHb^^e$1zH(86bE;WM=G8Cv)ZEqsO+K10)PIA4yHWLt7KKv!}AU1b7v zl_@}02WX!J=)w}90vyn)<|ZRJy76EJdiQ~XH-9hn@rZu=xZOQyERvuxF+|IS6Ep%Z z8b?;44_fGh7Hyd;IfT}gbnBaxO6{a{; zc!0JIznH^O-2>3s4M0aCGiWFHv7O*dKGEWm{2nv{8Z;(Q(3n6$BRd3*><~0EnrOcK z)}jm=fe%{vN89iZTKESo{L89KHlQ&fMaya`Xd}7SXD<#WT4`%qJ07OB`do2@zN{pq z586nsjg^b*u*=n1*o7AQTyd0R49yo;9Ny98j0M@zlgN&qM0WHfvZE)F9X*Nc=tyIGUElZ>4k8y0LJJ3>g@e#y;Go68krBgZXc55NJ{9P=*MaGq*9MX!bB2vUHuW9+ z5i8`v7ibYHXb~%D5i4jBD`*ibXc4O{7t}XsG4Zp62)XEoONeI2^9{KnM=c%wg%qO zL1TDDBM*f>XrT{U=z})W$8?d6Oc6ng{vsFs%}QKtGi?Md`avqusrFrRUT#Ao#YRf9 z4JVOpIEfLkT*Dzal8eC7HUbMR0t=126E?^@h2{;nop7eL17KP^0KNnZ8Uxk(>>Gev zpPh@s2Dw9rt@9~YbJ-)nDimPh36L%XSa<@gwE{RMmuhZX1dsppDwLzW5S{At-iDYxSAd>g$G2ZT%~}E=iI`mPlgT6Kf31@w4DP z8b?o%Yols?ETd@4(hnL-KWHp{(YUB1vn4HhXThN)IWU`(1Cz)FR}#4tNg@|qN#uen zi4@669Q86rAung6af||TF$&OP6rjZ@K#Ng;7XERC5_2}MWaM97$pkItF@<={L}(EM zXrs0f1LPtG&>{xVA_nAvm^W-pzNA-2OdLwa46|hT4RJ(^z91KUffjv%7JY#h;|Yx_ z_R?-x0_+_E>`?;jQ38~-1-PUYprjRGV-%pI6=1^>V3!nVedBT2c`twLR~+a0G(}aY zUM8F8)j`9dtNN<#C@;{<3oh!9pHdq%rlDSh;nN|dSkWjRJw=kp6iH&Jr1^-(42j0f zkf1R`g2oI98Z#tl%#fh5;zjeSXhM@W^xZ=)e5P&q42=q=yj|j#iKkahP(lbWI|M@P zM-G)I&;64HX(VU_HfT5*G@J|?fejjg4H|(B8i5rp(`L}Z=S-U+7d|5wK0^zip@q-T z!e?mVGZT|kFJC;@+t}v>4!Q6dx$rqJsMHo(#Dz%{V+k#6xJ1+Xls?la5|YUJOd=^f zi6cAVPnLbrIQooSj1#mNCulKF&|;jRv1nzNR3BppE#e9-`UWk0h88|U3!k|r3cJw4 zuCJY%dDNA;r5~oXzL?hfVp{8q3($6iE3KUil{l1ahuD%MS{p*kh1*#pt9#H!Znwj3 zeeJND)(*Qb^uiamtTz0<6mEyfw2@r&msAlp2C2foMuxsYs<7NhU&N2LG3-=vVFOzD z42?QpvF9q%+jbITDp;~j3-w3Tp-!$HQYY6ANsOV-3)>Kk@E{lAffnI`HnI`Z3%QtH z(DV|ryL=(jWXMd6L4X*804;g~EqVeidIBwa0xfz1EqVei7K-y;vrp7Bp2!VOUNIp| zjP8w68noy#wCFOl=rXkEGPLM2wCFN4s_F8+nO{ze1*pIUsIdg14F#7tTmuMj4Isdw zm4KeYotO2aYS(La02JfmaCIQS)qw!@pFryYSa4Wn_k4>rWaBPGq$|y zqgIfb5lLf4B#{}BL{dZ&NfAjTMI@0FkwlIclF0Ew5;&7ylCfuX)y;(jOdsc!8I|WV`9t! z6JrjT7<0hHm;)w8Cn1uj)NyDLaA*;5Xc2H|5pZY`aA+f6BH+1c$-msRM5ENFUI|(( z;=D`Dt;gt+m_T$W;1f+DNXo>sqm$u9enK z>`EL;wiCNbwiCM&qk|N=;Uu(?lcTonB(#xs5}MXdLettwXj(f7T{Oo4aP%2ILkpiN zuG@*!{oJ8}^0|?&cSNI*4!abpp)ZSEwap?|G!{-Tn?k&>6AkeG(s0NLKifKHfSuDps`$n#&QW7%Oz+mmqPOrVz`6W`fRz@ zXVaKIYRj?;ebC54A?J&aBn~CXS1C!pN+KI^64{88*oM)WBf6MbA{w_t<+klmnKrV~ z4wdEFp)xIoimRLmEwmUaXweT}At__2AJC#7(4rsEq92(hq%Si<&|-=p$Ay7juf^qz z0P9UJ(PAkJu#^QzCIVcv2ykJLM~`}ERQ|dUG-h4W*iVx^2&{&&68`+KEQX;c9)fQU#mnY~jQB39&%@DEz_4O;jIE&PKP{y}T~bN+1Y`c9w`t@XuntuLmvzL>^OUwUa7c}#!= zCBWf}02xkz)KvhlD4x$FALlK4#=ag-DtVVT*7y}?Ot_%Y!JyH>pwYpg(ZQe*>_YST zZfn=H)~;z}@A8g|UurzP@S=PY_23eewt9y_KE)I?^yw7@<-4s1-(8D}@-(x50mjXs z5ehx^>@rSg1W6L~?2pNs37%^(T>}m_$;45?OCS9QB8x4LOE3Xbf%8SVut{ z*=3!F95r-#klQ~4>#1%%$n6J?7%M$com+CyMsoBw@r3{BLnH7a&lAqQ2BgH{>U>wx|M>$tbBs_ z_~A#b9=ziRm-ylxyk!;MG1{F%^5ojTNS^%bm5}fL5b}*2LcW|9Vk?#PlNYUc;md{G zQBuRvNbN5E@5-sI}%avC?6J1gHOms!%DgBDdXQEGzCl=b6 zRUQ_6MfLFd^wGw%qLjoJB=N;Z8`9E_!^vOFMhiT&fY8E-;WY?J5R!~0IzdP>wrFWb z`t$*!9Vpvj0UptH0jB=7^X2pbLMI5FAasJz+0L`m2M8_9I{MJg!P5uFH1K?o^Z4d? zGK}dp-WY%IKX0)?7yqLr0p_6e(5`=XSl8hgc zAS6LZGMY%n*d9PgGPX#@xF20BmdG2aoslAOY_tE#NS+zdj**tVBM4q(z+=n;BP3%^ z96{KNIbj}t#+*3DoH)j~A0r1DVF4b#fUp44iaW;G8lfe|);zSpOD$Tr$Cw31=!{ul z9y;Nn6O=lYiQG<^$Vi#UNSWwJ4q-GSqnJmO{9BObQq0ez=VwW-6)B5Xs4QNgvUr8c z;uR{3SEwvrp|W^|Uul=Fd6@+Bm`)wjsbe~IOs9_N)RE9*hd}}{NT8Htkl-;$AO;CU zPhyGJf>QnRf~Q}G^vjTb8PYF9`ejJ44GFg4XWAw9=BCGK*0D#{u{Z35)5jwLMVMfN zl1H%N5o{2_1`%wKTtCI`Xr$F?q!nQ#UyS67k$gEtcJ(!Y)|?R*sCBUb!U6~jAS{5? zTkBMBjnrEsdK(q9uSc*RnLe&gPDUw-pRo&^Vi!0?-Z!G}k=sv^+l{bCrYC}t_fMdd z#4~tA5JUt)L=Z#-qfUq`tdkM;V%Ir==pQI0@ho;7x5Km8gH9lH#vXKvoy7>r*jdcO zdh7zH*aeL6I(C5*X^L?GVUJY>50pG~!jmuOSbyhOIcH|MbQ($LIVxA9t|m5uQn1(6Y5gQw|tj%8wm!?8@xQ68OR znHbRyo&swg*5P3tq$y@eP5v{JpD=^40Kx(Y3$aYjQBE7t4j%1d(VSz^7%_C;%h1`F zMrh4o=++E|?t2+J<-&8UGb6ek>&!gdk5zXD(JoeBS5Ef#|nump0vgT=wj5J1awUpT%~CuOu|c(8hWeI z&>Ly!jWqN|8v1J_BO|&W$;do>i4=1M(Js=+HPVO?{ey>25d8zuzeqUONH|95gojQL zIzi|pHECI2BW)R>6COH2=me!s#v#((6-1OG-I<34cvt{o0hAUP=}4N_NSfD3j7Inp ziP1cKfrl?7F=7Tn3y7G3&;mjWi3%+sw1Ch8LQ5p0D=2wbfJe+CZCxX68DS3|Ix}s7 zQYYg8Pvh|E1XmJ((LvocltCjIG*TywWY9Nuow zbsSP5&SHjcMas2kO42PP=@y7?f#?>9Zbjn$jKpn3P$N~Fhjn;Z2Vp&u`lpk6DP4@{ zEj;W+PW_A$%Lwb_I3@;&;2R|qgD^1&BD|n9K?mW{K@i~u5nfUy)AZ&or27bdMh9F`HB8DJh80q*k(yYtI+jZ%`{B8i_M z`~=}A2tPqYp7f8`AiM_QH3(lo_yWQg5Wax$h4ha-5cWXW17Qz@JrMRlviIdJrKBGt zSum1?FVduZF+vhvO3D{Y%9pQ5s7ADdM>|lqQy<)pK16!`iu7uPpYX633H1x46S*Pbq>ff@N$P0jmZXkWZX4@p(GSnv$1A62x%uRA?pq7W&6DPor$Y?N zosIzi|p zc_9fx5|olyhlh0*64pWJ1fdgzPG&jnKx%i3Id7!pSdmgvh1pUT&6GtW^}NL{oys=u;3nM)Bn!{7Wj*F{s6X7^K90%bz2**J<4#IH|jF1%xjk ze2K&JTO6Jnr6gV>iPz*HEP!Yi8R-@o$q30PGjCC58l@z@Ac-&JAo>o%GZ0!LKiwif z8Korlki;H{5d$$|AVv(th>@-E6NH~pu-&3yGs3ed*lv_l=men?L^}{Yid=bft}I8! z6|v~dL@N-jpwvp7;1MSfaRL!15OD%AvojxqumHjW2n!%AfMnsDtgapzsYgcYk&)~f z$=)|M3kWSBw183zenxKij@)2`&d3eltZICT75^P; z+z3D6p%a9kApDH={~hb!2rcl?66@cR^cJ3Gfq9w*M$7^vHP5~yix|s$Q$3RMtC4RV^t9e5R#yj zqz~}u1BgC=)Q6u~sXweZ*)x(oBk45K8Pw0?BP1t3DyOrrq?HFYPaUm1+SwC_lI79P zUQ*{|sZ-}^NgK)OJT2u$ebISZ%IQ2UX*y3!T6qj}cDgw`1L*7wptCc8&dvb$!{hMn z=kb+>Ik>tb?RY(Z{L}sS;|~119SY>j18=uD9N)EZ_;|m`;cdT;Z?`zT-QxUqi_6(TQK^Q9KCF}>6xwt$yf#1`;Ui`W8QYC(1K_`uQp%ie#h zOfH}s)*qF|KR+ss|6_-T=)7u*=vd8hM~!$dsIiIi8|07N{%P&~?6}?YcI+*pYqxve z3u;Dg|7qR+v*UKp+p)KZuHEi=FQ^&0{oA_zyW@7x+p)KZuHEi=FQ^&0eQ({q@3`Ib zcI+*pYqxve3u^54f5l2G&-&E$_rDCOo!Y*s{OX&Ey4%#gDDywQLpG;}no4!;p$(3l z-HWvQ2bo_Y%N0y3Lg}$5LVdU=!Y;HYLUpnyLUpnyLUpny@F4n^ zB;Vo$;Fv}nj%frqrV-FBPIDW5{80{r^h26?ylGOrr9Hhe{rmAQDO{F2a4u#pa@R~!sh8f*a-6+4`UC+VPhN?|A3N5 z%747!bZduVZ`l)JZ;?n}I5VQ!3im`_&=T&B4Y5P*87i-9J^eghuv&8xpj%DK1U;`^ z#Nv^Y06R*?IZ5rvNq`+C@5-leJx$uNP!E<3JBn{_&E_(@)Si<477u_(>c}a)h6fNDTg1i;q=z z)x4tT*iMiQTQSi#WX><>xx65AeL?2)1(}%m8$Q1$O-q}P#j+visLJ`UKonw z3qx^yVJMCi{d@gl!`c(!0%T8w3y?jL7kuFYWKRnhAbTQHJGcBBn}2fi^~mEjwaz8} z6_$Bu2J9#qZ_H}P#thg| z(r?WFUePXRh+VTGOOezD_IO+JJRA(1#w}@VU`b@JN+P>O64|Sg$OUE)IrtA62me81 zTL~J8O0?y)V6d(1iI9VKMaX5lGOy?%m+k5ym+i`sJ@#a%tM^1mQ+pyW7$QyWX(3JR ziIArDL`YM6A~7SDqm)6FDJ^4>7|9Khm=PN?ujq*xv7sks#D+|a!dNC|#8@PTdo1#T zp&0J5mKg4_NDTK_qz-p;<434@m@R`! zO2+$-+Ohutc9e|wAGKru0qiIl?>|4=`%lMeFA?J|upbboK1R9=v@$y`hcg!DOvsQk zAwv#ifE;syI4lEkkORtg9OS^`AP2-j4v2#s?pfnP*!Q!QdtHBwl8I|DaSeoPAY23C z8VJ`wxCX*C$}_BkI7f2nrUN?=zJTP*pSVfxPuwJDB%Ma;-=DZ;)d0P0wcZE9gtPls|XxL1;36E}q=q4z&&`o%B6GS)TfcZ}xFdH%aK42~r%shO7hc6&} z0pSY=s!RVL5Ydi9 zwm&{(Q$#`d0>T#%zJTxrgfCnj5MN&_$N~rpAS{5e0Kx(Y3vr+DpSVxh2n+DA0Kx(Y z3!t<>JmC>fay8=z!U6~jAS{5e0Kx(Y3#42k2*MtS{(-O#!a4}+AgqJ14#GOA8tWje zgRl<5Itc3^tb?!)!a69eYqtKz(`-ia#Ynyw$rmH}VkBRT#+};hjn;Z2VotAbr9A;SZ9M`+(B3eF$+Lg2VotAbr9A;SZ9O6 z9te9N?18Wc!X5~FAnbwC9=(OftYc%tItc5r&HTo1ibgCQ|H4R@fT#h{2@stC(FqWp z0MQ8$odD4Zb|kEWaLp*0xCRr~K)43NH4v_Wa1DfOAY5ZB!#W7pj8rQ4CC3NG0xq6{ z@DzlnAUp-(DF{zNcnZQ(wmm!r;i(ax8saGsPeFJJ!c!2Qg76fCryx89;VIiEo`UcN zgfAd`0pSY>U)U7U2|_0boorx8f{+BIB-Y_!9fWm|BH>SM%YuEEvgxkt`Uc z1;yIDumA8kD!!kZ=VNB<4-b9pau2)Q<1Y8K%RTRMFaP7p=i~ME+1`WwRO0Yd;`mhJ z^i<;fZ{=xo5K^LB4&modJwDE+e5^7*hWvp4U1`B<(2v(+dt!aqV;=XIr#+^g>A9c( z>G$K~`dR)xmVYnh-`|D)$(+@*N$VD$ry^Va{Ve*PwvfG_M?1B43*9t6u(8=fPcyyK z;#}@kn7@?H-J|n|ck12SGquE{{Ch0_Udq3}3;k0!dap(2*C9R{mw!KtqHWR7BKq_A zSIs_kca%Ti&eEowAVGjg5Fio+hy(#b3!6P!q7b-8A>i*|B1u`Gt-(C*&8iS@ki{Di z-hl81M7jczu0W(KkhTUJ)YfpPF2GX|o*E?+*I?or2-iTk2EsKEu7Pk3glp6VSO*a% zQ1Rs)pYf}xNLG}R#p}u|URPASuBdo@j!y$tgaxi&umHjW2n!%Aa6M7_clM_N(FqTo z)c#0<;8B^w1EB?!l6c0{rX7fOAlgy?A_+ngl#*Czm&@6o_@iCBTq-Zy5i=x-8HiB< zeg3;S@1H-uxNH3TK%MrnK|gHJj~n#U2K~H2zx)^Shs-$p^Elm^9n|l_bQ453L39&D zH(3@80Ej?>7yu9!Kv)1_0hAWXqCESXhhAzH5l$1&& z%N+MNEtyx5`psiZ;4!N~$`bybb`RlgdjVg0v?I3>PY~@u*aKxd`Ug+>(%+&W@>lsq}&ln+^*2OQoJJBYr=o>M<_tH~96j(OOFhdmJX*h%O+h(3VmI|!X1bb?Z+`rvP# z%7T$B7|DW>EEvgxku1cQQ_n`|jJ?V{bjDs~Uh2f_*sJ_?R4l|^WgZq{uQCq{v2*#W zs_2AABtYnlUCrNEC7$eDXo+3Tl4yZPJVAICdt7{*^=yP^-s8%wGY_5cQYY~wiQzQ} zuR&M<;WY>gAS{5=g4T+^42!);ljdPB(xkr=OS`Cy&7&PW`~=~rlcu5sq8*5KplnC~ z;L*RRq5UmbA{aHad02pVew@RfPkuST=ls3X@*992gWY46v;VD@}LZ*YG+aC1KE z1ydMDDX$ok1zz0K0+fn_Qi1Z@(X3Q)(QGv$O0moNGssBBPG%mnF7~JRDDv3|_pfbC z1c-?M?hD|)0PeG?FchEVkt7!9hvLw@d*D2OBKh$nHYNlxA%F=1Ot9l%;;Vh?2@_v! zF9a|lfC&Li2r#nKK6*|Gd5C@ zVx%I)AKk_mE^hE8E`uzIFL4=U9=^cC7ZAS0=HZWZV=p!ce`cFVz{5I-NPw^o!g_2h z@p%iJo?V% z1$_WvAu_c;@|`@aN22w|x{-`TYaV_&(JB&NjDgSs4|`ssk^~_MLedLYk{~2ODT!xZ z+-es|$e-D!9lUJEtb?b>`*YcfwUK=B2eRQsS!tf^`LowZvU1P@LNeBozZXrrnDg~} z(IvfIuO+SGyGpA0JJCye11P-#l->YJZvdsY88qq52)ARgn5TdmmG^m^=i9@I8|_}4 zG-dpxDdQ)tJjmVY8`)5Wo^8t;%DT4Y0rHMk9t<~)aDJBEV*W&S6HWobDL^;{2&cgP zKR&AVD+Qykm#+Ti%tipGIMszWwa| z{Eo!tf^tilv&@DvKkECMGAE*P@tOm6yiS+Ko$}yvH>StW`EH!$a7Gueot6|SPe|`; zxwJz-Xy%Fd>CC&&KK%DhjMuFXA5Zwt+8>{^KRw}}pYWgbJ|@Mwd$Bgw>{uIX_7mIJ z{m6grv%mJ)u`a7?^V%Sd4qI3Dc+?j5c+?mEv-aarU)qmHec_Ksec@k*vtr?2pYT7Q z@V}n$pG5yj_m5A)dwde!<1_tF!h3uY-s6+-9>+7ghJU=ODto-DDto-DD*K7;@v5q= z$E&Kcr*@NQR@Hcu_;^eD@PCgo?esm?efW4!{7vo0_q3nh6F=ec^A+VnOF3bcL6=oQ{DyiM5esy?ukrP!{e?;H9QuHYIrR2f}!%hpnZSK z`-1jG^b;4w``DN1w9fd)&#Qi)^;KTALgDroZ4Q6Y=J*$F&VSM7@=hBc?EFQW!}*O^ z`^f0yZyLQ7Z68PdMUPH@(dMlY!neN}q3d7x_W2iWzW$=k^vzI(O(W7hw{zW?pC@pAmf zoWK5K%|HLK=3jr=oMjl-cDye5ag^n|3;tuXAlK};a9p$FOkiQ(_}wT^x(58XC?D|S zqI|%QtKv03jua|;@)vgFptWHWnmA}}*v>`6$j#TDDmunpTi9`4vDSWg)_xqCMSq-E z4D`o&#eg5@6$Acw=okBO95iSj$3X-B*4X*9xIIl;H_zjs0sl#O^EhbG{z-U`aUip9 zKc2WXdQV!9S7mKIUhGa&d0=$r$`?+I-Ohql?Q-F3_Th=;^=YW z5l1g%7;*Fr@PIS*o=x7mwitQwaezLR#A08uQh3+Svi+Y->#dS&rQy1 z)NE%p$;?=Xncl3Xj9YBlm|Q)Ps~$g1)jvO%Ke@HD770~mSG-m%uZhs1a-$9*~9&!^hru-T*^v)ZH|v&!g~MrHJgp)&eOwwy2Y(|qCd(|qCd(|qCd z(|qBqL+Rg7x{O_$tUKcqm#r3kW~i$Axm+3jK5{wwQQ>awEsQ>wES!Gq7fv7Kh0_Ol z;q-%CIejlHqwi&9tb0i$`#D*UmDXLM#bMojbGF;8yYDvZ?whmjKAe8JRG<6hQW=}7 z`WaSR^pmwR*0IN{b?jmEv9CvSee5fvkK@AVW4~~=+w`$t+VrtsIQ{xwIQ{xwIDLj$ zIDO12ryt46=tr_L`jM=RO&k5VTz$v-Dq@wf%~{2=wpqopa#k*zv+BJWtKOTjsj8pH zwUhnin{Hfh^pmeL`pz$me)27x?KXYDmNtFB7Ea&G%IO1E8GXPiV^dWhu-c+u_?6L5 zu*&EsSY=G*Ed?$Sy4(Ks#N}1b?0%P53mN!DLh~iynEt6(8m;6%f5!4(dezZNe%jD; z+mOF~jrIR-`2YK7C_mRE8}zaN^DZ`&pL6n%KIeoneLDW{I>XTeIF9rDV~GEpE7`*P zc~$VwtAf9;3f_ml&y(tZ9r`}6=SL;`&yU{)%9{$t&A-PXnIECqkk{L^`YAIXTW`q! zjNO}m#d^uTKO4>cojLceyrUt#dMvEc^D*zb$(x^`DZKw{9oWa+cZJtajPG}Zf8G)P z^N#TEJHq$RS33B`3scH3f?6Pd+3x2r+x_{=cE5kwPS31+#s9k|NKD#t3OA-_3SQ(h z1uyhW!3#Z8@IucN+|VNhFZ4{o4LwqDrFSW~p+`!s^ezQA^s#)Gf~)*om$Z4X(g!K{ z`&Ge6!Fw7b1@8$)3SI;=1-JB_9Jh#N3U26;f*X3I;D#P4xS>Z1Zt1VN7b&=DzL$a# z8>Zlew@$(4jZ$#sy^?~T2}cTkCLAgFnQ)}wXTp(!H-(?1;5XVu3Vx$qq~JH&MGAhS zU8LYhRkbARs^Ep5DY&6WN?Pcdf){$G;Dw$kxS>Z1Ug(*E8~V6kT?(%9^T|}Zf6cu}!A*1itTldH>6$mHf*0O81)DcY!Ik$)3VtRWDfpRiq~K@5k%FHIM+)8) zev*RUXcsB?jdqcO-)I*p_>Fdvg5$t}&vUP;;Dw$kxS>Z%TIiXA7kZ}Pg`O$6p+^c{ z=$V2WdZge=?^19>AN${>;40r8L{xg0f){#L!Il0j1@8$)3f>cpa(PcMQt%>}DY&KY z-Q}9C16ui(g1vm6a!3#Z8a6^w2TU}qg|xnH`?9H zM?B`U;PPul$+tb_^R%M;^pvl2PnlM&ZY!DFSKsRQdqw%vQO;MrB7O0Brr7=Y&y~1d zn%;_kHsbtNxlkJBx@C>iZ0LXE;GD=kenP8%whpZkEh0|m9duD z$gMnXFdqzcGV^A*qVzKJ2H45W2S6QV{&Det$U%JkhMm9L z^-aEewewGjE18v{?|wDRZ&d0{uYNLIsr|ER(r*pr69ArwbyMi6+76QHjUY^neh&OU z+lZ|NB8BRyT3*TR`y=b)$~+;|vwaIR57qYU`gkGFRrY+}EIVe`8$_P4dDx^=K2Hzz zqI(*R$CF-^=DyHZrFkdPtKx5J=dRONwR6|$tK!^s`l>ijc)Tcn)RQSMO7mpOi_$!q z@}l&6e)D9?i@JF-ly>36S`}seY%nCq`F>fRhvMIm*HiSbH+b8^>0JxwcN<*ZZE$_J!RNaTzTRyxy*bdw zHx0}+c(a+*nYlglj_(fi@okrQ0m933j~6VwEdQ>4Ua;`8{_C4#_W7p#*PHTDd@Mt} zQG7(5`dm7yy{F>uNk?t?RCm;dPo<+ad@3Ea;Zy0awm?IAF3{rjnjdZ1G?wArb}{c> zd~4%tZP-kr+^joJeQ!HYRZC@k`&_&~K5D?RNECQuktp!SBE0Kz&zHE^t#9Hv`D&JT z2uZ`59c#C;BOR)#KQ7Xy&prA2(9ydMVi$YG0m{auvTmHmtW) zzShX^SNe-Kym|C3JG|%htv0-Q^sP3$dGxI|yy4-kHj$k@hFb&Vvi+S{(}wrSzUG_T z@IKl18vT`}qh50Qo~5_Ol|KDVo44iycHWu`wE3I4z?(?k3S3-;ZqB*(@FG9`*dAWI z-#iX4-ftd<7w{@%t@AYJ#fKVfj<(zDf8OBN^ZmY2-nqHO=CzEQ z>^R_GtXsR^nz`AYHz#iKpEw^C*V=mgKCos#vCYc~w_J0r8PTB$%aiWw>2s* z_5NdXWxZ~_6*XFKMGf{=)L?H#4fa;lU~feY_EywjZ$!-n_(s&s-k8gky)l<7|5VJ)|Ye~#(}B)aab#R+`7KfVcfO(hjV^Y z7n-Jc)^bZZS#6v*>i3$CTOFtQ6ZTeIXuah+?D4{@zKs`NWydd>%k`Za(Sk?9)_u!z%*PHFd%x0VQb)a+EUpB}3@$Kg7u&wLeT9bd;tS_SEjWKHmZ+{su zcw@|f!+T){9Nr5v;P5h+HHY`YtQoxhW?_8s5r z9p;3qKf&u|_MxBP z3uhe|w5@{=V;y`L>)^xKw6P98E!M$@u?{|rKKSz;_}n6*!IDPjk zr=KsC(Z{7S`nXg^AD7DL<5C&ZztC?;dR?Ag+cV|MCF|>pdb%InUeS5*xu^TV?Vj!j zw|lxD++NXnaJ#4b!R-~D2e&)=T#pRII(8u!g@*c|1b5bvc>-?F|+n0y# z;w7HX1$iF(xgf7EdM?xU3O%=n&0@m}yzf-m?eL0&Y_oA$%yYkK!Y;Ba{6pAt6c zJY3$Z{pR8F6`hC6S9BgOU(;W6kB7@w&HE<^^?r{Kn@=3u7mfD3_Tlp6`I$n!w6o*w zKV1HrFb|i%Cd|X-uL<*T`D?=W*E)!@cZ6T;pftbOK?%RuK?(EpJRR_a>qjsi{cPW) z`gS{>o`1U?PtU*Ij;H6}Zufp%F!9;$pRdGI?cR@z+PxnawR=A9!c5QlV3GG5W_$Up4;J~X4;FgX2Ms;ygN2^;K|_!FpwhegprOZpU+Gw}i= z^&2lDm##%D>w|_K^+7|A`kUepJ%kJgLX z?)+e(XMNDnW4~PJSsyI)tPd7?)&~te>Vt)z^+7`)_p7T9s(g2TQ0ZNL(9p;I?dpRn z-_-||KG^nS@7)uOi}*dk*n9T`qdpi5vO?N}hCRU-d}J=asxj(=#dOvOEq!MLUc|CK zXy{QNH1wzs8hX?R4L$0Emj0T1Q6DtT`LlaPvqEa#==@;et?L8xM)g7Ey;2`M6OQ`e znQ&~M&xB+9d?p8FLqFxV;|h~`AL27M!TpF-e?#5;2Z6t zK6sVwLAr9OBj9NXtJ;iwOu3CH&NOgQR; zZDD49yNf>)ezAkBfOj;%*g#9Cj=y`t7&||+`=vf~u^sEmSde#RGJ?evnp7lXP zkNTj}yZWG^kNxlJgDT(E2bJE{2May#KdAI)^}(KC?7e$}Q6KCH#zDhakQLJI=6ixK z_{bV~Rb$k%i|MQnTKdigyohCe(9okkXy{QNH1wzs8hX?RE&Vn3qCRMv@6`v04eNu2 zx2_M&8`TGu_ey>6OgOgBXTnh*JQI%X^OKM_(r>^58h}O``{bx-j54&pxv)uvZr?M$Ay{km-gO|3-d*g{8fX7!dDF{rGC|*r6{vLK1|G44H_nI z`fn+XxZdDDX0BT{a(rl@p)`N4ziQAhn?LzRKtpN%Y~KC9YpjvuZU2iBe8Jc6;DT*Yn`6rZv<4$^F6P6C4Nikw!BWsd@taN!Z!jICEt7_prP=MfQG_10$R#5 z(|jYKY0~eodhb61b#Lvd+EtV4{WJnH`tkjlz@(1|*oW0e$0L)!Av^t>a#Z;JPmenV z{D!5Ef4wGh1M|0TDbUq~z)uVQwBWY|cPag8EqzJgr&TI|QUR0-pj6;4_x}{7JcoVw z7!l7S;$=juI z$U(#Rqz#ED`5uzT0c|8lzoYGC(3V#;O0K?H_59I1r_ZDOdm_BMa#w_RVD8GiqUWgh zZSLwhy&!XbLFV#;%nK3ZRhfG(zo3OzW$tO=RhfGtyr5PhesApceB2uFu}BQmhDZ$f zhRiE^V!$`_@JiFYUcDf~TTl12#8CQW64zKSp=B)c)viRpra}qmR|!ZryaU)>XEXnN z|NXd+dB?(QmHf1VzF%jgWZ|uq{ArbV(;g{VcxxrUtrDO7jg&0BwUX$!FAqja7M_%- zTv${qiak}bDpALy_OZu2{D-oik6Ru-cDeg)kGpM8yWI0G_p-~q?s7kOxnH~7X)lnw z-97FG^0*twRNb^Ipr#9+PjzjVBFPL}TXHp4wG>BfIx4TjnZ&!CVC}xT~2M z+|^7B?rN?DcQx07yP9jk-HpX=hmNcD-YQ zWwL*%e8gMx0v-NU%R77|?6}9|o)TUXUK4&M{7N{5Q)%b;5zJGdOQ36@&p=;+rn2pR zev}g353vtuDxOnL#dFfGgSMXon#wZTE)~qW$let>l#d|nis!Ffd?-nBgL&LzDlcrb)K0O% zRMOaBDrsymce|qN|Id%6t~40cl`CFTh{01`X|SVYSXa_cb)~_Ml3`s*JJpp2J4%+~ zZ`~c$l_*)VXj5yicv4cb@yyewIbDhNRLN@X9&|WRr(Bx>NH7v1IqCf1GiV1Tn4sxY zAmv!-k{d4zGRmHa&KA(@SK4X*ABNpvag3QPjxm$Pu`t^ed@2_Sc1z;T`O65YbDHLDOqOfTFJs&D`6H($#@p`JSow9J#+!+ zsgfgtR7i$0F1(dm_{?dm_{?dm>aGdm<6taTbo*6o*0cHwPX+ z8GI|H0lI}c=C%1j?MQck9VO#UTkS}9fE^{{bfTak^7G(j8z&$&w1&ba(1n zDBUeo$!e!Pmt5jcTeLI=i?ks*XzbEKW0wvZ=_P1qCDwDBSOrL|0wh)e603lIiuk;= zj+386OUHwT<3Ypmpy7DXn8`sK*(EQA+^0HyX*(@Irv>P=0G$?~)7Lih=An+FGMfKWgKAkh&@B>z!DkndNE8J zA~8%GGOy@~F&OK4K_rH0tR;qNEE2;s7KvdRi^MREMPiu7A{;O=Oj=0VQJOPr1&z8kX{4ZIqj)rojiCx9I#55hbs&Fiq(26a09c?;J-gaU*wAbbJg3kYAhiH08emKt5hf>^S;lgIL^ zJw?kCqM%W^1TFN@mg*?vDB(oQnm1_Cmf1%oq`QW`HQ@xPganv<0?a-EW*>zb;c?lf z@Zb_W3~K=D7lMkUkxHj8opJd~czM{XYu8A(c)KFn z@ODMC;q8iO=R#!J+}fQ>htso&&)M6ZPd~A3Fm)if!PIH_22;O|ZZNfbed#nz*VYE3 zOugbYyB9p|UIsf#hPxN-w0jxsC>icvwA1cou%l$Sd(lq2m%)yb;qEoJ8ytu?RK-t= zl%qr~=UJvX(KBMYAG^z=c8aO2{n`^bu*mmhSiyTDtl&KnR`8z43teIb?`dHL?}@NH zC9)*HSb^p0lh}<#bVaZ)65$=IiSUj^BD`af2=7=V!aEj;@Qy_yykij(z;L`$kj zG*Xdhq=MB*1*?$?RwMQ`9f_*^`Vvt21yK0~Q27N=`89*$J~G%X1nOirk&9qTPe9#Z*4Y%#aE|W@o(c8A9Bpx$K z9XgMuBnEU@P+LULYm={dl*E7?CF8wB?bu5IJ4(iTiQ2K30Ctp&_Y$>ZF9GZ*8Sf=L zqLv3bUkg?7QzfPox$#LcSz=FwEU_!{f*LZwo*FX1o(PF=PlW1cPlPp10}V-hi37;5IDj-l3p{!RLQ5P~eu41CC#$j!LJLSIv0wLc?!lrvltb08 zd-Gc}fO=LO>RAEmSpn)<)Dc1}mop%BaPn8z3(rWMFiJ^v!aRk-NP}yn!8OuP7Zay) zrJn$G4WO<8)HQ&*HiPEs#YjITRHPf;E2KNVtxa78(VaM%aznZUkM4kUHDgI#&G;Kp z3cC^3xiBP{ahYgIf(Z}nAgpusgar^5xF&)Jf_GKaK>muJA`#hTV(p^^L^}|D01-hD zeTX$RfoK@95qbG?i^v;n_&kr>>w7Z;_@Af*a)xTVF9EmXi23PBP_(k`UcSl5EejK z0AT@y1yEYhR&NVRrr$Ahr4=8mKA9&hqzGDR$5iNN50>T#%zQkJljYjS{{~6&hczl+eqvP`!HYHe14U**{ii|B1P5gwB}D=FvZRj2Vdjf#@HI{(sKVvd;y^aM65w*0ilJJie#+YUrThc6&3 zfUp34ucq~CZE2XjfZBcm@v(AS|%j$_%)Cv^&M+gLMKAgwA$l zTt3>Bart0|(+)&C5Wax$rCke`k9I9oM7wq^Tt3>hP!aap8GiX_XLv>EgoiI=XZip_ zCx~_++A(`*2SO4g$wQmRFGjLpq;`ikb6*Z^uD%>%h8UqG=EMO6udN;~hqijCsLc7x zq0PV*p(WE7?14(IySQD+brqFd zcR9w08R1K;Tl26NV|$EsYlNS%Zq36_c=!pzPY`~BG(W9HIr$hf%ZNU}!xs>J0O1P= zUqJW*!k3u4$H*^6*o*vP9`@j24}`r~4@VF^iuGU~J<8P)ndlgq=oFdANEVFLhf`!C zBP3&uonn@sVwRs`o}Cy?Wy}-NMJJJf2NLfb>%mBVp2LC>?P4aIr z+7OB9xFPe3o|ujsddh3T_j`3HuLXZ1Q(g=HMCSTvMdUcMw!CxYu&cTkbzKuiSrH!H$yA{ikkM?mw+y zN6F~^Q@1PkpH{G=WOVna+A58 zUT*VmBSmUev$06I$$Vc6X<<(bX<<(!++A)DZy#VJg-gp=M33Lv-?0qYWls%@Ue9Kg zo6cvI$^hL=eLSbK=CzAn?O61H9VO#MuXZeYz>bpfqE|Z>Jzz)4c+smJiyp9}WW4Av z+l#(qEw`UvKI438ek)8{?1Ct+qqMgq#Wg&NYY@dXh~gSVaShVNn04x6%x@Xd<$_=A zkqFPYDyQrR;TfnrOn8}J2vXk3_qapZpxoMMP;PBBD7Q8mlv^7gpbZcRH{zAMj+;h{6GLBA+V z@dZRX5bZ$t!qqD6K(qtV&eye%X96!%ydqqiRMN_w__JIy8339L08IvfCIjGJCeWmn zS{_Zk08k(f3ItHV>VDkf`e@Tc)JQ!v((X6uSw&w#tDiwD_w!y-Zq&BC=Vg{_`!0a% z0=O=K>jGK`aeMQ{NUj@caEvslMw(!^IHNN{3p}*M0f;42i>9f0T24kYow)L#NV(@0OG=M(UA~ zd@)jwjO2@vd@+(QzULAPaa3X+7UGD^JS@P&0w^u0w{EB28qr&htnej%Z;5+6FGlLE z@5EC(BSpz~&B2SaXYYtJN=X>w49?>-q>k(b^upZI%9cJi^ z`Dq?HV}6>4PI&YPM2{kg`(8BS8A;qcVg?TjAS{5ez%eF$h$GxTAo>sop5|czo-FwO zFX=Rr*GAH5B(II6(nJb7)Nyf%{8 zM)KN7UdR0>7b7fCWMBb=1rQcMSO8%mij257CZb(Cw$~3vOp?Cy0@U6`aP^%R@FMcQ^FkI5?H+fHJ1?%j*8(jO z`2#V77ZEg1y*1J}_|6O3MLc~U2A)MceOE^Eun_U|9UDl(Lo#CRyE%}Ahh#)P?%%k^ z9UIrUW1}MJG*3F?ZjNi*%~28U7!}%4@GEA%M*|e2;yX6b(pJA$-%mli_UiZQyCmSn zy!KrS@M2z@ho3PHzM}zOVjO%=0Xm61k}(dJ)a)_3{MYk^(DlfBb>{C1F^*e| z@~z`pl@3mds>dezpp>gDT#TjXTMfiBlKVyqiILp*Z3tycxf-FR{iV3_&;k!Fkz`LG ztjAJ6fs%(#c<78Ya01cJld**GbkQ%Bk4SliK0Y#iJzbU%ewPr=6ov5dWx(r+_t4Bo zDaY^j)1$lG@^!k+w&i1Po80nsx=n8RI^8C>d?#^}TfSYl$t~Zm+vI-zTSddsnxj#U z;1sf0&b~E;abU@63p;^IDR}jbD)1PXM5XAs`X(0Iu`H1UA<067$9iDy#_BkMm`k8+ zhfdZJJW%rF+58^l<&@*`R^(;#I{Y)T%bwbnxl-FQch#OAFA$k+awa@?rA)M*s$U5#v);8{5xhjGM)|Tr0nsV zLe94uc%;0$>{eAw=2I_RIsC@ z|Gh%bvfwPSGrc9e`4huX0?06R*?i(`4c-0}vg zM-)ekBQC3FnX*)v{veX3UII4$g`WhzC&EnM6Jd7ki7>nNL|$;W{NQ{&?`dJZ?1_}$ z{jJ3pJ&#{kI$F8kpreKQ<;9@wa*Tc~yG)xsBJ5+42-sMJ<*4_Su^a()%CyU|=e5gG zJeDJ1N6C0OsvXM_u%l$W9Mz8H2-s0FUXE(Vas=!s8864>)otx^T&Rklb|;^wP*4G> zVnJ+2AhshA+YyNE2vmODxcbI(B)NV-5`-iN0QllV8aZlIZpFU(KJ)|IXdE4wNmhYJ zpFs2pM4v!-3c^#+^th4kdj2kNEZW#&StXJg??@!4J&|(rnk|jBl$%s$k+$dq3@1&` zYZsDuEF{2=lJP=PI~EdPN6C00sT~Umu%l$WkkpQa1lUnBUP#|v3zdQkRq@j$4A;KQ z-8ioDBMr>JxJovU83>OV2x10;$}2LjXMH0DTKVnVG#_heXOJ9Myycx)v)uA~xcSKY%J+b=_N0ATE;Ou@pho(LQKo(TKZp2!RC zvcd0ZVF%t5Vae}_l>1e$XNfHPcpJKKcf13KFN;W94McRuBFsAZ;xm=U%_g&dZAt=k zi%Hj^J+Dnk;*pX7J4(hWN$p5UfE^{{l%#f~B*2c6aY|AJS7tzj*%A8`$5@5>`V9OF<%OXE%FZCz8 zv|AggmNe1^W~2?wNISWaYDs@Z2%SFHEt{fw=!A#P_?5+ysZ-T~d8!VK=n+~}N&7<` z|2V2+c7f;v2n!%AfUpoJCG!jYO94hZ5bZ$O z4$t7>8HmX98xZq1ei8Ehx0>T#%zJTzBD@bAn!a4}+AgqJ14#GMJ z>maOi9ZKIptPdkrk737U^_W{;<#PQpEU$7|V0o3x0?Vsh7Fb^8vcPnaAfT8afCvJJ zAb55hc! z1r|UgE)e!W*aKk?L?}QC#e5robG2?m2z zF4x`Bu_#KGqtE78bj53qMQ5JxI%y8b8)|bbdZUOUZ-B@QM#&@>z$6!dNK_y)1BlE3 zA~S%L`2DOY_M(O}59<_4NPp+=$hGeHcqOC^1h@e zGP)&b{sPgG6%D%eTr%d0*Q616%8CX%N`_gHcFKwdJ4%LGk#@?820KcIS&??iiUvDM zmWl?7E6&uiG*w4@>o)4;F1&WvRW-6J@`4ssBWPKEOI%k*yCUVyUDth) z^7@!3GOy@iMk_R9j}NSjT^SWwyFN$!#-?6~-wTFR&F%W4B5PMfMb@r}s<~Ye)kyOf z$eL^b=;pDqLCbn}Hc&gV0bobTI2))P*#NMkWSkAuj%)zfQ8La3%WdmT zjWmbbIYRL(_uct3aEJe&w6_n?tE%q(pP6J{o|#E9lZ?+GMFd1ksbc2snHi+iTBTI2 zK~##ADw#~CNrZri6un*>DYcX$S}(QKD)mx-mIAdF5s^}_*XyN}TErMJgzzfDWRhzs z$CRR>pbTYIc#f3^8S9GwG|@ z`NZC8c9B-0FK2BvyGUDx7&ANEiza>B78GjZv5Y^TTM%0;s&*BNYHnpwvnBkrFSdkD zjh;*xVi5z4Jupa5Z0xJF?1#1nDV$S) z+&RUpJEt&&Wzf(E!V@4o;m$Yg+osgrooEhdUqZ`@6H40-FX6% z;~+y?QTwQ>nqkP(w4z4SiW<_2+RMKv=Z;H^MmcxvVK3@J1AAknxI;Soj4GV&Fv@*A zv}wq5qTT)4XPnwRhP0y^(vE6Kj}{H-MoK<28a7g4#sSbgN}+ia&^!ug9(R^zUoFK6 z?kvq{R0bMN0HQJ=Dg&Z2ASy#2r2~M_4#Jfnw9}g@=lZsNGnI1g?9OOdO}|Hq8wK`t zRir@Ea`vrNwbPJt+MC)`rXe`pxt_gM&C`$qr`C3k&WKFwnqd=XG=9rBh!|MC7%Blx zo6O2-lNr(`Go(#sNRPJd!>E`>fTcTy$wt%n&ge@+F&w)7^cIJ85%G6YbE@4njK!?I5om zf4bpepHsyaXxIY66K=5BM^e@EhE$3nm13`=gVP<58x2l3knCfp$h7z$hKIe-j^BtQ z)L()kM65dpH=?@Dkh;x~y3LTfZ7UNA)o{~_(a;A?-DWgxLPOewhOmWl*aE^97c1<$ zthfdm+FfukPPDt=U|%YwMz*R^2OH8`QH*sI2OCvyMTt~u3>AAoo`yZp@CFEPfba$g zZ-8hSH*s%uD==Bc)fA@zMk zo~RWxq8ejJjWMLg7*b;lsWFDUG3so4VI$hz%FAfjVm~;Ag|X4F1sb-1&`!rk14z5N z`y6Z25VeI94Ingts4d9rqqfkfts8dsiC1iK!_H{f0u5W-urp3?US-_Li3zh1`RKPundG{AS`oRC;PxG9TXa|IT8z0jC1=eD$O{ks74pK3Q-!>6<5VFp+&ERp3wv3~%lEPd!d})u*vlFS zdszcvFFUi*T#)UCXXM?cacgVa%ydH-X`xR=6#7&|p-)8=`qYfQs1;k7P0^6f!jTgV=`1{BFL(_j zAtGclDN6m10Px7*Z*QREoV#nsRoK5<;ZW^t^D!AYx!eJxGJ1acWRB zq(RY;21P>}6zzr87{fe9CG4yww1~aT8cyaMINe-joKzPYRx{^N&do>mNpm!~8OUhi z2C$hiy@MjZ-zELcdNkZ@wggYO*=z}(<>(4Gn=K(Hd~R|Ho^UrtHBY$LrJ5z&$WqM` z?&+vz33sVfvxK`;s#(I@l8nXTP zGFZaRLS|sO6zAh|7U$z~7U$z~7U$z~mheurR&)JmNPV7*NqO2Bld^=b*+xye@*bTG zO8|L4eF(?dog2cTpzs59IZb~{PKAWqF-%B)uY~@JoeIfmtwO@h5hf(RbD>p8PHPns zZdEWL`F#YfLULNGkZ|LG3CVxeZxxc$R7mz)d{)l?U|-BtUX9KyS&6G|IcpyYARcq9 zLX-tj4#a%JX#+Hnry-M77cy-Prj~&y2lC~Z8=x_xftb-i%xEmH&if zpBFx^I#b9CpJ6R#mU50|UvVvRj+bRllx0qqWj4z)^`yevsrwn9r~4V7r~4V7r~4V7 zSLU-ay?R38%W8Baj}{r#4U&8iB44Zmbg>H1bumB}s{q~YjgN-io^M5$N89*3TG3~g za?*;P6HmHKJnr(!`0%*n!{aUwkGniP?(*=s%hS~bzQN<+g;g{1m5s#V3UIgr9IgO| zE6|OIeWpVPrXeanR?-+Q&+!pb^w4iy`78wKaCCWPWpS|M!@-(IXmUC%T%|e)K8}w( zrx#~BKJs+?B_AM39IOBbE5N}DaIgX#%)SB#+b%PWG$)V0jM%7uzkj~VGbfz|>drw1*ULIa!HK}c_d2~2@>+*EbDPOEf ze4zkeD8LsA@P&f;uppMt+5`ddw&!#=LFb1>?bGEr#me75tQ*ft7B;8VJi0lp=F!b* zHIHsit9f*9Rn4QD(@GxQTUD~?-l~#C_g0lG%dkbaUzJjH$5Y9&jP?!>V$2{Ve+Dz% zH@T*4!{WM48=mkiOtmW41m$8}6O^;KCMaidO;FC_{9DfA{9De#vPy@cEy!KR&-b(G z@YP2E&09H-YZyHvr}1pk)5WJMB+up+pUK?fGnq16CZSs&7z?l57rQie6?S)Fd)q=w zHkHtHk8GeqNa-G#a=J%0P$8srk4!n;BO9m?Qo2W`obHhgR0t{EBTKoGJ#vz({?oZd zPYr2Tmgk&TghPmN1uRk0BAs#qA3 zRV+-)%3?!8UFY%`IxdgC@A6nKxjd$Hm&bC+<*{6Hc`TP)9*chcVgus~Q0N&tzKXPT zd?}6b1*i~GKEAXZ;|owBqDLP+`e(sGP1K!uR<@s)qPLQk#28I*jd&PJX3 zFZ(vb%((tg+U8WAnXrs7uFgctF+aRLn|x3gs-zP()y>vX{VC#X?}KVj;*@u`o~b+q}jKK{3Al3B41d&5lp^l2t4W?n)Md zL?zF1t~O#&y3HM9`=M!s;0zL8b_Yo<)qUBpb*f?Y3a0}<(L)#6++6V1ue(4 z0H_dBJ}qcDrUgKSkn(9k%P}ngDuk3z3p0fhIxXb6>9k-!N9uW{AtnNYOa$)7O8ay& z(*iW61rXB$h-rZz9XT%r=}&a_0cP|;Ljwp6AT)r&7o}&$%cqsmjoCM{+fu_Yb^gj#b(`7QSlS&Z;RLpXJU7FQ{l&a;8`^9lRT>h~Y!yso1n+YXdlH zb=j8Yab?3t%G>H~X*^dpe5AZ>*_NhtWy43x+m>xOKj9yXD>@KZ;4*d&MHVUrvZC}8$Q z$B0D`Ju6WQ8b82*SlWVE>=eIume!X2ZxsvEe$^+@oRoapPv`VyNMZ3%rHI8t6$?jC zu&~F_<1LrR@s`WuS0}w2mSZMBVFuH6K#`WN1C+)(08k;M*t7JgQp>Rp08|JmUk7M8 z)&YPDA?51;Eyp?lP$8sz9gy3X4yrs?{inMv{XAOvWI=zcVqqgy$+8SF^vNnQ^vNm~ zmhn|AEaR(KSjJbeuyU?qVUtwFLflZ6^8JEyT{(+ufi^755aU{)T#Rdhau(MDDDiz@Nnx)gjhpKtN~#S2x~xC1Hu}Rw?;i<3h|7)xoHA~Eq1F@XfvZ> zi@P^x!rhw_5!HuCl|Wt$Rf0y9KvW4tl|WPpM3s0-1MNJQ;Sm*d&k0Vr=L9G0p*pQR zXRJs8Aq7PJK-7;7I*83QQb0%nAqC{i;U&AbQY`}^1%wn3Qb1k`zJ`XcLHHVkuUV2) z2N2ppXt!Ja)K0r0!XeLzop53&2s=U8$()0ByFE}f5CE_f1SbgXAhd(f4pQxtE{qsb znTAy6Bm+>j8-f#>=Tz;+soD*p-3`@AH&hKF6B;r>$OL(r>Q9rR?QTfheUdRojX=~0 zgmw_xL1+h|-Hp^q_pH^V8@Gng=f>?M57A;72u=`|F{U;0PTDgF1xQKvOoH)JCur0O zM4do*6of}Xcod{jYtls+L)hXXjM1f0|*TuuYuY^ zqqZPw>muQ#i-eQJ8|(yOCkQ)1cmjl-AnXKTCkQ)1*y-Ziq>FEc&`vDEP7rp2JSTQS z!%h%(g0K^WognPA^>&DMlNJfXIZj0MY$NIdBvSRLCPJ)pQPhZ@hUIW#IS9)^SPt@* z(-VlWcoBr9hNy?Z0u?7i^$5eEVK@lGK^P9ga1e%r)bOU83=C=W8&X>gsV#=o7DH-_ zA+@FHCJ{quaFdA9&;Sh$1blUH6ND5Hc7l*XsHPl2@61;<}JX(aN=Q*wzjFz);2_IyXmM2!cs%H%FRy3ifPa=4TNbROaoyW z2-85A=H|bq&421*L%7%=h8x6-K#wpS8is=~9E9N@3Ks1sedY8chl>uy2{WYO!P=8H`Fub~ICc^OQsvKe=WvMlYT7#%H zh+2cFHOR~KwWc??H9^y@2@GKiG;9H33-dRg1kqDKNC6>**^_c0%7G{c^5xJD4NrjZ z1PD)n@C1_{+CgXsp&f*F5ZXa#2caE=c93eHVv<#ThE$&+)i>oPOGA`%ljW3~0u3S4 zO?p!{>4jJtk@ofowYNv;1$l(2h*j5EL3NEGb&Vl)jUilv6z!r@%w$v;gmw_xnLOYG z!3px5*a;0giR4HDAq9jK5K=(;FzuAPH<}0Zr}W-meKiX}?{Np{J?;R##~q;0jR{C@ z$TLJULF2ixNGwn_WJRimtO%(JqNp^8N`pKnu7gGsgJ@I`jq2u|DL3yJLLW5rfzSt{ z6EU~Ya3Jac!WQNM9r;rr%7G{c!WIy=fUpHb-HE_x0MQhN7;Od%R2s^tG?YP10Aef% zV?mx1W1)FtaU(Qb1)|y9bTQ?o3q#oArVFEC3p8v2VG9UbK-l7@nJG8T7(%<7W{ie* zXlMta9fWqK3mOqbHvyp!gy%u%1EG&e0GS|Uf>h?T+l3j@P7;xJp$H39?Lv{NT_{2| z&!AVT6)~FU)QT8Q9cM@#XGojPkanSIH=7y4aA>@A$%vQ+5z|1J2EsHDrhzaGglQm5 zWBSy#nRb(@A#8E`Nuyy4G;9H33kX}>lss)yaya%dgg$809fUp*`atMoexycjCY^RO zsUb8#Ljwp6Ag_TMF_WSXq`i9@M2$e`WA3CJh;ksxfqXgagod3U>;z#alM(trXaJ!B zga!~AKxhDY4fHc;^fRU{w1cQE2wOnd0>Ty$wlKjV)270(yqh-UiKu{x3J@wlUIo>K zMs-0{7esZL8PN`+x*%);VG9Ubn23-9LJ9~eAf$l26lw&G8iA-0h#G;Y5z`X3fUpIG zEg)Cc>1R)cIOb{~Nlr`<9EJH|vh7^#Of@RR~ zJV-r1<0d{sYPBKNXGrxKQhhUocCEW1q(DOo2q_>hMXfd|YPBJ(CbXjuggy}ZK;!4Qo*|fHH3+LgXa}Jkgmw_xL1+h|9fWo_UCg-Y!Vucs zbTLCP$7+zSA&kZv!XRQ`r4k@20iqHhDgmMrASwaU&@e-!$21TQ1z`&aTR_+X!WIy= z5ckmlLIVg5AT)r`073%+8<`+vf{+P9CJ31XY@~o_7DKvXoiSLTq6Df(sD$QKQVnQ0 z3PhuUXfzOwMs&w;5Y-1^3kX|4*aE^95VjEO(Ey_IhCC645K#z1Aqa&auaL?^qw*js z&y<075T+TT)eIJ>m4BLDr^CuCLT|BGJLYX1^EQqZn7xf--o`OJN`>$}2;YM|C%%V< z??Lz;L`|5n@jVF34S6En0wSh?Fb#xhAWQ>c8VJ)sYT9PEd@!V@MWm(~RMQNpX@=A^ zLu#5KHO-KkW=KslglTR~BHvjJhj|)j3}FlF0PF<83G$p+4GpV7Sk26jOb{|b$OIu1 zgiMf^i6@xd(E!5rhP1bDHdvr)Z;wmYyn{l2wOnd0>Ty$wy>Zu)!cq{Hg0Pgi7)wFe0>T!M+A`~AZ9`ga)=iYNOlqoOmcZ>1 z<)G=K!Cb`r{iwe|!Vzk8c8!AKwh=6Cm={_Ut8wG@8D((C6uQF!DN)~-gs***Ymlc-mElIB!YfiWaE5p;NZHW40aXX?uOxuR4?=fgY)F*A*5cNsh zHbi~Wwhd9Av~5GwCvDph^-0?{M19UkKGz*y(HWkoG*I?TO$#k~&Ip=5XJnv4Na=G% zl+)*o3{(gyea?t-`kax03L(YEel&ulFXKT-{wz`Qf}$3h`XoHUEHrz4SMr=ulAAnd zB)Mt$u?0=oXBtgECpr_MMp}a&5qFWph}4&L4qVFE6)HF(Ax`PbPxN`nSwLZgX$&jU(m16w;uN4lNO_#na>OY> zg^=<%rR9iIfC?eyaZ1bS^N{$YJWjzF6{K-0e-BI=r}Er1PO)cUg#yyGs_54v4^Px3 zrxA6@X-JoxhIGj}%fAHW`V1cSf0g(^6(1PH2L`bgNG(Cs5=1RQ zz8tlLMlC_q5=1T8MbXkA`Vt6RK-dDp77(_8umyxIZl5;m_GyOD=l5wK^nuU^LLbQM zqwdhO?pxg6&yd#LklJEM>%PSuryA0>k4Sq)gh-_%QbAs-*3b%S4Gn1x4QUMxX$=ig zL$_z$0>Ty$wt%n&ge@GsY9HAGLJ9~eAf$l26lw&G8iA-0h#G;Yk=u7~0bz^nyTgdx z;K4Mc~Wd zHJoqjPp!6 ziyIE*EN(cIv$)|<&fe^{H^ExJBRErUw`X;)XmqRBWLo2N=-w z0K-6qkkSJT%IN`yfeIm|2N;yo0}KNdLP`%XD5nP)1}cQ)ha1TOhLkHgXiajJcQkw1 z>lS_cR&mDRCxofZqsd2dH?FwE=!#2>t+>Saic3taxWwd&OEgzpg5g%)9y)H?R8`|p zX_FChibB)KRm$QUo;e38ZoYDP%vUb2tSs|}<72*ZdCXTXkHDpQ`LBOzjfm(~EPAv| z=P#Gy{8G+Bw60RbR0@l_&bfqXlc=tIv*^5dlp%@017ki@oGTn7uR5w z#(L-c){RW{MKL->my1!_GQ^k)U2drgR!V>hv-6dbF2ySJ<*cn{7ir57Q)V`6Gc~)o zzDeCwq*dt4SzFC6(v~5n%xqSJYIeTjQ;()*7iksxa@JO}i?n5kDKp!3%6yI4YIc!U zp)Y4`HM>Y#h8QzD+*%+*(yw@rW&HWvg4kkFwX0ZEb1RFQE#XDcTjurdD56c_E}W%V z*lbowvCU=`50h0D3zJn93zJn93zJn93zJn93-f#x3-f#x3#SIkl1~-sk$_W_v!v@s zjzo~6Yc{>*NZQsb+HM zO6oTex6CKEPZ=nT&Tv~o3rz=_&Q&Uexe8Drq&Uf>LYO&JNFLVH^MxX<)e_>kG8ThP zTAiHMDuk%2Lh_K;YDrF0AsVRiTrE+|RbKs_gr6Ka00;5I0f;kg5NFyT&a^?CX@m4k zdybzmRi+`8X-H)nQkjM(kIW+U+-UkaY`N{u-kmX8O&+f%PgIka(A_L8Jvqist=zOo zE;lWb%T0^qa?>KY`N}e{&5W`!N<7L=^A)B1v$ma;i7PqZDX;j9-4ao5dL);d9?44x z*RbsS!&q~snV6?DS|y84SCuR}T~)H^bXCbRmG%+5DcyJ6ZcwNuJ6E-qZoW8awVb?_ z-?&Cy4{W8oc4{TJQEt-P)Xc~;r8R5XYfs8`NAh%a>6wjX6>s0YM>nptz*stfqHo%3 zm{=kI)N=U=CL34CKf2rsTd-QThpfPgHH@v)r16y&m{@6n$(0spuC%~P+j-gjj%FBN zVZT^*KSloJ3gx?rr)u0Ff2IDJUZFkZVQ9u4p4nI$XCiqtofh-j%-Z>)pB5)p#67tp z?&gZP-6Vb=QM!A$_*y2_h-nuESG(CIsyPvQjqYbh=O?E52{2zn za?9rE_%e#yN}fH!#)*}e8U4>Fa;wU?3LdvtY`QqmN*+xYS|#L-OVF1pKej}9w_0k| zKbA(ZR8%^!duBp2zN~qOHYn* zqq1{qE7^IimF&FMN_JjrC6}AloZ;sACCF|JM&bD(P560&)dXZYg_%qim~PeAhQ+NO z+wkb`?UkzBQmkBzTZ)ylxTRP*i(877v$&;LIg4A0m9sea^IJl8>S<3Rq(eO+6GvR1 z&dK&RQ#bGAWDCEeu3IK_yHmbg`DVLyzLcDY$Wn5CaG7qfqwbP(ml#q{NLG+}fz2ex z{1$C=EZs*f$v(9r?&%eA&y;hwIdXM-%iQiZ+-`5VB)8jJF3IgWINXJy?}kavlAh5n zgQZlF-^5Ox+}ild*|Bgyy78wgKKj!YAN%QwkN+_+?e1p~bV&c7(BZgz~=%p4Gt z_6XcEc;X>QUbsb0oSrLq;-O3hPdt>V;8~76ddt+@sQxHCqTWt#iweJ*l;=;4x5?j9 zob8MiE#ac;ScTbIi?Us_2SbuTNeqzvG!%f2&PA%y$u%8SpI`%aFC+whOI z$uI9)vZ5|GPd0taGHqv}RkHOu~US)#})6_6;=a zL2_PbNeO46Gi~`#mYe%emfQNDEI0r1Wz;WLY9-8bD`DQc66X1V#AX)`=ua(SG|%^8 zG|6ux$A{6J--ppW--pp8--XdU--pp8--XebUkIZ~e!2aHFdF#_VKn9!!f2lF!)VN3 zDvVY!x-eSB=)!0fqYI-|j4q7kj6RH}`4w?0XY*k+$#-Ei$#-Ei$#-Ei$#-Ei&0n5* zE{rC{tHLO3+2*GuROYnSFlw~2FdAt~htb(ItgWD&3!^J2=fda;%DFJwuAGI@*)-TK z#q7f9Qp_%lF2(G^s0%l7X(adXj3lu(&-Y<8$#-EW&-Y<8&-Y<8&-Y<8$#-Ei&-Y<8 z$uF;0A&f?TIfgE+Zy}6E{z4dy`Gqi==ld`k^Op*vRg5l-Rx!FTTE*zXXceOiqdB7w zqiKFcoXXjJ7)|nB7)|nB7)|nB7)|nB7)|q+XPyhANpX^Kt(~q$jaC*$b6RT{HCkC1 zjkFbp(G`?)tJoEkb76D^w_hB^2 zcVQ^c_hB^8_hB^8_hB^2cVRTo_hB^2cVRT<7s6)UbFq-H4FdFlh z3ZqqwE{s+&x-eSB=)!0fqYI-sqYtBLenp(h*?bsH@?98B@?98B@?98B@?98B^Ot9y z3!_Q#INs7n0@+o=R=OI^X{}+@Xk}qE(pDHoS5VG{(G`?)tJoEkb78byxzaGY6tfGX zOEJ5p>r%`vjJgrQ8CFXe&GUU2P4ZnB%JY2~&GUU2&GUU2P4ZnB&GUU2P4ZnBjroNz zn&g+;UkIa-zYs=aej$wJ`96%s{H4NZ6{8EIRg5l-Rx!FTTE$r2X$ohfxq!;E(VWeP z(Inr6(Inr6(Inr6(Inr6(KNpzj3#U@jHda8;^}G>w$d<~(^|u*(aOSTq^&TFuArO? zqbn%q!srUhxn*Fxa;0H(DP|W&mtuBdbSdVoL+sbX!Fq_9#hj_}mYglcoau>T&P+?G z%`H5er;DYw&bH*t6>=o{wd54-k%(8|kyuyAktkQpnbBuPW$}PFd}J%IOQbl;J1_e+ z)BiwGEHYcvDZiPt@Qk(O6n!bbkQ7z7{5H}eWUi%1ap@GE#7%0SCdYoZP*+Ec4x4K+ zey+u-b7Kj6co5TM#RyZ()!5>5Evkffzs-$>hatHGMn9|J^Yr~XK2KjJQhmkH%Ujj6zdEW5x)NlnD zt^mUoV7P*Ly{T;?ebiJwj*&hT&OKsPEZo^r#iH-}nNt>SQ*@H!O=14a9I1WfEZi)o zlFM0mw4sWH`{}A!xSy_yMPJH9E$x1P?HgLm?w}~iqaQdv`hm-%AGkd3B$&{CpmRHb zh$U^B9M~6W$@AEAO4G;74O9rRV`X`lLr|c@LWSt##TX`m zD}@2CfB~;yUhk#RuN2vnHR6c$E>><)t>oceno1t-rK#lMUYbfC?xm^ZnOsJ_n#Eae<4;~X!`oG8njEX!<`WilH%I~i^+Pv3Sj=km(R>I+~!pMG&l^0Fmk`4^|! z5cRDn?T8y+gpbSQj#if)t1LTSN!8b;w6TgsV0mTrZ7gj{R*KcPv9u|vZ)0gg)VHy; zA?lZ|+7R^%GIRQ^HGPqpfx;}H^DK;!mQFrOV=e_m#&kk1(prTumnvgEU$zR#X{|z- zOI1idU$zR#X{|z-OI1idU$zR#X(~i#&1S&?#a!hLub3CV^OYEl%2O4~)KO-eB9Dtt z%xslB#JNhI<>+G8s+7YVP{qT-w2Fnvriz821&eys8OW1cg%9KLHtIPomoKi<4TM4ra@R`i`K9j|;%Vg2)^2+%1i%xS>=}rhxh&vj+i?lS{DUIk2 zs1Q=V6Vh@-Z$O2R^60JQh~9t-A?49q%MrZ+6++6R_f(;TM(;dV{inNj{R(OE_1T1U zjp&sugoH{SLP8}EW3Y;cp;5)c(5PZzXjHN2E8pjog>w*&vs@nQW1q(m@|m0|xlBfj z%VV^-JkAna9_wJ2$2!>MF{QXX*1;}M-#bW+^VsF)<+L-jVR4FGSNtrgL36i*sE$i*sE$i*sE$i*sE$i*sE$ zi*sE$i*sE$i*sFmD3iL*Ny%B#F~BsS4ZwPhlScg(DBEB_9AoL0uSiSdm(qw|fC?ey z@k`4QzW^0N%Hx-oBYpuYgp|iGEl2zUR0t`LU->6f)r-22%5&9!Yr3I}yO`fabVXY2}?acMi+hx+7Tpp_mm&dBY<*}-8d8{g2 z9w(NXS3WjuOIgW7NT}i=uvD=SHL6$`?^P_WPUR!jPFPh;+*;``yPHd!R=-d$En9kC zs7HQnh#WPxp^jE*8VOymf4%;euh@VwF1nMf5Wk_M|Rwac%UB$wZs*1%mR6akYt1co^ zem;^C`5mVXv6@QkEiYS1Brunkth85Oa6hMCMQ6DPC=74i?iOijkW?B$5>O$eJV%nM?{UkHGHo2<$G8 z!0z&h7n+x!D5Zhj`MjLPHC-DPVt57Bgz6Qgp^0wypm~@&2!TzyY%O%=c-s3VwEfm)k>b_ z$YGgQDTjer#j^|+#%h%m#%dJ{W3`Hfv0BB#Sgm3q>MBbTnttth4p17rinKJKD~*5-s1Q<&YC5%OIRZMM zLP&W)*K!1OK!uR@OnZJyRUNU#O^(VbW4Yj#%A`fv%$ApI zscBlWvNCLg%f)h#SWcYLO|H!YM<1Tf4-SCs<*=#+UQ|{I_9b49`dsRqWCBo zh#we0o|7LKpz#9(Xv!Ho?GU%Y<{`0UaFrA3HEoFWnl{wxvUHpBvXw;oRC!7IR5_8+ zQ%!QTsiI4+jDnqaem1h;azgak!Pw59$XF4XI2+ zD$|gTdqX>JhZK7gztTWR0U-s1Eg+;!uy#}_Af$kh0zwK1 zDU(hL2q_?>fRMsn$auo;Nmg4xlmq#4Xosflw-u!AXNdNLrg3yD@6|`Uy=7mugU}8_ zI|%I{wDaC_WP*cf{+RFGN}1MX4gg_ECXQ~2+KfNW-q%| z4fbt7hmZmdDIhO}`az?9_9Uvxv^TSdVZ7ClPSX+UG##N%(-G=49pQu*HR)l~L%fV$ zY6hZaAZiApW*}cPFO!yola{lOAgK@R+Y=6<9U9s}Xa}Jkgm%^!^bHWb0Yq&<=mVh- zggy}Zh@5Bu(NczJM}z1Gq925Q5c)yr2YLO}7aHCMski4{R5zry7*bmdsV#=o7DH-_ zA+^Pj+A=?yjzmM~gN8m3`atLdp$~*Ukk_YmpLes5A+)>M$7pD0-q7}(2T=}$)gWIE ztD#{v2&+L@%?yJ+5c)vq1ECLuJ`nmq=yS8yyqmQQp~1~sMneO03U-396ND5Hc7nVV z?1YA$%rIyGp#g*j;y;`q9dq-Bbj(Fqpla-lRE?bxYV3?qV`qdKJ0qkW(d#Y52hi{V z2p@p(0m#dwM?+&YyIF4@gttK00>Ty$wt%pOIS{{skO@L22$>*cf{@9qhfEMMLC6Fl z6NF5Vmx<4y;WH3EW4=K*Ba@-$>Z3odw$b3WLrgWI{tG2$>8l%7G{c zq8x(&P7s_R&xr`JZpD(B5z{-XA5LJZu5K)K^ zo2OlWHiWNSe>NJnxc(eJ29qthHyfheTz@tibx4;Ko2P9_p*}W*j}78ugZS7WJ~oJt z4TcFg*Aph-98P(?(;nh4M0vGi-o`O+<5+>&+c@TJ9P>7gc^k)QQLONi#=RBe-imRW zgQC6x=tR)yL?Ew{P6Q37u>N8YgHUe>;|vz4xX7qf%pfi@h>HwjE|6-1=&c|s4WiN@ zFNI1&qtYNMoh~ysPunt6JB=YKZIE#V#8MEJg0K{Xr64Q?VJQepL0IZ$jcE|JfUpIG zEg)Z%DNpQtgIR`;3d?hA8KvxY2w$wc2QEwIQ|IkXmiuX4Fn> z2z@Rp8x4IfDjN-b(9q{%?Fq8bD|Op#g*j5E?*epkJc_ga!~AKxhD=0fYt+8tA)d0BNwAG31FTgor{A z3PC6Yd4+UBXbc^Y4&xcO+%tq}&_*@jL}G!8scvm(yciA*!$BAh!f+6VgD@O~;cmS- z4}`vSPq%p{-P1*cK4{brggy}ZK8$ybkX^e&xqC4e4lmnsNMgGk$ z@*DD;Xn+$tLDU_jp11GEVhfQUTilFcoM?cC1~+3Er`MouYcy?JLpt6!Ge=+x2wOnZ z7KAOtddh(`gl#tDiHL#d#ZV<^I1NOVKvW4tl|WR9NdoO4sszFo5VjD(DF>n)h;krb zjygc24j}3Pq7ESHKo~|l2<;%WgU}8_I|%I{w7by0*@bpPXdu*L3kX|4o)cT3VG9Ub zK-dDp69iuLfzSs+9|(OQ^nuVvI7KFi4r<5~Q2`MZAXI?73aSK+DuHNR5FM1ri*^vz zb&)rIJ2mXpXI%s}q~#209Smt53~3zG)#fvQ{YNY$-(gu3;PP`BO@>ghy;dV&(6o}fgCzp%=yI@k18CR+!WIy=fUt$>nsESP6oSwW zqV6EHyJ>#bP4kA3;--0{c`4KZPU^q}jh!Iu1fc24Q`1t3-UCyLqj_V?I6{@#Vu_Nsq-V!?h~PEG^iR4sYXMp z(U8}u^);IM-jMp7Plxe8n&=3QIBo`Q4T~MK)xJxfEJ!r*}O$x>u(Fl z>}3aqyzq*5$^A>$?Je@GSL7|Wr9>yu;g@M}jRN zWP-2-giH{A0U?u>CRT%J7elm*!2(q$VfoU6R#@lN2zBm{5F22|b`Z9MupQ*fdE04I zIB8Q5ZOR&!T7syDA!=!`K&6&OrIrS%r9oZc$afmlCAz|iP**q+>Ix@9Z!sQ15*`BK zArKw{;UN$n0^uPL`dFXiArL(cge@R!0bz?<*ULM3(=h--3J576FNGRGqeiUHu@i)y zAT)r`073%@4Ir-ppFzWCtjN(0LOTfUAhd(f4njK!?JUjFU<-AP1|T%p2)?!nel6CarMx`n?GB>E>Wypl+$8&Q(&kR#L;)RZXu` z!&Bk85woeF7OFF%h3brGp*ka+AfC@|V?+zpRiK6HjA)@cBOEIaNd(eY{L_F5*QDNMKO{&i;;~UdKoqSwR2B7xu zl)?yC3L{*B?&0R$$MAIH>hnYJ*6`)7~iWD%A^wTuVCJGRs009aRpn%!LO}Fzl-D-!|Pf)OZ zrWP)b4zFKWzz78xp#UQkV1xpUU=C&^f^^oM2hsZa!h4SWT%H~Nsp;;${PZT5hw1uG zc1%}*=?XAi0j4XE1{m8ojwKs2Fu{U01EXWC%mNsPBCS3)YWL7NAm#|g)p#p4YlmayeiYf)DQVYAGOw#$98v&urC^ZezMpHco97W5ddWfXKWFjQdBe)6%A0)04G`<0!1Cd*w>a#2X(w>J}6BV z%1yi1UHz7haH9m<>?Z0U+CV5{w@E7nbCd!IPTUMoX@F2uyJs*6Fc1V72m%ZQ0S26a z;3~V5P^G0Y#waQcib?~hG=NG=qugvd!Of;Kzx<$@Pl^UY6$}KWThi!bKq+a6upd{I zlE%Mu8QnAx*z9M(P;CRj0t1dMRNE+_+6LsERb$P$xOb3m2#?NB#GAaUi1Gri_9aK< zaz0ku8Okqey;XZd97M|Vr5Brvse3)m0prJd$lhqZ}w_Wls9{|C(4_>GNNs) zHfD=BX_;(9OK#r(41};9K?vy)d0GhRkrqOFL?NU{QXJ3D2A5~LZ$l?j!zEt?9k z)k`-08AT`2h=Ru>3LcLr_&6f@r6Q3M9A-2%3Tz!?=hZe^T+;Blh_j~fUcw>Q^l zt!O`W3qUOZs09GEfXP|~0JQ1`LPwOdJ6!;Kno5V}fU1JxRB2_QXk`IfS%6j+pp{L7 zw!ODTE1NDKjG`8#%Lk)OW_u(#8wKQ0>CPSX4 zoylln_(mbxwTz}+%aHtV80^-TkRJ{cBtM}hNc}}Qr*2GJ8j|`5psfVZRsv`%0ko9> z+DZV`n$DT=^*LEYFrfVeHnjjSadgI}-vq; zS7vfa8O7^u<>hg{N7C|sYSwE!p2X%WfF2y zi-fI-1b(M2laP~IB+Mrg_>r|tLQYZ%FI4YkZBcMu8AZ#4;LBE112%_AIv1p8PIls~ zF*-eSGK$U;?5tEky63V(W)%QMgFL_q&}jyWPBVaPnwi?jYAMqbK{n+_km-pa(-T3a zXKG_I8%3Z3ps0XkHk#UKNAMD)rZ(y)6xr@=Y|YBTVu5Q+I;&*G^@XLg^@XLg^@XLg z^@XM9Ls~!ol%4lZZPc`u)wGt?w3gL$wl>N5gC{Vht!`db9r-(br|Nu*@UnkgA>iCdF1!AMaHpr{1^wEz$-7)|@Nfgr#@5MaMA z1ec6*T%`a*gAc~o0x3v)eEfwktHOA)KbRV4WgVnVlz|}4D8aS~)_DrjPLQ4_Pfe!M zCX+?`)Fc9e(s%+ad+4d=g#Gv#4lpLitXLIM-ud6YWOk6yR%~{VP$X`iveURKVwuiZ zvP@?rj>~a?=yb;cQqPiHDU!99or4B%*#W15)Q@(a7uw6t*#etAspCM#He;=?0AFXn zL2tHZu-~BNo0zScrJVBJ-&W3SbFklBrN>dcVYjZ`ZD`|Tk!em3@^ z;rEW~%ESLmKE820|8YS8qeJ3_V;%5$;wOXy?CqJom);c6L zAb*4M*C~Ii`Jd(Y)sC#ayw>sBQ{MR2T5q7#q)bNX*s|rk3nWic;cs=Ic1TXgSH9Wt z+^T0+uU~z_>esKHUw!H7YggaC`o7gqcdhL@zU!2()4I;;n(NxxbxGHyT~~H}qU$qV zH+0?7_0_Jsx^{Q%?|P!^sjeS&ukK#keOUJ~-7oKMcE7s&_1$mnen)qe%zOVa{?#1qBx_{i$+q1ssh@O}AoY^zmb8gSYJ-d3Y=()P* z+MersZtl6G=gyvcd-nA_-t)tr=XyJP2YMU5NA(`xJJEY`@2S0~_nzH5-+Mvt`+G0z zy{h+`-s^gA>bb^8W~2j4OHv7zIK&K|mTXz%*5^;d2< zWyAFwZXP~%_=MpzU(or2D_?MDqt;m8IHGYv6s&P%@y2ee7 zTN__%+}+sIc&M?^c)IcYNcYI#$PpvQjf{<)G%`PO!N~hZE*rUOwR! zcaQ8DdFZggpSj^h121a4=+#GFcU14uJCDBP=u3~j^5{<-{h6b0IQo{Ozk2jtNAEs* z|Itqz{nXJvI%f4TYmYhQn5&Pu_L%FBx#O67kJ)$3b1xZu$>A?K=_NZ~a?MNbe#!I4 zo^b3r$6j&lEyq6e(!rO$=B4Mp^b;@r%uDZn=`*id{r0cF{hM!p_N=4Mdi`&F_BVF_ z=F8vl;dgxDoW64=&UwcLky}rlzwWo5-}bU?r)@iH+hyCX z+IG#h>$csr?bdBy+jjT1J=-4Iwy^E#ZO?D--afef@a@NLKVkdy_SbBG6vF(SpKf9y0qi@IXjw5#*w_|L_Njpy2 zaoUcvcFgVAx#N-@m+rXoT~D8P=6SQ{oqOKJ=j}T0hVyPY@2ltCb>8mt_U~M~b9(3O z&U1HOymQyiD|TMJ^V*%)@4R{E9Xs#bdGF4BJ0IWq!=2Ba-+BJP`Hl0BI{*0dC(eKM z`ENXb?);BmaOlEQ-t(D@e)QgBFaF?f@4ck+l7UMammGD;@s~`z@2dA*^S`qoxAJeUAuN&vFqwx*Y3K0*Uh``*mdWwdw1>I_4tR@erWnb zvmd(hL$`kDkxTn7ow)QJmtOw6k6ku!S@W`UF1zBgTRyz@!_&Y2@yicgamp1J{oy?y zIqoB;f8+xn`P@fqA3N(~m;KR0e|*U&cK_9FfA!c612@j!__3Q7KmXdlx%Las-F*5N zZ~9XAt>@f&)vb5j`oxz9zkK4C=WhGlZTH^xqpuwMl{bCmlCNA>TO}iZu-2H^FR43f z!}7ngHZ18*LC~6el_vi)+GvpsSXbXYX<7kV}76Yx<(GEd7 z6lirv`ysR+23nt^Jq7KlKrJTN`K{;-7UfH5gOt zV`@W8y&$Fcp6ORZN`} zQ@;>XC&$z;#?-50>X%~bH8J(eA=O=5D`VjB+EKNa)m}a+9_lzW`7*g4oP4QV7bnGg z9S0`Gn;i?a*T%B1i>Xs$>Q`dw)R_9!n0kFoy&TNM~Moj&BOr051Z;z?7V(K?y>g<^M&6s*eOuaLv&WWkbF*O@gTViT1rnbh^ zd`$gTOl^y)?J>0@rrs4(=f>1|F|{+M&X1`JV(Q&7bzw}sC#EinsrSaz#WD5UF?C5y zy)UNTA5$NQss9>MS=3!$JACrn5=ri;4RwB8QmeB6wGT$l--)SRG4-LCx-_PKH>NI& zso#sK569H+hm`BvO^G!fhnf<5Iu14^7IiE(B{p>&XiBV-zI}Nt`v)O)WbNeI>uYD! zW@|fZ@2`Eh_VL=awHs=;*1lf5r?$8DSnW{l*^XLAU&nCAksZf%jCGvY@tTfPJKogs z){e6}&S`F~b!By}omRV}IY)Yvq_@<%Iu4OPOFGLxN74t$e<$fI|2HMQNdDQRv;4Cp zeSrM8lg{#gUD6BWpFvvXuU7fZvumq^#7)gvNoBTd5^1YdTJxQf%Iw(Gd^>rY#Af9? zO{A|@>0*~kIjwmHd7Grp(yF!7q`ukzO-&go;%OO8;%ONd;(Hl);%^z7BISzc?>~&G zD`V;-G4;`y`dCPH$sS>S?J(I79NUzZ7pc+{M33|g(IY)YG)T`84JoH+6HaMa;gpsZ zPU#`SDLqCweLwlQ9#hxF)c+Gxp9`tX z9}S7~$JI7A@7A%{HQD?}O|2S|JZZO(BmY+o)&4S;zcHphA5(u5Q(uUwzm2JzW9o}B zbxTZrDW-0XsV~RWZ87zgn7Tct{ywJuM@)S!rv7J4eLbXxYRA@&uWhU~YbVuSQ#-Zx zrrKL;XVuQB&DYMYU0AzBBG6^sQ^NUVcT=uE=$@48%Q)6eQqFhU<+{K7+j4!N`(C;3>;9Hp@9(}xuHWnaXSv?j z{Y|-kxBH*ux~KbYxqhenALY8c`!2bDyZayH`mOFe<$8~-2A1%cjNOk(5B^lo%Y^^Q zo|nq?iJoKS`hy->C)6JAIYzGE?>SnokM$fS*N1yvEY}Bnj+E>Eo)^jWfu1Aey00f& z_1)hik-4_F=Y?{;ujeqiez#{tu6ueKa{W%v3*`Fko?*G(+p|Hg_tbi_6@KlA+A-3X zPpD1woF%zW_PkxL`+Lrm>%N{}m+Ri1GvxZcp0~+$PtRNBy1Q1-*E-f3Ju=e8P8sR7 zM|)(X*B+ar@<@)X3Uy$p!dQXyTp)S1_O5S6=@0RPM zy%)&!;okG*`athax$f&dPp*4w{ThLbJ*D^aLVdLNujTqk?@e-jxc5f6KGb`IT=)0> zm0Ta_ySdb8+qe{U9f61amFv9{jrz28doyo7*qeECe{bf^eZ84Ccem4B zUnkTj>ucruM1751AFmI{_2GKITpz6W$@PJHU9S7;y>h*;-XquV*1P4pr`{#k_L8TC z`b0g86W_0AapJLh7AGF9XK~_@dKM=hu4i##Z#|0>_tmpFac}*Va{X5Q1i9W*8>x;# zHlk|R)vm97zIIFf%Tnse`mJ((qW&eh{-Az~TpzE0QLf*w-z?Y1>VGTON9$jZ>m&8Q zk?X_t%=-`3Gw(lG&%D3Co_YU)dglFo_00SC*E8?$t!Lixa zT)$n<=8${q|6Q*4$eh96z{ZP3ull0UpR6B{>tpo=xjtNfQmzlypOEYR`VZuKfBkW} z-dF#=T=&!;lk0ctkIHp-{Smp|TYp%t_hj>7{a+=uPj(_Qs~7u}#p}LPgy)IA*U9zq zzO0`=+L!h7NBXjU{%~K`&mZW^`uV=Tte@ZCm-X|#eOW*MZeP~V_w>C=uHWf9QLelD zX5<=l_q{%(lGQ@r7Rhnb{B?g{=C8ednZLf*m-*|yzK7)c z-M$Cqx~FfyTzB_9AlGmA?UU=hec7z>t-fs5xJOoDZM|u;U;l3k=acAMVeh>HhvKnm*85n>%INICfAmT-G7zjKH2{fxjxZm^wVBekP`lh^ZIF)R8gu;+Q%rrjCxOpSRSSpU>8KtEV$h ztT{ELn_0T!JmcuNFr<>vu=dlkiaoUUQ*u4H_Rr+Hxb~BBJ+Ssq<+>0`XDy}m&st7X zSxagvYgtWYEv>1nv+85sgCD6dpn0akLrAR=XB?5J5TF8yK`ITMV-4kuk5_0^Rt~_=)Ar2 z8=d!b?(KZ6^HArrt7@zIRt>K@a@BFG##WuQ>XcQdtvYMf+^Ta|U9{>0t1ex2`Kqf{ zT|M~5TCeT@WOUwGyJPV63wdAlbgy&>(a-I_~H{V#j%!C#QHT6M?Zt0bLSk$L}h zlE&AAzXpGnKLd~K-v{3uWU3{<48PQVa0;F*Jt^tT!mR8sNjlS&rGHh@VUI28ad@MJQ7S;l49iwn1=ZWP(N@4itiWY0eM21$i_N)0r1t$dqA zO4$30{_Ov0!kzuUaqv_bhld7b?bLB#Q0D87gM%l@b#YKuO5(S6XDwf=-Cf%wV|AhS zbnW?$?vBBZ!#j@cIH9B2adO9NJ6_*$TE`h3XAiz#d}i(ZKGIn|ep}MkwilDm@-LFK z_MbZj-$Odff48I=FM}75&hmFknlUnX9_cLqzeJB+gm+FGe4nJ$ckdx@)8GeUTfAHH zf(Eh8{C)v>o1`Arjyok4G!9-2-zL#)KK=l{{V(|Xy}_Rnx5b~A$o0_R`Eorlc&=O* zIAE&p%5#%YR1F=J|gko#p?lq|NhBkyiQUy=TQMnZ!+l&r3=@|BR&6%l{#%%#KZi z|3=;>vDv)*uaeTf|L>C0_IrxFO;Ts|@{jTIbK=c|gW2rAIQaj{_0V9L_Xqzac=_*s zdM^)6=UyI?h#x#IwH<0o&GGV37X3plB|nSuczI}ybjH6?(s+63m87%$S4bK!551gp zmVdmY@$%5mklGb6ud0@@v=z6%c2`Ei&V|qBsSw^k&c(eF1##Sh%i#;;AN?A z_J7mRXy)ai6EZIkO=Mmkk`-mgfuZB%y3lb)j4*#6Q(uj#Z^YF9j;T9iDqE>*bh<01 zvX#8%Wh;A4{ZmY3D}T+)b^@Bp*7}S9ZQm_9+5ew(WIHd7mq*Ci-AT1m*1xOP)Ah-&Kk54Ou0QMgbk}Fr?*Mzb}>1#bucY1gNO?=$PSg&6ZX(XuVbd|g;AXS+MKHrwrG-jlWLdW|1n?2x`}c^hO& zDXaA-Iy*y&4-7ZtS~zVV&ic@y;h&Z3!Qq$5b#eHmay>A7tXvm5$4jgc zeNrOpjR%KcA=kxWsg;z-`s6~V^v@RivvtRz;Yqn39M1ah;;_h-5@T{*=#>1H64~nH z(D19|dT{texh@XR$o0VRv|JZDMV^#MYy3-+e`r`vAB0~{AB6v8xgHq)1-ZIkB8Goe zat;ljD%XRqE)L5Xhm?>r4k;luFVt|GxBIsx=g{!Qay>ZwUb!v~UnJK9!|#!6*e`a9p9<1tv`QHn zy;4R-vy_q1EoEf17o^LW5l$IH!YL;t!YSiaI3JPgLdV&%C%d=viO%O&t(Se+$*bPF zYR9Twt3I*nrd3~GwRhDISFc`u`09I+w2F871ovik1TkF0*CtGDZju8m!< z?K-pT+^$_+S9e|Cbw}5|U5|G?*FDgERQE*psoiIHU(kJ7_ch%&b$_jUPxlku&-L`l zU0x^jyt?P~o;kV8>++sY_T1F-Rk^$Cv7TpoyL%6lySh&5eN*o_y%);eT%YK@zW27? zyL$J^U0l!Ad+UeQkCXeiPOYC=-&Vgw?%cXY?%lereph{OeL?Qp>g_wM@3_9{zEk_o z?Az9NN#Est*YsWAcU#|GeS7;B`kw3W?LVylxc=$>Q~S^C-`0Og|KBUm>xKF;LL$-1D6b3E_ZufKXBW?T?2auo)~y$O{d)Db>y0tuQ_qe zscX)VJH0Mkvun*&Yd$4+dEK_=&NX}1JhtYCa)(#<+VyLXTzmZ5=Gxb+ebd^r*3PfJ zaP0@zUa|HQYp+}T`L(yNy>spEwGXXbT>I?0&UI_o9lq|^btlLjVXs;D#&u_`J7?XF zbr-Gs;JVA#eSF=g)_rc>7uMar?i=gwS+{rHW9tsBdv>rk*e7?69XWX1;Mm|vgQpCh zHh9+H+~Cf^O9n3;ymIgpgP$3^Vepp0uMXZdxO;H_;1h#S4gP3o_0Za(!-kF-dihXu z=+#57AA0N1JBGFmT{!fCp$`vzZ0M6ipB?)A&}~CsANuCdeM657Ee<_1^yBrt>({S8 zV*Sh3Z(M)k`q!?1)A}>l&#pgr{l)8dt-oUZ)$6ZafBpKK*Wa=J&h_`M-?#qp^*>zy z+=k8#0~;C}j@oeihKUU)Z#Z?s=^M`8Fu&n~4e#G@*@mk&T(jZ24L5DLb;H*-+`VDX zhKDvRY<{B{qX6-XARE|?-;&t`2E9|4qq|+@!?Mn zUpIWi@Xf=w4}X35?&00T`-UGIUL1aU__^U9zhLzX`bJ(_>kDg$zm$39%wvUlDp9O zmgHt@AFu76lH7xhe=f;gY<#mM_dw&HN^%z(pOxHfMdh{qMM>_##&spRi;e$Yl6#=> znUdUv#``2UTc>$#mz3llZ2Wdf?qcKOlH3E0_m<=?h44yTacD0 z@@0LjC~ra9rpUJ-qogQrQCh1`YsGpbDdZe%{97Ss zvGM1UlaHOO)U}12gN;uYauyq(D&!n!{8=GK?(CJE)Sd&4yCo-&3Yo5dEaV()+*Qa~ zZ2UtZ=Ro7mLe4_tUnM8iwJ`D`$w_^9VC0BG&cev)vMM$&hxpsLNOf1UFNUc-)0kJhZ zll@C6tCrsB=nIXnD_)(orJU6@z6Q=}li}OJ4}fn2zag_q>iK1d4>oRf_(0=J4lhV= z>xnT)%8PeX`xm6|rSyX%hbcYU_iv8AIMRS__CD?C2Sx^=oBjXl=nIYiqd3Yx2sU|t zE?E1y*7pa{P2RPRez5U<=;ohKJNjbdF-OlvL@NJ4<55S?#z#tDX#9!dXzw3`&EAiK z&AyL-&7LbAKG^s}hZh@HIK0q!M6isI)mnaGWUXKsAK-%{YaCu28F2W(NWa4iBfk*( z^BK~6-kSZ5oaFFZMox@4^mmDAY5zDhG9BpIc+m1McJzZX5_@9Y&idDs<9~~c%andl zVoN$+4#_A@>5CFCQ~lYPP3Z?D5~bx2$_P&B3ypIX$M%wwfXu$t)?Ra9Yp+?bwby2c z4>rzmc(L(LhYvJ9D!+0_e_b8qjl5a*=N75n*7$+YvbI#(prEWJ75!SqX;zNBAs}p& zF{qp&MvS~J(9GVi3r%9PmXy(?8Um-(J^UI2?Q3ubsf``b0+Laz8k9B%E$EOQuQgJc zw+qVjDeaG;X}N=fvihk^`NhWg#1Gl8Jy{fd+lZXUW&g7t)c7RlXdjhG_ot+HNctMm z+iQ1-FETkQb0U^~%ZQxc#a{R`!k^6=B4^}q(jsT%g`_h%a>fV$TN>v}ekL)~Yrh&~ zdhJ&O;cxtJ;mKybjOQDqGoJrNI+H19g(6dDhU|n@Y9ILjg>=UML(&<){GuiNVf2m2 zuUJwqZPS^U|CRWt>zMv<5oqyHHPQJyK&g&c5dAFoG9&G$IsRtU_d3Tm~O(Q$y z&Qe!5ZXk7e!8cQ^i$)V9XwNR2n-97=oV$O|Nu^~{A4dFCRd9v<01>YZ0<>YB!Vq^@p! zm(=BrJ*3{(_ztOeH+GZS*7!E5@sS}(W!CSP-lgZMA05%(%(7PfQ}T95-_SGG?b6$n zZ~MqP&0GDz$Z6qJE^GTwD0TILk)NT&M@L5BJJ7fq>O$kck$SlCaZ(R8{)p6rjgOJq zKe8!E&U$B`xJ07 z2;V~Ee?VPme3jJ0jlU=LkVFbSYyW8D4)Pw9h@p8q8h=OLeu*5Kx4m&dQkex0Hx@`e z)OeRt#e%O$N=E4F2O3X8eXy||>Ox~1sfQcCMe3o(JgEm8TS@J2JRzw}$NmPt+jNXK zwm^MAB4F@UZAar4Nr^V;C0``Gd1=9H}~!FaTVqJdv-Uy=Gvsm&hF;24cU|?dp4343nElSL!6pAodM z8U2lQvHDwjxxQ@;wdglstTipObbPR7fBn0nWv2dJ+S09m7q+DJZ-2`i{ze*G4&!h5 z_Lf8S?=bp4;-N+8cl=%4auk0twtY(f?rQPhuG!i0NgdzOa)kcfjuC+QSG63i<4()r z`gf$|fJ@ncC&&ubURn=89s%BRmi!Wi%uUcJo8`eFat}0Z$H=$|5EPU}gZ^D@qF2<_o zT@$uUcwxexi4(BqdBDUYC!RdH>VDIym|I$?GR?!768QN@z+G);JHDGBD*-tZ-g7W$ly=Sl`?} zWzW$Va@8AoAAx*!!_G#+?sc4Yim1d52!u7c3$nm+Vg8K ztG%IieeFZF&(ywDySHviT@ovobLx((JGJgStXK}!4cBd~+lsZyLfzi_N%b+TQqHbF zvVMO3Laa{?)(_PW*KfqiKUW>}f}0?Q!9><U`wtZ`=JY^*fSZ(P{8ym1g~ zjKhr^8@D!Y!|LMRrb$h)rkPE%n~rRn-?Xr4dDCFiP}6YJ#-^=J+nNeZd#6vD9-BUM z`t0dPPM<%0;q>Lx2d58BAD+H(`qt^&rWdB~ZJyK|Yo6IW8{gi}Z(i8Ey!kuLYw*?W z`sVwaA8&pEU);Xg5^b5*($Qk$Yulq*=HrXob6YNMS>1Ad%W%sEd~N%9%eIymTlTcP z6Ppxkigm<#W3yw2#|C02#TLfSjjfDb78{D)5?deJ6x$kmI<`IbQfyD`Z536uDyC+r zUUi_FqmEK@)yZn1TBa^g-%+d8b?O#%m)fWvQje?W)NbXfH`IIaN%3j%WIP@3iys_6 zJbr9^e*Bd9nep@DE92jfuZiCfACBK0-xPm1{$%`x_>1vZ;(HU}M0KJ$(UF*y$R!R< z9GN&SaZ=*+#FE7MiAxe!B!&_(_a?U_pGa;?{ykYtzS$aTozmLW+SWR=^?=qx zT90TQXg#s@)Yh|Gm$zQrdRgn$t!rEFXx-3yf9uxPCtJ6*?rtr#?rGiI7HXT+R^JwD z>u8(V*4H+>ZBE;fZ3Aud+ZMDfY+KT{ylrLMVB6}pp|-Vcx3%5bc6ZxGRm6%PW~!2v z#CcXxd1FXD<&GhBl{1FaQH3$21@-biQao3wm&TBK>YrmsUG?G^Qb+w`3~53A3R2F| zqpPHB+udVGJ@v~mq^?>&hSX8N7(-f6ckLr(+kQTV)KhnkA$8TdF{F;VV+?6QoewEy z!-}?XUAR)}DXt4wN?pZu;Yz8axGr2NEhw%FmrL2UbH|W+>YOp8u39#R)KN>vkQUTO zA?33~x!vZBA@$T@V@O?f=onH*ePj%2K^?M>lx_R)7*bCiJciU&2aO?h)a)^&1vLp$ zKCP9vZQ>YGPfZv@>Z+jQD4EvN@P?3G4Y+HB?si&+lq^`m#7!~DWWia;s7}5gz zQ2AQ*Jj;dW?6b~|{=Ux|G<>NtpNHO8S)K#$s?5g`sJy&+mIHsQ%*TFPSzZAiSedVY zk*B;otc}7a%h&ojlH65M9=V;fPd*Q0Yvw|X!ILZXIv4}X%Y#MW z+m-nW7-cHUbK&jf`B>*dMS1hA0{p)+pNH|OvOEVpqB5V0(YUgH1@w{1d>q*-%PXMQ zROTyS-YGASel-a)zaROl(d6`e$ox@iR5o#+d>-b7a=pBE!an(2#eJLd@;vmuO1%zd zwetFr)960=3K)kg%X85~%gf`ncSGjSTc#Zz`fO!B4y|TQ5`a5NfCLgK31DkP4&wL(%*x0Fe!>qC%?&O6j~V1>j}AFPnLif^-*UgfC%3Q0j7P$r?S z4^&7z)mI^LRklLnD7!*ZP&Y#|$`413n<^x(;!e=$?9Fz4wL;>lvnwR7I;%qBs52`h z1$9Q5gzZ{fA@S6r3W=*0R!AK6l?q8g{S=bYb~$Qog`}XiLo(`zZ2L%s#8od;NF4Qi zg`^N~uGoW{7oT1sIU)8Qt{R=U!C~y(3W*ncr$XY!{#PM!VsBSS3bD7!B;YW%w?g8@ z{#zk&V{cYSoEZ0BM{9Tj#_-Q!Js)|0^iltN!Tt;PSB{5gmhQ)KL>S!<;hg=`vUEqi6I`!XrQrdk*B2D`yWk^c zr$JpOak7B@Mzu!bvcI5yC~?Ebm1S{PtuBi@iu+$I-_KuASCqub2lvBFI`0v;L8cpXt$N?qktpEFg{q+7C#=KGetnc$>*B3AX zmZrPvSwB6nZ?-JmQGbziV{f}Gy`X0K@!}rhAI}|D)Htm_tg_ zISZHSb1eF1Y%X}X6odvyPl?YRYU^heDP zuEz*on$DT3^m-TLd1<MbXY^3N6wN^FRY}u1 z)eO1LPje(q$6&dVo$YvIiM|tHH9yTS<$A>6qkbD;v63C?c%5#MZXHI4>m;YXE?%S4 zG}bd;$?m+ucQ;(s*K;twyWy|K+pwDpzPQV){wf%IdFnaA*kc4Y$nSeR809Xn-#&h) zLv6S=#_x29ac%5%!MIl42+aP*@^28#@_!SYzKksUi|_IFD>RqF_Z%Q<%xL?N95yc%;%2ucg1ua!EAg~*GPH`8RXp3qV6jR)L zr>s#m`3S5v3K~|^d;~VQ%Z+?!dA*<^#ocSl)~H%RgQ`Z*3RNv=shTQiq2dlSujp6b z1Y%7WstW}5t0#asHf)bWhxh|`=IQ^7)Z>ymqPUBP_M%1H#Ut9Hu*PbO6(K9tep;hYlz6|ZXL1c^7Ln7OPp6cgY zq`2>lk|Qy-Sx}?;v7ZXx<-Rjg!N&c9h85pVfEA(z#di{jcE#QR(xZmDMr1oNdib)% zif<<{-wuo-zHE{Dk;t~I`+%Us+7a91r$X;0k&URUB;QEv6-h0`{v~KvtSD$_%oDUD z#$9vN1%A(+Z*Mj=hpM8YB^?e|; z2<(1O(3aRPAe0<=F1Az9me>wKvDkJ&jj<6Qg>R3&AZR%DypO;E{Q#v{BQe^XXedU1 zCR!7FR?uLKUP9T5*k1%KjnOwKTNtBn5cR7;Al5X7QBr$*XjMF~2!6)j z#qnzXMho$&`gd1+ivHahpR9j(#3$+B?P@Q7!*k)iyl$1^NuPWU{11Q8OL!_Md;P!l z?~vjNqU`an>EA)c(?&VoysCefDxOTrUi~lq+aIsxFZ^GBMHU^2S1}%WE*{mtTjKgl zwn!`<*73%;#b5a7H@IW1_(ixI%Sv$a@Yc#8nzs#NURQBk8>n8gzgV*#mOPtLobE)gx~#e&N{@L1{mk; z2A}0gfN{=f#Cc$z{s${-`IiJ!&eQ)e)@eDuQ`DI9lYlX%YWe2{Q~o(%_>Gp&7fd;P z2U5R8--`yIU-zF-K7O)zRz8k5LgZ@BK3W6nradq;5a-((l;zP5|Jng))SimeFG;?9 ze7?w79xRKr)AesY&acY6_!khmasAC%oZqTBaekkMo{iIuvswkW404J zJOYk%iE)|Z!0N*y%f~TNi5<2;=G);>AYHdO=LX*ne*)6&fJS47KT5uQoHGJz!SZ}N zJRx?#_qDLYAG96tH7&gTA%sr+0fgi8a2KsL%sPVE@|S@Pvo8sz{6%2H>^}rk{x@L5 z>~6u7?*ul??hs5l<_}@^MYP&y)&bHzEdCFX<>Q!fgxSAA<}>>;kk9OHk>%r@g?wgZ zHh>quB>D1jnHRt;Pi&@#d&2BL!Jrq{-y+5fn%P~N+3lLylCMPLuj|y;5PI=F2;KOr z2%Y#V2*+iEL>dS zfyR`lj15qt*Z}&)1}NE=(N?GPJ4qj)#!?dQuwvv@bk(>8#9 z{^k>$2fT#-);NJvk*s23I+;yO)6ACGAi*z&iwS-)>?Qccu$!2L&`Io%ux$27d>E2q z0^iOeC%^u66a4zuNqh)lc}{-8TTFZcp_e!up_}+PLMOp_ZG3k92DmnMJzp?+Uk+^S z`gOsSe+}5!^<2S}F9SAqHRqgAZr)hN?36HXEK`0#VArpKb6sNMd?4Mo66cC6pZI2A z*JY4t4XB&3>r#>B6W;*R?SMvO*RM;yJTx1-epBq~pK+2;=&y(q{Bqb$tUy>yEYZxK zrI{_Y>$i34#R$E`MF`!*N`y}0TL{ao^>avyi8~Q`iFF9w1kdDf61OAtzfWGQ?>WXX z>nEND-^OlF2_~<91~ztkLNMi=k&N9Q6HGa0BxAR&f+^>WBx7QNZAn- z}DE_X1}Bi&p#0z60dSiFbkg z9`PEG&+J>0FAvRzSvm0p`u&k^FBtR^|3T;`{)e!b;H=^#IFpq5d9s$N$r^-SvKpbA zoQlv%PC;0na|R^EB=3;DB=3;jB=3-&BuCP5Su2UJ5sbBxM+*k~$)kX!A0$5|m~x(r zCH)|IgkZ`K2Nr83c?OqQEBR4i=?BRtVV=a^@)`EVq7E1PI`DET$3mU{)sGC>| znxr3~9bzqL6l=`1< zCoxC(BMdYcW;yojx+NEiET81Oq1yqChFQ)By531Xb!g2f&u8`=VU{z1m&8a7W;rJm zlRTTkN$ztVMe=%``eTG%@;ZcW@>-p92w{0Y;G9rQa!&A)cOZ0=oD-bnFhYN3SY7!v zn%sl5Vv@bjOY%O>P5uj^lPn_iulb3-#=_|aKs#6OWeh<1(vMM!jHJ*n zV*pB%{tn&Jk5Q_Oq^Ps>ca$#u9rcot1X`rOqs_X%qrG}0ZRZM&*A9=e+;;eeRcy~7 zblTx}Rw0716%37!Wvs{qEMrARW3sRSEjKK4bw)MblQ(YScn`Qc=a&>IyON001aqVa(CXo zT$lBAgkC%E>D~6PA#~b#GLRl6BhUcG+24;3(A)r_7Lqzoqq6g<+A+eSrX1(Jc8>FI zJI8sao#T8V@>zXFX>D$Tyx9IzgkC$wWaPgQq0@c?!m=5m{Vqs~?LSB8wPU14PRjsUE?97;Y_iP4V=@hj?g9`e5>^L-3y zSPzHCw*Wn_y($I?`*6#6*6%w0gPtM1u!HyR(hECY2bNyg!FzY-ZOau;bqdiybaPrvtM$>N<{R)l>^w zE6k?2<|E9ent+Ab6xV!&*;E6tFq^6u45m`Gz`|?_`@|YkJ{4G)O-&I@dCV}25`|gl z7iLkiFq^_ElFuwO2(zf0Fbhq>EZQN=LZdK?dJD7AEX<-j%`Eh5W>eF^pqHvc=%%J4 zET*avI;qJB$Hy$@?SNU#+X1tjs|~XU3MM0*s|~aLf+^=*ZJ5Qk;Q_Ops|~ZL4I(*;K#C@~J}tW;u^*4Jpp!x^AgHk>yhd18EOQaURziQwK`Ed@3U{ zmgh73VPW=zV9-n9jt|V@-VMxV5jv?}gyUnjWLG6sva6CR*;Pql4i9{`WLG6sva6CR z*;PrE?5dl1^RuT#T)`=G0%Wm%ot$yM1)QXa~73t z3~ZRaNigN>17>eWt9@qg0`i$17Fj;^%YfP2AoItKJAr&=ZxvZS^$Q@M*_(lUX4gr+ zeCj5Vu{@vI^};OguDsOG5V|Sedlgf+Aaqi^V=MRW%{uh~gkI`?gl_6SgidM`LjV5k zF>_xN37()M&jzw>0otz7IOfsLYA`8Q>*SoLSqp9IoD3{h>zpJQYzgP_=%b3)O*%SHDE1^NGhPsK>ph?Cgv_q^0 zjbb&_TgD`4_GNjLr>zG4dQ9q^NGo(kX@$-y2#cK-LTAQ%2z^_;7O?&1xY_1tZP?}$ zmtmWuwPBl2T*PGQ1YpB9pSXxAKMvTi{TacO=YfUo&SM2rj`2Jw(Xh=YE3LnCE|4y{ z6Hjl#_HmGD4V@g%b=^8YBeHxa=K|dhXf$l|*-qCRnho3jsl)@&@3W2PAh3;RC9wTD zgvCxgby-g5F$l*s`gDE^tu@TzeY}9#3xEx?+?O)Ut^hX7E*DIu&I2~geoZjt=KvdK zmkFkPWx(tTv|5+gc_EO`>~fLiJ1+{DJr6RU*$aStX1QNQSsv{$%$@_JHFkbO^5r|1 ziHzm>e!NncJs%8uot!t_&Tk?tcIp|kbE#(b|G-}n>AVl$mxzVXQhZ<0`8$z-N0Iyn z60w#@el3#GJimlQEGKz>A(GKN>mU&;N*;a(rWp=&@ry38sN~_dP?U_8^N@Z+7^9Em z*sSBD>A&&cp~d)w7Ipr@f7=$h`MG40oKouBh|N%Ld($#s62w<6}( zlGptbF~9AM-7IPTb(?Vq#kw(Ltc9~Fm(~%3+%UlQ|B#`hh=UAre5Y*FZn4inbSKr1RlRp z&^nau_pf!Rq3J=JfOI=M?-#VL^TD8}aqic(gdWp3Irr<@qWz}#JrMNadm+q$fToJ@fbacU|Xib#LT-fz$abgkC4_4%|-vz5weL zk#~a`2D6U8J`xRSRB}(;`8Qq8Ze7AIUBXU;PUjAUdZvnE{=(Iz*SwFkVkhS^uM=9J z^&Nyx=l>A;*Wjs9G}Z*DHb5#s@c<eQ&DhFz0TlVX>ig}WxO zhFw*xVHaoQvb&}()CxIKOUvuxv##4U6`|9`S-U(Z*1(YyYvRcHQG{;S9E48SVF=4} zV)YL>k45NpaSn33jz;KoeHvkTPOR!7Cuc6Ni|dMR*JltqU7Wwlb7E}`Ir(Jcb#ab! zyXGTwy7qa>>B0&ba-OPl@_ESZ!ipMlehFcDnO}vZ*mX8Suj?#?Zr7Ozovt$wmgnR% zQ?ZNBOkNjf0Jn?JOitG_gylIegrwN@O@v<81qj`)Zy>G_mz5scBK3!{wgVU#~8nDPgJ*~=*B2qhy<7e_aLOx)D84XZxxyylO>G>#6&&ANM?{d0+uQ}yi zzT5RM!eZBb2%WBb5ti8?t-U|3y+5tJKdrq#y^r^&(bueE8hy|5(&&qpn?~QXoOBFf zd6|8X6w_R@@X|IyH=RM~qwpP+NH zKR9XjhjIBz`g^dS9>GJK(u0Cw%k+1EWp+wmDwy(b1N$@Jru4;vDPIXJzLMs>p!iDq zo512LY2FJGGynIEub@Qn73ddVLCNAP=^q$hfd=sv)J=Q^n#5Po4)GOe6kkET#aEzN zdz8vBBY*6y# zo-TQEPnSHor%RsP(0xjxcNgiBC--#8lY6@4$vs^%%cp}Uca&&s5Inh~WMhNi z$sHPu4T2|kXfiekp4_3)*dTavhh}2~d2)w--v;{0J_NU`!_8G8a zy!$VL>3vTD8}EKnFy&7G8}I&;V9Fl@Hs1ZHV9K`w8}H^wYrOl}z`LJ7t96O#zX0ix zIQ=J)<qha<*$(K)ajMbV^p6}hy3bTI(gI@Y^ zgl_t2gvIn95jts(isSOxZm!h}v)yJ51B`TYtzMYzHftD^PlQ~U?KW!|lt&>KX1mQA z2IUsy!fdx$!=Sv@FpCm}S?CvLQL^}Kcb#Dt8iZNYO_+ryVHWKWW}#7-MZIO*fM#J9 z-U2Mi5#>(c=-8jfTA zsN1Y#V~+0rGC0#725i=`DPI6NZ9@LcIyU9pi?h)+Kgd38XFCjrmZRT@x_NxzA^I6_Bo5H|J8HS*~sC zc64*z^qIXv^5wfZNBYdJ5oYyHZYbZ)dClwoK0>#fvtF^A^P|(v8MAC=+@JSP#r=8z z0gGLGIt5dn0v5aWbO@%r4Or~j(<+$q1hCk(CoY)snZ~Xt zQS1u+Vpo(bcJ0~U*cBSYuBe;X6`I7ZXouJp8pW=txAYij7Q3Q6-D99%k6b-7G^g#F z(=LR?9^TtJJ-nYCSC8pA9<4RZa)nfTELuJQY?$Q=DKQy22G}rrv|!4Q0yfNkN-*W0 z1UAebA((Qkp9UowX1RW<_4gbNL@oKA69Q(Bf=p{b-3+sz5?LPYFwA}uNNeojI;*aC z&k-VHc|Nmqg<1U^+rwv9w}(%s#hxQIv%JqQ_wLhm>S+kQo>LLJJzqxX^l$_lmkoN4 z1TSKPUh*Y2==}t+*r4}t!QigdnmJZ%H$*WTUB=P0k2 z>kV%25eSRDA3^B!9*nRM`aiG^+j}imImJR?0;^fQ*N6l>isULt#9AV`QY52!E{8-c zCwYD#lF>Zhg+#0~o$sJ>xpbPdVpj(*tf8U5D-E&NK6ao!(0%4>6yHSwmjS z`vU4B=FYb1g?vgjy=M(D%VD09dxzc&B@fG79e6xudp|eI_WRO0)X?;xAt2q(-s=Rd z>-|a4(=L&GdFU~HlTX;XwrIcUeLoKRFn7FloqJbGzJcEF18M$xZ`Ao%Z*!Ni4z)Ht z(%GG1{Xu(3GTxQLmbE9u5+zZFdRBLQEVg_{BBH_SZ{@U=Ct#C?!y4XB%8 zooicKQ}4q-z7@F+t~H|GX3YDo$nw2gh1o}B%zIF?dB0|J3&LXW?+`k@8xa<)!@?`W zSBLKmKZL(I|4JkpiAVbIcjixuEW=-yzag?A@@QmtZERhLz*t=dqvwd#ecB2N3RpD+V|hf5}{oV0q<+DYqi{`ZrUc2C+fIfN6yJ0|x{o-=s>XMiu6ymIpD$!l>6 z_~yw^PToCv56%IvpVBd!)m<^5m4=I1M~BwRUQ9>MZ=V z!y|Aa_$gDDOucaGWmB)i-#ff#>XxZb<6Q7proMx}c-U0kQQeEbd3bpBK=n!ZtB2=S zudKcdfA{c~>h;x|@Rtvtsoq^(tlo>ieOO)7T+>lAt0q@-C{7DMuI8kg(`%O0oL_SZ z{s!U@P7S}a=AN3(HIL%&AnvRw)Vz+!q<8L7zjZ?%I)Gn?)7k>?L zu=aL)5Pzs-BSBR?Y7##*B0>?5kojtys56OZf4y9b%)d)Q8!R`B2E`SyKZ^i z#dVj}U0t`f?vA<*b@$_x@u%yy*S%D?r|#|gXnift8lO?$TYq5vocg2c=hmN$6UUd; zUr_&@`qlN<)!$No7tS4jsQ&T#=jwOYyY+9>zlYPur!^!S(hYqL2R9tva4gOsKc(T! zhVvR$HhjNfO~Va1iTv({O$`q>JlXIe@Wvw^HiZJmI%eTCf`+<%m#TZv7Zi&#oIo z>e#hoNDCRBoy~q;R&Iu8XIDzS4A0K4l)9N0$B-5>_d&|BqP*NqV@SQs@5Ye2nR~~O zI;I>Qg0FbSC;46 z_4}0P!6KFU92;j^j{2ppNmGTyvl}ZUjyc)TpWu`@&CVf+i+>|t05_%Sj(xHpk5V`8iR_akPHq^Vf;jvoNS`Ee zlOC41K9>vmLlXZqt|6;9g;8Jc$Gr?s#bbGX+|BS5ywSLmd8aI1uz4ydY-vs<1W)?Z zLyQ-?e4D3>rEN%hElYr-Y8Clf%;MU7M$dj;52*()5D;nX+`p<|&mP^clW*>LlZa zk6wuzK4wW=>Sym?7WeF#WpUT;E{i)Eo;n9zMqg&9#6@3bo5V$5<~fNQK6r{HulM6# z=9#j%o8c*zqv=lO>9TmiP9x6t`PZ}G=u_|l{s#~r<*$HVRGRLg-)sAt{OD7q>8^b# zpT(l@;{W&fKYCbcx??w$UGJg4mHKlLV@7HD?CH8bqOX7vq%^%?A6j<3i_xPrKl^HF z`A+5@#KCpI{|1R0{_m2w;r~vF8~)do#l6fOWpOuids*Dc441_Vu&;kspf2A&05Mua zYe(NGIS-y+AO|C9}UM80BQl6A=o3Q`LB<{w`blIG@SX5kE|V;Hw2Aj z{w-)I^SYolnb!mjX7&hLk$F|n(#$J@7H0k>sNd#F82GmaZLW0@t+0E5=p`fe$3?c( z<{BGQ7usA|BkH$5@1tnJK2gvvy9)@{MxL`}1v#?CmNnu?%$^~sjW$=LkuQ9^&2?y^ zVY}T&)()HN(2!XpHdmjChBE&E(w4E4B3lCs`Le}!LS%!mlrLLk$3?cnR)UshcKNAM z$Bv0?q1_^=KeIzp3z_YLc4bBc?aaI&Xh-IGLEG)m0f7zJoV!RwJ2HQj)DfGzNR(~2 zv11}$@mQ???*RRp4?nJt1AX1HQNSwDKIu4!nM z{RJO^KdjD3A6Ou%i*2r1qrI^Hv4XbP#|VnqTo-3*BYLa0D$4t`FM}V{0O?+Z{_CeM zM(^@vi*2mp@>+PwRFN%0-}dt@vbmCuRJ8oJKpY=d*^~WzQ3qp&FI#LMDfvb)cKEVI zc0Uk23@w@ngc?K(nP2;jW*#Tq~&G)@L8U zlKSieSZWzpi_n{w>faH2iT)k3zp8)N*k|kCLHjKIyTU$G|1P!9(7y}q#rn4&p2l^( zRp=%BU1aMwpuxwt7?19aIM%1~=sw5%i|y~|^!M!Z_3wy%vHo@J<@|-O zeqH}=vCq@LG5c%!w=we&*R*V|>=!ddgs$C;(8~-VEZbeN*D#NL6;tgWB6MxOyW`m0 z#VpTxBP2!p285pd6NIjPJwnI+F~V`JN!s^gCW04nr^DvDB5@x0cfjx;E$6x-G3A^| z+25F-Gbu6UzXnFH*K)oAOiVf7^kvUt{$C2F`~f`<_$B(ibpZOcM~Ct#*_Y*QtXRs` z>|I&|>gM<00egeU@@R*D?Ep0TeRROSSMued*_W|AT6X~Y`J1Tkthv{tydQal+3W#=DenUoX0utrlxKj2*=(<1$`1~hcJ zARHgFr=him*;56x<);7}pXFV;j2l_rnHy$L7R>x70UKsNFPQSr0UKuL3#R<^fLY!V z`OKaw?Bug2i!7i0O2F(%koi7)3XrZ__VXgkXHNst?SMwZEbm)%y|cVKV=Y*o@3Zoa zYIXq_^s-+-=w`VmUd*0|(8>C5Z;#`>k1Y4(46~ODX3P1mj$xL2goat}5gKOkjHEI1 zUkYrPE!qFeUJSWm7SC6H`;dQCz%1@7h1tu2e4qWU$nx3M0kfAv<}>>PAfMSwM3zT8 z46_#lX^mO#&H2n;Br=xgGrLNBmb-0U_B)!{%QUlkFD|;#Eao*~ma~*DIg2}I zl*BQK_ntnpoY#D2IVWmO*$07iJD|}p%em8MmUE)kjPiVD9};Fczj;~Ccy9Iq%`E3V zC(9Xce9ZnEtu@TPE|`q$0XEFODwy(r0UKtEf+=@_4YQ75%3lUH%)TU;ay-`x_y0nx zeP;Pwt1X)?iY%Y~Pr$4Tna}JVAfH)BWce(gj(uid2GSa{uS&jr_9clerT;Q+t(==E$>SK3$uM4f+=qU7H0ce1yh~?7H0e6 zf+>#y3$uMKf+_DZ%%VhL7W#!*lq^2mmp05ogD{J_3A4~7K8tn;v(PBaqTb@O&@4WS z@-(y1&)<9>-~aOZ_~w_}$2Y=?eSH7R>Ek{1_?YDkW0>U(qkRS~p9gH1JwY%T;ag*d z+2aIL&bP)4vwUlenDS$Q4YNlJru@W!+2he_U1A^S8LhwXIFaT1Fh}{L0W=t9=K<-u z_2osD@8i6s+X0P+*%KsRzK>7OtOd*SnLSaM<(C;=AK(9S`}B7keS9y>>EnB01?ZMH zgZq{R^;jCzTtB0Q2Kw|f8d^J=8&7>w>mLWXuNTeo#s${RszcL4F`Q_%U;lN`R_wnP zq1VqRB)9(>giim}2+Quj`-dSZ_Vev~um3iLZvU+ao&H-8mgn36NwJ@!n%93fLbv~y z2%Y|Y?&))%W6s=s=FE`;H#d(tbNqIt5K^IBXin(p(EQM;p(UXULW7|-p|znqLmNX| zLQmpk^g`$jD`ZvUT=e~{SyrEQpmj)YIV=rpRINsdUk|XGJ1@Xa?rQ-q`Zb^U(xwC=cGdllS0rqld2H44+5#T~@5imSb=U*6LFZY!IySdW?T*&cW z4*sI^e>uQjj`wxG+|BX6&c{yftD3vTn!9rm7IS=C(8=-ssLU$4i*@Qn2)!KVayR!a zgiem%v6ScJTQ|kr6$rf?-|lsDybo}4KR{TXlTX3L9G`-{96ia+(UY9qKF`{@n|02c zbk3jZoNIMXK3SKSsr@Xc{Vb>bET{b}w~wFY=vBoWy~@k|0->9`3!#(aw;|`*AgP@79H`4c!&G7wPxm-_Jr1gdV~f{!fHnhPOH)FZ6Ke zHT?S{PVt`*dK4a89r}~iXf=kOfbXV4f3|w8p3w8wLDoT`7pytfoY07MmUUKWyS2<( z7TRH*Z=E07X$@MdLc6SMtZPCqTi07RgbLQ()`pO0-DCYG^on(_b$@7&wZ(ce^dD;n z{)Mf-Sua`<>p%E6F^vDLN#W{nwKX~17;dztglC3lT2sTl;a;mcY=`@-ns9&kBUXKQ zPI!)$2p=Cl%}RzBg%?}d@Y&%d)(67N!slAK@CD%utPh1R3}0x?4zCWcwhjtk6TZee zIQ*0FPpl7z*M`?xhlGd2!`4Ue9?_lFq2Z0;jd-uy9XfP3z7m{#69?(VMMjqJNA2-Fi0qV)UQZU!yNaU$&l)z7_qS^+NRBs;SnF zs&lK(vx-$$R9$VoinGx0*Ox;{jK|jDM;tvDf0GiQ6^BCazt2$r#~h&-j=y#ffB$j+ KX*bL7@c#qk4sYQA diff --git a/public/font/Twemoji.Mozilla.v15.1.0.woff2 b/public/font/Twemoji.Mozilla.v15.1.0.woff2 deleted file mode 100644 index 5bfc425d66b3f158ed26e85674502782dcb928f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 491736 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 z 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

    4(XI(kZ#Vws*67-t8wCB|vbQgHz0^xs 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

    yRx)qCTXv^@2=_Jn(=O_i58w1g|^WEo-stuHO< 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%0D(^=eaBo3c^0|Ed5UI$i$hQ7Ajf26o# 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 MpW&R}X}bXXACQP)`2YX_ diff --git a/src/index.css b/src/index.css index cde45ce4c..821d24e41 100755 --- a/src/index.css +++ b/src/index.css @@ -1,10 +1,4 @@ -@font-face { - font-family: Twemoji; - src: - url('../public/font/Twemoji.Mozilla.v15.1.0.woff2'), - url('../public/font/Twemoji.Mozilla.v15.1.0.ttf'); - font-display: swap; -} +@import '@sableclient/twemoji-font'; :root { --tc-link: hsl(213deg 100% 45%);

    (>P$>h`NZaO`l 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�wUI1)vo%bFZ2t2#wnT_^NnJ2vkrE|PWN?2Vkh zs;o_VA>Jf(xo1DHXSpz_tKfk_QAJ^x={x>_(>)-lKgO- zscW~to_Q*HtNl}RNt}|-NW_tj^q|^H%^2|=$jlure|>%><)jvNkPDE%4D7=)>9bY| z--=_8CUHbK%~|L2awKIl>SX!{eFe}`?PNZmbuoSh*IG_Gu0JJBpzl+OAHuEGl(tR? z7Yg!LH3I6E@bg16Os9+p(XT*L{3P-3Y9PmDx1Q-6cyK69m{RVkhr*$l_=%buA9w0{ zt*z_*#0WDru5Ckmz`Le2`L|#M7ujpk=@$ z$O?pjNERBbHXNeEFfgu8Aq(c9fud>zkVH4P5+$RkYfWzDLYyQnv}1uGU-?ESW#=<)vF4_XU-JDTiTw)dmdoMyaa3IjrH~`u zEvjs@3kBIk_Qa=COAdMIX1bY^x~JE0@55>ixd^e+Byz+7-nV9sHJPTxomK2`K}@Ag zy6C?#ERc*WURDR}W_dniCUecSbhoplVi29Aej`R$*rvq=jl^%ks`Cn-Ef5`v$;#7= zcM5r^O=IM|a~l6S7IPTj{{DNURgr3$R`SQN0W(KYQF7jOhm2IO+ss10CG#`!*T@EE zEF1Q!!o2y&Oq_Sj%ba6Iwbf+)UXu7b^;lZs{L_7RHcWJp)w)(a&}2#4^!V?#tI z4(h0mX+<$eMO_mj_DK=wFaXl-8xuc9AHdet+6EvQG@TW79h`s@B*-bc!LB5KoXp}1 zW>Y}s^1L2(pudZbU6E`bGp(X+S2v?g*Zf7$wn{v_CW@E~%d@xQO_No#c; z^extf+pXC0F&MfJ12Hzk6%h5NALm8`&2AZOK>e!CwF~GLiP$WR6lxR?f_Z&>L5P zjC>WTRS{@;Wg`gT5dqO4c|+bvJj>OhC4Flq_A?*;mG;*Y!^CBH38kHQB>}gObrjKp z@Hr4za-Ce4O0n{MVK; z1LNziI}8v=;H#GI!Xx9J?s zq!$}bbTEk>=5P3ReJNA85(Vj46quDR=vW}1N!!n16V=*Y`m0v4ir=?Aq7Sh4V2(AS zFxY?&x?Uk*!8}ume@OgKd@d5Z(Q`oe#puyYy}y5dHwwd>7Su!#!$`n>P((5?Z<_Sq z#}fY`tI3w#S-cyBVPyQZ5-Ej^rH9mqm~VTjo3)2b2&Z^ZcZOx`Q_huz%u?Ov0eFn$ z!N_SWrZY!*JQ*MZ#%QU_IQE^MLb7k`bf483n1_Y`G*FjmFXY%oCS!}AN!`SHcu4lt z954VT9W}~iF{_)7&KAV*5g+ltsYBZCk=2tIYk`e$tfBKx&0gB5H|lf4IsR7{)a#jQ z^{*ywym6v?glHA__$*ah*VR6elc!qMp_awszfU(B)8O9dqag8VV%WN0#d2Wg>*=EE z4>q#Z{=8-Fny;#f27rzVMZ;!gGsXw`y(gT*1X~&Ea~gx?o5`!j6y+SeDK$#(a1PuV zpMKu76utj)$MRUyU-8;1-f&r$)0{tW7YV2g^T zWefnyjqPN@QJ{>eu_38*cDBg`g0|v%>NVt4GR4}gXUNx(8FU2C!<}T$NE^C9kz~2Z zRA8apiVz}nl}QRr1>0I3gPXM*`vpIk$~h>6f?IqwI{fX}qT9amQ(pCLf9ZBFZ+}+n zr}<2$^zgqzzkWiyu6Jl>_Ep+ZGcH^sp7X6d=U=E#o;qJY=9uc@gHTlPP)-&95fk24$4oy} z%TuC*oVzSO7s*Zk^vO?P-~BP?_lO0Ym$(AHljkPxOx&AzSK^QHC7qI`+So)0X&Hkz zNvc|6-)?^+J}`uhcGyYbE}lZ;kJyHZ%`ftW4C2lo_kpg~LInV61~>4R+`OVTmi0@tIR*$zj?NkCeZCPv31 z3o=`E4IuWA)C$8vl!TLCt;sEoY#4{leZYR8U-i;7G25Oo- z_+}D98Y86cgV3V;yQu9(28YY_&9FidJZdi68R;BphHVM1I`o6=1XWi`e!j@;`(F$~Ur3F+Q|_qTrDDf*DJhYa+7rrnZ$w z%sScria8=6JlW01UyaWb56sr*k-iR})im^fa0HRN3mq3u68yZ!h}r@eXZQ)d6Fp=? zm_6{_kb7ow;4koN^VnoUfG?!x)OJr85k4Vs`Y_i_mhiMNMGT>SS~i3_S$YTd1sdM< ztli_QrMIqTcYSlOn=EItRC3P*MyiJTrgoAO%;+Jb0zIC73WG3YdH_5JuE6y0H;I@@ z4#w6LqU_Bg+#2Mr%aj7c*QLZ61BRQMxmEByG7wD(FBr?}Vlur`br*V}WGS1Yy;PoXt*sfEos29$MUifRm6-n27h{5= zn}+TrvuM2ZG67Cit?LK}%wyz(zai1)&XO9>V#deMN+%+Uw4aAyW>fva3on|_)w8?X z#aBV;6R5fl!d|fzgjFX`=(x+@CN2?;UhuHu*U&{Oh%jzNF?u4D&`U@r z5=Z=4vl$X{7?v=!R;1<$?h&NnvW_Z@VFE?<9ehBN&u?4J4tYAP>uaMXkrzSV`9UE{ z?sVq@Ck<+5l3`~KP|FjtC}N4MA~#L#A~#ytTecvi%l|L--aAf`tGxHFQ`J?~UENjH zId@Ozp1hNLHt%Xz8>9_dNxMj5B_t%2;}V2GfB*p^Eg-;&1xzqW#snK1i6p>S*kHgx zU}K`efpEbRT#~PM-tTjIX0-xrxbNq_@5g`K-I<>1bn4WpbDr~r-}8H%#&2f_!9+Gr zj6ao*_8&Va*8!>4#(=1}puZuATu{G11#l0pPD4KsC39UYds_!>%Y7;sdT`tDVQa1Nn$&}fdT&%_l;JX*6 zNOgBC4S1lwyTqz=yS%zP98Xx$u#jsM3%_&qJfP>1 z>R5j2P!HZoGZ&T;xvei4BT^q*Or=P4Eq5VpN>!7IPLhSJsITOuF!E)Nm@9wIg?&IW z6X3qq8yL666@4Ru&%%<4DH=FYvA~?IH)G?Ib<1q0?O?eYKV#RqgQN<2gU4^$bn$${ z%T=1QDT@TGqa))9FFM_y-rE}??5Fa@Jn87&rP+3|HPuPAr^_Rk6sc=J?8A#z{#E@e zUPE-1!ORx5&=ZzR$>*F_uaG6Rb*%A+&26t)K6{solG951<>0r~j^TG(cp9%D>qPVi zN5*}L@T7Q!QFsqT@*sEI2FaLA1oar^N-~!N`ei%5a@!&Vz_T0#&v(1{&oYuZ7N9bN zp4_5tMD2@|$k8HyAf;}H)6QXj3C_dL@x40@NBuR{Id=|TN=qawCDH|kH*MYNq$)Eb z?JXng>TXyc+urXkRg%^1wJl!W5z{OO3*iGwg#ymMdeekr^m- z(Gc2M@^9iZY8)m7C)J55*aZ?Ow8TADKBqpb#>C{DeVlCFS1!D!q|$P^l?h`TXbbhG$yk~8rQGS5X$ ze2j?NwM6q+GaA;j*k9|bNMW&D9k<_WyZyEQ95OAXEUuFqIRG5J~Z)sl25V}hRH_s3Du)KlL*H7iK&kO3` z-5B|OB%^U{Oy?Yoc>)Nh_!=7(RCG~zSeRn$eOxrWGD-H=Vo{)CrqshC?Axo0!sU~2 zOm!(p)d57zzxmNAxoTu2`Z9?1R|oSVv&N4A17x85W$St=>*8i zJXzvS-h!YxU5MyZZl$JkI8u{To+yvlDY*?qUcIeYvRGf4LI4Ug@GB!^U@xKY5T}cA zPx1$<*sj!QC^%$7MJf8HdPq>BJaM;qhD+XoQpKpxp5wag{bVi@VFp$w4}@j3bo3n1 zRUwHVwnFp4xChY`h37E_4;h(b2^+P`hb=GP*J~F0XqkKeUVIgJW>|CFJ#MRByWC+0 zU+&P0t&qx0VQo1}U}6MFnN>`=lNm2-zsdqEQc5+VW<51dx-E%r?GQ&-Il-DxXju0U zp_c5eN4NcRO(!zdL6*372_mq3+MUXHIY+ll{ynw4Q(da$+J$aNP^v1SAX+{Srr@4O zi@(kF3+ZdZc6t>CUsI& zaEh@-pqhen=dQFIuOI@4e-lP;MGo>yVel z?knp|7Kqzl=)*LupCXYkE*51qxUIe`*fZ`M#Ezus>Q5}-ZdmLui2E8NM2?q+-yD8p zrtjjtL9r4i4(<0?^C$_@CZ>{P?XDe@;?JC*4YnN-gtEB%u0D|vn`!t7t^qW(Q?F?# zBE4Gc$zXWUTjZ71lOfnevVx@+&KQ|t(g~58a)JS`>9^#PuB6BS z>tvnHv66Wib_L0yGI3l=f&|(SYm);=@9?c9x>je zAOhkAgOn0Q_8Wt=8$tD@bdHJDi35=nktZv`u@FEiuZ~GbSnrh)5sU(D3Plrv`wkY|Ayb6Kw=^!4USbOvoIQk#p8# zcc3rbCWs8o=BR3L1g?enLx~EMk;n|Zs8YY%QBNq5?WEhpZ~=BFcYvYCi7lnU>m(n$ zj(LdSE<_ln>a87Q)(-wYYeTU~FOyl26}q7_7yx0!vL&khmX(KLE4@&o#=xk`^1-ws z%1l{k*`fObvfx^JGbTx04wi7~{+RnNHoY z2Rk|{i-cXy1Oua}NAHrT#mwe{m<~*3JUk+|?=`lQo$w~n5kauYnY3UMGo<$shr+-I zEJ#mMqOiCx62@U}!(>%OldH7}{(<~}qeK++_mK^&yyF6V{s#MaG&nEjB;z?o+KfI2 z*FnVbGYd_iL#sIR55se`3oMW9NupR|8ljybqGa7mCwTanLlM?2cQxn2ojH=HW-FL) z^Pf{x6l}s918RSa8Y^g_)MH86qjFszG#;;ZvLA^K`lxmvY4#)TIWW6IcwUU!xm-Cx zUN4gE+qCL*X%#6mS;0_uD^V|F_lXAo%(zm07+*yLF6jmM#CNf~Ttt-l2IHxmlCwy+ zL%5?|;(**$u_>1%LMRu47RB3`eOeNqcI2+T#KAg6a+vt{dVORkha7=Ho?jBFy82E1 zF@*S>J0q`A6}uP~nTc|@$vq<3icK@Dsqj01y7~ zAm2zaixLIu;c{njIN{CUz=MT183oG|&)Ug6gj~d!(ggn#R15<�p~>vqUr4kgWMQ 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