chore: upgrade TypeScript 4.9 to 5.9, ESLint 8.29 to 8.57, @typescript-eslint 5 to 7
CI / Build & Quality Checks (push) Successful in 10m33s

Resolves all TS2345/TS2347/TS7006 type errors introduced by stricter TypeScript 5.x.
Fix Icons.Settings to Icons.Setting, cast account data returns, fix implicit any.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lotus Bot
2026-05-22 11:16:11 -04:00
parent 31071749d5
commit a6da8ebbf4
33 changed files with 389 additions and 334 deletions
+281 -231
View File
@@ -89,26 +89,26 @@
"@types/react-google-recaptcha": "2.1.9", "@types/react-google-recaptcha": "2.1.9",
"@types/sanitize-html": "2.16.1", "@types/sanitize-html": "2.16.1",
"@types/ua-parser-js": "0.7.39", "@types/ua-parser-js": "0.7.39",
"@typescript-eslint/eslint-plugin": "5.46.1", "@typescript-eslint/eslint-plugin": "7.18.0",
"@typescript-eslint/parser": "5.46.1", "@typescript-eslint/parser": "7.18.0",
"@vanilla-extract/css": "1.20.1", "@vanilla-extract/css": "1.20.1",
"@vanilla-extract/recipes": "0.5.7", "@vanilla-extract/recipes": "0.5.7",
"@vanilla-extract/vite-plugin": "5.2.2", "@vanilla-extract/vite-plugin": "5.2.2",
"@vitejs/plugin-react": "5.2.0", "@vitejs/plugin-react": "5.2.0",
"buffer": "6.0.3", "buffer": "6.0.3",
"cz-conventional-changelog": "3.3.0", "cz-conventional-changelog": "3.3.0",
"eslint": "8.29.0", "eslint": "8.57.1",
"eslint-config-airbnb": "19.0.4", "eslint-config-airbnb": "19.0.4",
"eslint-config-prettier": "8.5.0", "eslint-config-prettier": "10.1.8",
"eslint-plugin-import": "2.32.0", "eslint-plugin-import": "2.32.0",
"eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-jsx-a11y": "6.10.2",
"eslint-plugin-react": "7.37.5", "eslint-plugin-react": "7.37.5",
"eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-react-hooks": "7.1.1",
"husky": "9.1.7", "husky": "9.1.7",
"lint-staged": "17.0.5", "lint-staged": "17.0.5",
"prettier": "3.8.3", "prettier": "3.8.3",
"semantic-release": "25.0.3", "semantic-release": "25.0.3",
"typescript": "4.9.4", "typescript": "5.9.3",
"vite": "6.4.2", "vite": "6.4.2",
"vite-plugin-pwa": "1.3.0", "vite-plugin-pwa": "1.3.0",
"vite-plugin-static-copy": "4.1.0" "vite-plugin-static-copy": "4.1.0"
@@ -2518,15 +2518,45 @@
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@eslint/eslintrc": { "node_modules/@eslint-community/eslint-utils": {
"version": "1.4.1", "version": "4.9.1",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
"integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": {
"eslint-visitor-keys": "^3.4.3"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
},
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
"node_modules/@eslint-community/regexpp": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
"integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
"node_modules/@eslint/eslintrc": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
"integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
"debug": "^4.3.2", "debug": "^4.3.2",
"espree": "^9.4.0", "espree": "^9.6.0",
"globals": "^13.19.0", "globals": "^13.19.0",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"import-fresh": "^3.2.1", "import-fresh": "^3.2.1",
@@ -2546,6 +2576,7 @@
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
"integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"type-fest": "^0.20.2" "type-fest": "^0.20.2"
}, },
@@ -2561,6 +2592,7 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true, "dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": { "engines": {
"node": ">=10" "node": ">=10"
}, },
@@ -2568,6 +2600,16 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/@eslint/js": {
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
"integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/@fontsource-variable/inter": { "node_modules/@fontsource-variable/inter": {
"version": "5.2.8", "version": "5.2.8",
"resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.2.8.tgz", "resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.2.8.tgz",
@@ -2665,13 +2707,14 @@
} }
}, },
"node_modules/@humanwhocodes/config-array": { "node_modules/@humanwhocodes/config-array": {
"version": "0.11.14", "version": "0.13.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
"integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
"deprecated": "Use @eslint/config-array instead", "deprecated": "Use @eslint/config-array instead",
"dev": true, "dev": true,
"license": "Apache-2.0",
"dependencies": { "dependencies": {
"@humanwhocodes/object-schema": "^2.0.2", "@humanwhocodes/object-schema": "^2.0.3",
"debug": "^4.3.1", "debug": "^4.3.1",
"minimatch": "^3.0.5" "minimatch": "^3.0.5"
}, },
@@ -2697,7 +2740,8 @@
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
"integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
"deprecated": "Use @eslint/object-schema instead", "deprecated": "Use @eslint/object-schema instead",
"dev": true "dev": true,
"license": "BSD-3-Clause"
}, },
"node_modules/@internationalized/date": { "node_modules/@internationalized/date": {
"version": "3.12.1", "version": "3.12.1",
@@ -5439,12 +5483,6 @@
"integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==", "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/json-schema": {
"version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
"dev": true
},
"node_modules/@types/json5": { "node_modules/@types/json5": {
"version": "0.0.29", "version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@@ -5540,12 +5578,6 @@
"integrity": "sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==", "integrity": "sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==",
"dev": true "dev": true
}, },
"node_modules/@types/semver": {
"version": "7.5.8",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
"integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
"dev": true
},
"node_modules/@types/trusted-types": { "node_modules/@types/trusted-types": {
"version": "2.0.7", "version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
@@ -5560,31 +5592,32 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@typescript-eslint/eslint-plugin": { "node_modules/@typescript-eslint/eslint-plugin": {
"version": "5.46.1", "version": "7.18.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz",
"integrity": "sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==", "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "5.46.1", "@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/type-utils": "5.46.1", "@typescript-eslint/scope-manager": "7.18.0",
"@typescript-eslint/utils": "5.46.1", "@typescript-eslint/type-utils": "7.18.0",
"debug": "^4.3.4", "@typescript-eslint/utils": "7.18.0",
"ignore": "^5.2.0", "@typescript-eslint/visitor-keys": "7.18.0",
"natural-compare-lite": "^1.4.0", "graphemer": "^1.4.0",
"regexpp": "^3.2.0", "ignore": "^5.3.1",
"semver": "^7.3.7", "natural-compare": "^1.4.0",
"tsutils": "^3.21.0" "ts-api-utils": "^1.3.0"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^18.18.0 || >=20.0.0"
}, },
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/typescript-eslint" "url": "https://opencollective.com/typescript-eslint"
}, },
"peerDependencies": { "peerDependencies": {
"@typescript-eslint/parser": "^5.0.0", "@typescript-eslint/parser": "^7.0.0",
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" "eslint": "^8.56.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"typescript": { "typescript": {
@@ -5593,25 +5626,27 @@
} }
}, },
"node_modules/@typescript-eslint/parser": { "node_modules/@typescript-eslint/parser": {
"version": "5.46.1", "version": "7.18.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.46.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz",
"integrity": "sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg==", "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
"dev": true, "dev": true,
"license": "BSD-2-Clause",
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "5.46.1", "@typescript-eslint/scope-manager": "7.18.0",
"@typescript-eslint/types": "5.46.1", "@typescript-eslint/types": "7.18.0",
"@typescript-eslint/typescript-estree": "5.46.1", "@typescript-eslint/typescript-estree": "7.18.0",
"@typescript-eslint/visitor-keys": "7.18.0",
"debug": "^4.3.4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^18.18.0 || >=20.0.0"
}, },
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/typescript-eslint" "url": "https://opencollective.com/typescript-eslint"
}, },
"peerDependencies": { "peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" "eslint": "^8.56.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"typescript": { "typescript": {
@@ -5620,16 +5655,17 @@
} }
}, },
"node_modules/@typescript-eslint/scope-manager": { "node_modules/@typescript-eslint/scope-manager": {
"version": "5.46.1", "version": "7.18.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
"integrity": "sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA==", "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "5.46.1", "@typescript-eslint/types": "7.18.0",
"@typescript-eslint/visitor-keys": "5.46.1" "@typescript-eslint/visitor-keys": "7.18.0"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^18.18.0 || >=20.0.0"
}, },
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
@@ -5637,25 +5673,26 @@
} }
}, },
"node_modules/@typescript-eslint/type-utils": { "node_modules/@typescript-eslint/type-utils": {
"version": "5.46.1", "version": "7.18.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz",
"integrity": "sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng==", "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/typescript-estree": "5.46.1", "@typescript-eslint/typescript-estree": "7.18.0",
"@typescript-eslint/utils": "5.46.1", "@typescript-eslint/utils": "7.18.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"tsutils": "^3.21.0" "ts-api-utils": "^1.3.0"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^18.18.0 || >=20.0.0"
}, },
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/typescript-eslint" "url": "https://opencollective.com/typescript-eslint"
}, },
"peerDependencies": { "peerDependencies": {
"eslint": "*" "eslint": "^8.56.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"typescript": { "typescript": {
@@ -5664,12 +5701,13 @@
} }
}, },
"node_modules/@typescript-eslint/types": { "node_modules/@typescript-eslint/types": {
"version": "5.46.1", "version": "7.18.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
"integrity": "sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w==", "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^18.18.0 || >=20.0.0"
}, },
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
@@ -5677,21 +5715,23 @@
} }
}, },
"node_modules/@typescript-eslint/typescript-estree": { "node_modules/@typescript-eslint/typescript-estree": {
"version": "5.46.1", "version": "7.18.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
"integrity": "sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg==", "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
"dev": true, "dev": true,
"license": "BSD-2-Clause",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "5.46.1", "@typescript-eslint/types": "7.18.0",
"@typescript-eslint/visitor-keys": "5.46.1", "@typescript-eslint/visitor-keys": "7.18.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"globby": "^11.1.0", "globby": "^11.1.0",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
"semver": "^7.3.7", "minimatch": "^9.0.4",
"tsutils": "^3.21.0" "semver": "^7.6.0",
"ts-api-utils": "^1.3.0"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^18.18.0 || >=20.0.0"
}, },
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
@@ -5703,49 +5743,80 @@
} }
} }
}, },
"node_modules/@typescript-eslint/utils": { "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
"version": "5.46.1", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.1.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
"integrity": "sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA==", "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@types/json-schema": "^7.0.9", "balanced-match": "^1.0.0"
"@types/semver": "^7.3.12", }
"@typescript-eslint/scope-manager": "5.46.1", },
"@typescript-eslint/types": "5.46.1", "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
"@typescript-eslint/typescript-estree": "5.46.1", "version": "9.0.9",
"eslint-scope": "^5.1.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
"eslint-utils": "^3.0.0", "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"semver": "^7.3.7" "dev": true,
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.2"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@typescript-eslint/utils": {
"version": "7.18.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
"integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"@typescript-eslint/scope-manager": "7.18.0",
"@typescript-eslint/types": "7.18.0",
"@typescript-eslint/typescript-estree": "7.18.0"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
}, },
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/typescript-eslint" "url": "https://opencollective.com/typescript-eslint"
}, },
"peerDependencies": { "peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" "eslint": "^8.56.0"
} }
}, },
"node_modules/@typescript-eslint/visitor-keys": { "node_modules/@typescript-eslint/visitor-keys": {
"version": "5.46.1", "version": "7.18.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
"integrity": "sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg==", "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "5.46.1", "@typescript-eslint/types": "7.18.0",
"eslint-visitor-keys": "^3.3.0" "eslint-visitor-keys": "^3.4.3"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^18.18.0 || >=20.0.0"
}, },
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/typescript-eslint" "url": "https://opencollective.com/typescript-eslint"
} }
}, },
"node_modules/@ungap/structured-clone": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz",
"integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==",
"dev": true,
"license": "ISC"
},
"node_modules/@vanilla-extract/babel-plugin-debug-ids": { "node_modules/@vanilla-extract/babel-plugin-debug-ids": {
"version": "1.2.2", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/@vanilla-extract/babel-plugin-debug-ids/-/babel-plugin-debug-ids-1.2.2.tgz", "resolved": "https://registry.npmjs.org/@vanilla-extract/babel-plugin-debug-ids/-/babel-plugin-debug-ids-1.2.2.tgz",
@@ -5898,6 +5969,7 @@
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true, "dev": true,
"license": "MIT",
"peerDependencies": { "peerDependencies": {
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
} }
@@ -6130,6 +6202,7 @@
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">=8" "node": ">=8"
} }
@@ -8653,50 +8726,50 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "8.29.0", "version": "8.57.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
"integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@eslint/eslintrc": "^1.3.3", "@eslint-community/eslint-utils": "^4.2.0",
"@humanwhocodes/config-array": "^0.11.6", "@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.4",
"@eslint/js": "8.57.1",
"@humanwhocodes/config-array": "^0.13.0",
"@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8", "@nodelib/fs.walk": "^1.2.8",
"ajv": "^6.10.0", "@ungap/structured-clone": "^1.2.0",
"ajv": "^6.12.4",
"chalk": "^4.0.0", "chalk": "^4.0.0",
"cross-spawn": "^7.0.2", "cross-spawn": "^7.0.2",
"debug": "^4.3.2", "debug": "^4.3.2",
"doctrine": "^3.0.0", "doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0", "escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.1.1", "eslint-scope": "^7.2.2",
"eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.4.3",
"eslint-visitor-keys": "^3.3.0", "espree": "^9.6.1",
"espree": "^9.4.0", "esquery": "^1.4.2",
"esquery": "^1.4.0",
"esutils": "^2.0.2", "esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3", "fast-deep-equal": "^3.1.3",
"file-entry-cache": "^6.0.1", "file-entry-cache": "^6.0.1",
"find-up": "^5.0.0", "find-up": "^5.0.0",
"glob-parent": "^6.0.2", "glob-parent": "^6.0.2",
"globals": "^13.15.0", "globals": "^13.19.0",
"grapheme-splitter": "^1.0.4", "graphemer": "^1.4.0",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4", "imurmurhash": "^0.1.4",
"is-glob": "^4.0.0", "is-glob": "^4.0.0",
"is-path-inside": "^3.0.3", "is-path-inside": "^3.0.3",
"js-sdsl": "^4.1.4",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1", "json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1", "levn": "^0.4.1",
"lodash.merge": "^4.6.2", "lodash.merge": "^4.6.2",
"minimatch": "^3.1.2", "minimatch": "^3.1.2",
"natural-compare": "^1.4.0", "natural-compare": "^1.4.0",
"optionator": "^0.9.1", "optionator": "^0.9.3",
"regexpp": "^3.2.0",
"strip-ansi": "^6.0.1", "strip-ansi": "^6.0.1",
"strip-json-comments": "^3.1.0",
"text-table": "^0.2.0" "text-table": "^0.2.0"
}, },
"bin": { "bin": {
@@ -8759,13 +8832,17 @@
} }
}, },
"node_modules/eslint-config-prettier": { "node_modules/eslint-config-prettier": {
"version": "8.5.0", "version": "10.1.8",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz",
"integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
"dev": true, "dev": true,
"license": "MIT",
"bin": { "bin": {
"eslint-config-prettier": "bin/cli.js" "eslint-config-prettier": "bin/cli.js"
}, },
"funding": {
"url": "https://opencollective.com/eslint-config-prettier"
},
"peerDependencies": { "peerDependencies": {
"eslint": ">=7.0.0" "eslint": ">=7.0.0"
} }
@@ -8946,15 +9023,23 @@
} }
}, },
"node_modules/eslint-plugin-react-hooks": { "node_modules/eslint-plugin-react-hooks": {
"version": "4.6.0", "version": "7.1.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz",
"integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": {
"@babel/core": "^7.24.4",
"@babel/parser": "^7.24.4",
"hermes-parser": "^0.25.1",
"zod": "^3.25.0 || ^4.0.0",
"zod-validation-error": "^3.5.0 || ^4.0.0"
},
"engines": { "engines": {
"node": ">=10" "node": ">=18"
}, },
"peerDependencies": { "peerDependencies": {
"eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0"
} }
}, },
"node_modules/eslint-plugin-react/node_modules/doctrine": { "node_modules/eslint-plugin-react/node_modules/doctrine": {
@@ -8995,60 +9080,12 @@
"semver": "bin/semver.js" "semver": "bin/semver.js"
} }
}, },
"node_modules/eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/eslint-scope/node_modules/estraverse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
"engines": {
"node": ">=4.0"
}
},
"node_modules/eslint-utils": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
"integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
"dev": true,
"dependencies": {
"eslint-visitor-keys": "^2.0.0"
},
"engines": {
"node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
},
"funding": {
"url": "https://github.com/sponsors/mysticatea"
},
"peerDependencies": {
"eslint": ">=5"
}
},
"node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
"integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
"dev": true,
"engines": {
"node": ">=10"
}
},
"node_modules/eslint-visitor-keys": { "node_modules/eslint-visitor-keys": {
"version": "3.4.3", "version": "3.4.3",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true, "dev": true,
"license": "Apache-2.0",
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}, },
@@ -9104,6 +9141,7 @@
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
"integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true, "dev": true,
"license": "BSD-2-Clause",
"dependencies": { "dependencies": {
"acorn": "^8.9.0", "acorn": "^8.9.0",
"acorn-jsx": "^5.3.2", "acorn-jsx": "^5.3.2",
@@ -9320,6 +9358,7 @@
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3", "@nodelib/fs.walk": "^1.2.3",
@@ -9336,6 +9375,7 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true, "dev": true,
"license": "ISC",
"dependencies": { "dependencies": {
"is-glob": "^4.0.1" "is-glob": "^4.0.1"
}, },
@@ -10073,6 +10113,7 @@
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
"integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"array-union": "^2.1.0", "array-union": "^2.1.0",
"dir-glob": "^3.0.1", "dir-glob": "^3.0.1",
@@ -10105,11 +10146,12 @@
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"dev": true "dev": true
}, },
"node_modules/grapheme-splitter": { "node_modules/graphemer": {
"version": "1.0.4", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true "dev": true,
"license": "MIT"
}, },
"node_modules/handlebars": { "node_modules/handlebars": {
"version": "4.7.9", "version": "4.7.9",
@@ -10228,6 +10270,23 @@
"node": ">= 0.4" "node": ">= 0.4"
} }
}, },
"node_modules/hermes-estree": {
"version": "0.25.1",
"resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz",
"integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==",
"dev": true,
"license": "MIT"
},
"node_modules/hermes-parser": {
"version": "0.25.1",
"resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz",
"integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==",
"dev": true,
"license": "MIT",
"dependencies": {
"hermes-estree": "0.25.1"
}
},
"node_modules/highlight.js": { "node_modules/highlight.js": {
"version": "10.7.3", "version": "10.7.3",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
@@ -11542,16 +11601,6 @@
"integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==", "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/js-sdsl": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz",
"integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==",
"dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/js-sdsl"
}
},
"node_modules/js-tokens": { "node_modules/js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -11610,7 +11659,8 @@
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true "dev": true,
"license": "MIT"
}, },
"node_modules/json-stable-stringify-without-jsonify": { "node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1", "version": "1.0.1",
@@ -12799,6 +12849,7 @@
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">= 8" "node": ">= 8"
} }
@@ -12989,12 +13040,6 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true "dev": true
}, },
"node_modules/natural-compare-lite": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
"dev": true
},
"node_modules/neo-async": { "node_modules/neo-async": {
"version": "2.6.2", "version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
@@ -16475,18 +16520,6 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/regexpp": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
"integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
"dev": true,
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/mysticatea"
}
},
"node_modules/regexpu-core": { "node_modules/regexpu-core": {
"version": "6.2.0", "version": "6.2.0",
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz",
@@ -17511,6 +17544,7 @@
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true, "dev": true,
"license": "MIT",
"engines": { "engines": {
"node": ">=8" "node": ">=8"
} }
@@ -18455,6 +18489,19 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/ts-api-utils": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz",
"integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=16"
},
"peerDependencies": {
"typescript": ">=4.2.0"
}
},
"node_modules/ts-easing": { "node_modules/ts-easing": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz", "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz",
@@ -18490,27 +18537,6 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
}, },
"node_modules/tsutils": {
"version": "3.21.0",
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
"integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
"dev": true,
"dependencies": {
"tslib": "^1.8.1"
},
"engines": {
"node": ">= 6"
},
"peerDependencies": {
"typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
}
},
"node_modules/tsutils/node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true
},
"node_modules/tunnel": { "node_modules/tunnel": {
"version": "0.0.6", "version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
@@ -18620,9 +18646,9 @@
} }
}, },
"node_modules/typescript": { "node_modules/typescript": {
"version": "4.9.4", "version": "5.9.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"bin": { "bin": {
@@ -18630,7 +18656,7 @@
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"
}, },
"engines": { "engines": {
"node": ">=4.2.0" "node": ">=14.17"
} }
}, },
"node_modules/ua-is-frozen": { "node_modules/ua-is-frozen": {
@@ -18882,6 +18908,7 @@
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true, "dev": true,
"license": "BSD-2-Clause",
"dependencies": { "dependencies": {
"punycode": "^2.1.0" "punycode": "^2.1.0"
} }
@@ -20243,6 +20270,29 @@
"funding": { "funding": {
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
},
"node_modules/zod": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
"integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
"dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
},
"node_modules/zod-validation-error": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz",
"integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"zod": "^3.25.0 || ^4.0.0"
}
} }
} }
} }
+6 -6
View File
@@ -142,26 +142,26 @@
"@types/react-google-recaptcha": "2.1.9", "@types/react-google-recaptcha": "2.1.9",
"@types/sanitize-html": "2.16.1", "@types/sanitize-html": "2.16.1",
"@types/ua-parser-js": "0.7.39", "@types/ua-parser-js": "0.7.39",
"@typescript-eslint/eslint-plugin": "5.46.1", "@typescript-eslint/eslint-plugin": "7.18.0",
"@typescript-eslint/parser": "5.46.1", "@typescript-eslint/parser": "7.18.0",
"@vanilla-extract/css": "1.20.1", "@vanilla-extract/css": "1.20.1",
"@vanilla-extract/recipes": "0.5.7", "@vanilla-extract/recipes": "0.5.7",
"@vanilla-extract/vite-plugin": "5.2.2", "@vanilla-extract/vite-plugin": "5.2.2",
"@vitejs/plugin-react": "5.2.0", "@vitejs/plugin-react": "5.2.0",
"buffer": "6.0.3", "buffer": "6.0.3",
"cz-conventional-changelog": "3.3.0", "cz-conventional-changelog": "3.3.0",
"eslint": "8.29.0", "eslint": "8.57.1",
"eslint-config-airbnb": "19.0.4", "eslint-config-airbnb": "19.0.4",
"eslint-config-prettier": "8.5.0", "eslint-config-prettier": "10.1.8",
"eslint-plugin-import": "2.32.0", "eslint-plugin-import": "2.32.0",
"eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-jsx-a11y": "6.10.2",
"eslint-plugin-react": "7.37.5", "eslint-plugin-react": "7.37.5",
"eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-react-hooks": "7.1.1",
"husky": "9.1.7", "husky": "9.1.7",
"lint-staged": "17.0.5", "lint-staged": "17.0.5",
"prettier": "3.8.3", "prettier": "3.8.3",
"semantic-release": "25.0.3", "semantic-release": "25.0.3",
"typescript": "4.9.4", "typescript": "5.9.3",
"vite": "6.4.2", "vite": "6.4.2",
"vite-plugin-pwa": "1.3.0", "vite-plugin-pwa": "1.3.0",
"vite-plugin-static-copy": "4.1.0" "vite-plugin-static-copy": "4.1.0"
+1 -1
View File
@@ -467,7 +467,7 @@ export function CallEmbedProvider({ children }: CallEmbedProviderProps) {
}); });
el.style.visibility = callVisible ? '' : 'hidden'; el.style.visibility = callVisible ? '' : 'hidden';
} }
prevPipModeRef.current = pipMode; prevPipModeRef.current = !!pipMode;
}, [pipMode, callVisible]); }, [pipMode, callVisible]);
React.useEffect(() => { React.useEffect(() => {
+3 -1
View File
@@ -49,7 +49,9 @@ function GifPickerInner({ onSelect, requestClose, lotusTerminal }: GifPickerInne
</div> </div>
)} )}
<Box style={{ padding: '8px 8px 4px' }}> <Box style={{ padding: '8px 8px 4px' }}>
<SearchBar style={{ width: '100%', borderRadius: lotusTerminal ? '4px' : '8px' }} /> <div style={{ width: '100%', borderRadius: lotusTerminal ? '4px' : '8px' }}>
<SearchBar />
</div>
</Box> </Box>
<div <div
style={{ overflowY: 'auto', overflowX: 'hidden', maxHeight: '340px', padding: '0 8px 8px' }} style={{ overflowY: 'auto', overflowX: 'hidden', maxHeight: '340px', padding: '0 8px 8px' }}
+10 -32
View File
@@ -279,42 +279,32 @@ export function Toolbar() {
<MarkButton <MarkButton
format={MarkType.Bold} format={MarkType.Bold}
icon={Icons.Bold} icon={Icons.Bold}
tooltip={<BtnTooltip text="Bold" shortCode={`${modKey} + B`} label="Bold" />} tooltip={<BtnTooltip text="Bold" shortCode={`${modKey} + B`} />}
/> />
<MarkButton <MarkButton
format={MarkType.Italic} format={MarkType.Italic}
icon={Icons.Italic} icon={Icons.Italic}
tooltip={<BtnTooltip text="Italic" shortCode={`${modKey} + I`} label="Italic" />} tooltip={<BtnTooltip text="Italic" shortCode={`${modKey} + I`} />}
/> />
<MarkButton <MarkButton
format={MarkType.Underline} format={MarkType.Underline}
icon={Icons.Underline} icon={Icons.Underline}
tooltip={ tooltip={<BtnTooltip text="Underline" shortCode={`${modKey} + U`} />}
<BtnTooltip text="Underline" shortCode={`${modKey} + U`} label="Underline" />
}
/> />
<MarkButton <MarkButton
format={MarkType.StrikeThrough} format={MarkType.StrikeThrough}
icon={Icons.Strike} icon={Icons.Strike}
tooltip={ tooltip={<BtnTooltip text="Strike Through" shortCode={`${modKey} + S`} />}
<BtnTooltip
text="Strike Through"
shortCode={`${modKey} + S`}
label="Strikethrough"
/>
}
/> />
<MarkButton <MarkButton
format={MarkType.Code} format={MarkType.Code}
icon={Icons.Code} icon={Icons.Code}
tooltip={ tooltip={<BtnTooltip text="Inline Code" shortCode={`${modKey} + [`} />}
<BtnTooltip text="Inline Code" shortCode={`${modKey} + [`} label="Inline code" />
}
/> />
<MarkButton <MarkButton
format={MarkType.Spoiler} format={MarkType.Spoiler}
icon={Icons.EyeBlind} icon={Icons.EyeBlind}
tooltip={<BtnTooltip text="Spoiler" shortCode={`${modKey} + H`} label="Spoiler" />} tooltip={<BtnTooltip text="Spoiler" shortCode={`${modKey} + H`} />}
/> />
</Box> </Box>
<Line variant="SurfaceVariant" direction="Vertical" style={{ height: toRem(12) }} /> <Line variant="SurfaceVariant" direction="Vertical" style={{ height: toRem(12) }} />
@@ -323,34 +313,22 @@ export function Toolbar() {
<BlockButton <BlockButton
format={BlockType.BlockQuote} format={BlockType.BlockQuote}
icon={Icons.BlockQuote} icon={Icons.BlockQuote}
tooltip={ tooltip={<BtnTooltip text="Block Quote" shortCode={`${modKey} + '`} />}
<BtnTooltip text="Block Quote" shortCode={`${modKey} + '`} label="Block quote" />
}
/> />
<BlockButton <BlockButton
format={BlockType.CodeBlock} format={BlockType.CodeBlock}
icon={Icons.BlockCode} icon={Icons.BlockCode}
tooltip={ tooltip={<BtnTooltip text="Block Code" shortCode={`${modKey} + ;`} />}
<BtnTooltip text="Block Code" shortCode={`${modKey} + ;`} label="Code block" />
}
/> />
<BlockButton <BlockButton
format={BlockType.OrderedList} format={BlockType.OrderedList}
icon={Icons.OrderList} icon={Icons.OrderList}
tooltip={ tooltip={<BtnTooltip text="Ordered List" shortCode={`${modKey} + 7`} />}
<BtnTooltip text="Ordered List" shortCode={`${modKey} + 7`} label="Ordered list" />
}
/> />
<BlockButton <BlockButton
format={BlockType.UnorderedList} format={BlockType.UnorderedList}
icon={Icons.UnorderList} icon={Icons.UnorderList}
tooltip={ tooltip={<BtnTooltip text="Unordered List" shortCode={`${modKey} + 8`} />}
<BtnTooltip
text="Unordered List"
shortCode={`${modKey} + 8`}
label="Unordered list"
/>
}
/> />
<HeadingBlockButton /> <HeadingBlockButton />
</Box> </Box>
@@ -64,12 +64,12 @@ export const ImagePackContent = as<'div', ImagePackContentProps>(
useCallback( useCallback(
(pickedFiles: File[]) => { (pickedFiles: File[]) => {
const uniqueFiles = pickedFiles.map((file) => { const uniqueFiles = pickedFiles.map((file) => {
const fileName = replaceSpaceWithDash(file.name); const fileName = replaceSpaceWithDash((file as File).name);
if (hasImageWithShortcode(fileName)) { if (hasImageWithShortcode(fileName)) {
const uniqueName = suffixRename(fileName, hasImageWithShortcode); const uniqueName = suffixRename(fileName, hasImageWithShortcode);
return renameFile(file, uniqueName); return renameFile(file, uniqueName);
} }
return fileName !== file.name ? renameFile(file, fileName) : file; return fileName !== (file as File).name ? renameFile(file, fileName) : file;
}); });
setFiles((f) => [...f, ...uniqueFiles]); setFiles((f) => [...f, ...uniqueFiles]);
@@ -122,7 +122,7 @@ export const ImagePackContent = as<'div', ImagePackContentProps>(
info: getImageInfo(imgEl, data.file), info: getImageInfo(imgEl, data.file),
}; };
const image = PackImageReader.fromPackImage( const image = PackImageReader.fromPackImage(
getFileNameWithoutExt(data.file.name), getFileNameWithoutExt((data.file as File).name),
packImage, packImage,
); );
if (!image) return; if (!image) return;
@@ -361,7 +361,7 @@ export const ImagePackContent = as<'div', ImagePackContentProps>(
)} )}
{files.map((file) => ( {files.map((file) => (
<SequenceCard <SequenceCard
key={file.name} key={(file as File).name}
style={{ padding: config.space.S300 }} style={{ padding: config.space.S300 }}
variant="SurfaceVariant" variant="SurfaceVariant"
direction="Column" direction="Column"
@@ -22,7 +22,10 @@ export function RoomImagePack({ room, stateKey }: RoomImagePackProps) {
const creators = useRoomCreators(room); const creators = useRoomCreators(room);
const permissions = useRoomPermissions(creators, powerLevels); const permissions = useRoomPermissions(creators, powerLevels);
const canEditImagePack = permissions.stateEvent(StateEvent.PoniesRoomEmotes, userId); const canEditImagePack = permissions.stateEvent(
StateEvent.PoniesRoomEmotes as unknown as keyof import('matrix-js-sdk').StateEvents,
userId,
);
const fallbackPack = useMemo(() => { const fallbackPack = useMemo(() => {
const fakePackId = randomStr(4); const fakePackId = randomStr(4);
@@ -44,8 +47,8 @@ export function RoomImagePack({ room, stateKey }: RoomImagePackProps) {
await mx.sendStateEvent( await mx.sendStateEvent(
address.roomId, address.roomId,
StateEvent.PoniesRoomEmotes, StateEvent.PoniesRoomEmotes as unknown as keyof import('matrix-js-sdk').StateEvents,
packContent, packContent as any,
address.stateKey, address.stateKey,
); );
}, },
@@ -13,7 +13,10 @@ export function UserImagePack() {
const handleUpdate = useCallback( const handleUpdate = useCallback(
async (packContent: PackContent) => { async (packContent: PackContent) => {
await mx.setAccountData(AccountDataEvent.PoniesUserEmotes, packContent); await mx.setAccountData(
AccountDataEvent.PoniesUserEmotes as unknown as keyof import('matrix-js-sdk').AccountDataEvents,
packContent,
);
}, },
[mx], [mx],
); );
@@ -114,7 +114,7 @@ export function ReadReceiptAvatars({
})} })}
{extra > 0 && ( {extra > 0 && (
<Text <Text
size="T100" size="T200"
style={{ paddingLeft: '4px', color: color.SurfaceVariant.OnContainer }} style={{ paddingLeft: '4px', color: color.SurfaceVariant.OnContainer }}
> >
+{extra} +{extra}
@@ -77,7 +77,7 @@ export function CompactUploadCardRenderer({
{upload.status === UploadStatus.Success ? ( {upload.status === UploadStatus.Success ? (
<> <>
<Text size="H6" truncate> <Text size="H6" truncate>
{file.name} {(file as File).name}
</Text> </Text>
<Icon style={{ color: color.Success.Main }} src={Icons.Check} size="100" /> <Icon style={{ color: color.Success.Main }} src={Icons.Check} size="100" />
</> </>
@@ -28,7 +28,7 @@ function PreviewImage({ fileItem }: PreviewImageProps) {
height: toRem(152), height: toRem(152),
filter: metadata.markedAsSpoiler ? 'blur(44px)' : undefined, filter: metadata.markedAsSpoiler ? 'blur(44px)' : undefined,
}} }}
alt={originalFile.name} alt={(originalFile as File).name}
src={fileUrl} src={fileUrl}
/> />
); );
@@ -227,7 +227,7 @@ export function UploadCardRenderer({
} }
> >
<Text size="H6" truncate> <Text size="H6" truncate>
{file.name} {(file as File).name}
</Text> </Text>
{upload.status === UploadStatus.Success && ( {upload.status === UploadStatus.Success && (
<Icon style={{ color: color.Success.Main }} src={Icons.Check} size="100" /> <Icon style={{ color: color.Success.Main }} src={Icons.Check} size="100" />
+2 -1
View File
@@ -1,4 +1,5 @@
import { CallMembership, SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; import { CallMembership } from 'matrix-js-sdk/lib/matrixrtc/CallMembership';
import { type SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc';
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Avatar, Box, Icon, Icons, Text } from 'folds'; import { Avatar, Box, Icon, Icons, Text } from 'folds';
import { useMatrixClient } from '../../hooks/useMatrixClient'; import { useMatrixClient } from '../../hooks/useMatrixClient';
@@ -58,7 +58,8 @@ export function DeveloperTools({ requestClose }: DeveloperToolsProps) {
const submitAccountData: AccountDataSubmitCallback = useCallback( const submitAccountData: AccountDataSubmitCallback = useCallback(
async (type, content) => { async (type, content) => {
await mx.setRoomAccountData(room.roomId, type, content); // eslint-disable-next-line @typescript-eslint/no-explicit-any
await mx.setRoomAccountData(room.roomId, type as any, content);
}, },
[mx, room.roomId], [mx, room.roomId],
); );
+1 -1
View File
@@ -814,7 +814,7 @@ export const RoomInput = forwardRef<HTMLDivElement, RoomInputProps>(
)} )}
{gifError && ( {gifError && (
<Text <Text
size="T100" size="T200"
style={{ style={{
color: 'var(--tc-danger-normal)', color: 'var(--tc-danger-normal)',
padding: '2px 6px', padding: '2px 6px',
+1 -1
View File
@@ -27,7 +27,7 @@ import { HTMLReactParserOptions } from 'html-react-parser';
import classNames from 'classnames'; import classNames from 'classnames';
import { ReactEditor } from 'slate-react'; import { ReactEditor } from 'slate-react';
import { Editor } from 'slate'; import { Editor } from 'slate';
import { SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc/CallMembership'; import { type SessionMembershipData } from 'matrix-js-sdk/lib/matrixrtc';
import to from 'await-to-js'; import to from 'await-to-js';
import { useAtomValue, useSetAtom } from 'jotai'; import { useAtomValue, useSetAtom } from 'jotai';
import { import {
@@ -39,7 +39,8 @@ export function ForwardMessageDialog({ mEvent, onClose }: Props) {
const forward = (roomId: string, roomName: string) => { const forward = (roomId: string, roomName: string) => {
const fwdContent: Record<string, unknown> = { ...mEvent.getContent() }; const fwdContent: Record<string, unknown> = { ...mEvent.getContent() };
delete fwdContent['m.relates_to']; delete fwdContent['m.relates_to'];
mx.sendEvent(roomId, mEvent.getType(), fwdContent as any); // eslint-disable-next-line @typescript-eslint/no-explicit-any
(mx as any).sendEvent(roomId, mEvent.getType(), fwdContent);
setSentTo(roomName); setSentTo(roomName);
setTimeout(onClose, 1200); setTimeout(onClose, 1200);
}; };
@@ -83,6 +83,7 @@ import { MemberPowerTag, StateEvent } from '../../../../types/matrix/room';
import { PowerIcon } from '../../../components/power'; import { PowerIcon } from '../../../components/power';
import colorMXID from '../../../../util/colorMXID'; import colorMXID from '../../../../util/colorMXID';
import { getPowerTagIconSrc } from '../../../hooks/useMemberPowerTag'; import { getPowerTagIconSrc } from '../../../hooks/useMemberPowerTag';
import { ForwardMessageDialog } from './ForwardMessageDialog';
// Delivery status indicator for own messages // Delivery status indicator for own messages
function DeliveryStatus({ function DeliveryStatus({
@@ -153,7 +153,8 @@ export const MessageEditor = as<'div', MessageEditorProps>(
}, },
}; };
return mx.sendMessage(roomId, content); // eslint-disable-next-line @typescript-eslint/no-explicit-any
return mx.sendMessage(roomId, content as any);
}, [mx, editor, roomId, mEvent, isMarkdown, getPrevBodyAndFormattedBody]), }, [mx, editor, roomId, mEvent, isMarkdown, getPrevBodyAndFormattedBody]),
); );
+8 -8
View File
@@ -54,8 +54,8 @@ export const getImageMsgContent = async (
const content: IContent = { const content: IContent = {
msgtype: MsgType.Image, msgtype: MsgType.Image,
filename: file.name, filename: (file as File).name,
body: metadata.caption?.trim() || file.name, body: metadata.caption?.trim() || (file as File).name,
[MATRIX_SPOILER_PROPERTY_NAME]: metadata.markedAsSpoiler, [MATRIX_SPOILER_PROPERTY_NAME]: metadata.markedAsSpoiler,
}; };
if (imgEl) { if (imgEl) {
@@ -89,8 +89,8 @@ export const getVideoMsgContent = async (
const content: IContent = { const content: IContent = {
msgtype: MsgType.Video, msgtype: MsgType.Video,
filename: file.name, filename: (file as File).name,
body: metadata.caption?.trim() || file.name, body: metadata.caption?.trim() || (file as File).name,
[MATRIX_SPOILER_PROPERTY_NAME]: metadata.markedAsSpoiler, [MATRIX_SPOILER_PROPERTY_NAME]: metadata.markedAsSpoiler,
}; };
if (videoEl) { if (videoEl) {
@@ -130,8 +130,8 @@ export const getAudioMsgContent = (item: TUploadItem, mxc: string): IContent =>
const { file, encInfo } = item; const { file, encInfo } = item;
const content: IContent = { const content: IContent = {
msgtype: MsgType.Audio, msgtype: MsgType.Audio,
filename: file.name, filename: (file as File).name,
body: file.name, body: (file as File).name,
info: { info: {
mimetype: file.type, mimetype: file.type,
size: file.size, size: file.size,
@@ -152,8 +152,8 @@ export const getFileMsgContent = (item: TUploadItem, mxc: string): IContent => {
const { file, encInfo } = item; const { file, encInfo } = item;
const content: IContent = { const content: IContent = {
msgtype: MsgType.File, msgtype: MsgType.File,
body: file.name, body: (file as File).name,
filename: file.name, filename: (file as File).name,
info: { info: {
mimetype: file.type, mimetype: file.type,
size: file.size, size: file.size,
+1 -1
View File
@@ -251,7 +251,7 @@ export function Search({ requestClose }: SearchProps) {
allowOutsideClick: true, allowOutsideClick: true,
clickOutsideDeactivates: true, clickOutsideDeactivates: true,
onDeactivate: requestClose, onDeactivate: requestClose,
escapeDeactivates: (evt) => { escapeDeactivates: (evt: KeyboardEvent) => {
evt.stopPropagation(); evt.stopPropagation();
return true; return true;
}, },
@@ -25,7 +25,7 @@ export function DeveloperTools({ requestClose }: DeveloperToolsProps) {
const submitAccountData: AccountDataSubmitCallback = useCallback( const submitAccountData: AccountDataSubmitCallback = useCallback(
async (type, content) => { async (type, content) => {
await mx.setAccountData(type, content); await (mx as any).setAccountData(type, content);
}, },
[mx], [mx],
); );
@@ -34,7 +34,9 @@ export function DeveloperTools({ requestClose }: DeveloperToolsProps) {
return ( return (
<AccountDataEditor <AccountDataEditor
type={accountDataType ?? undefined} type={accountDataType ?? undefined}
content={accountDataType ? mx.getAccountData(accountDataType)?.getContent() : undefined} content={
accountDataType ? (mx as any).getAccountData(accountDataType)?.getContent() : undefined
}
submitChange={submitAccountData} submitChange={submitAccountData}
requestClose={() => setAccountDataType(undefined)} requestClose={() => setAccountDataType(undefined)}
/> />
@@ -1,3 +1,4 @@
import { MatrixEvent } from 'matrix-js-sdk';
import React, { MouseEventHandler, useCallback, useEffect, useMemo, useState } from 'react'; import React, { MouseEventHandler, useCallback, useEffect, useMemo, useState } from 'react';
import { import {
Box, Box,
@@ -303,7 +304,9 @@ export function GlobalPacks({ onViewPack }: GlobalPacksProps) {
const [applyState, applyChanges] = useAsyncCallback( const [applyState, applyChanges] = useAsyncCallback(
useCallback(async () => { useCallback(async () => {
const content = const content =
mx.getAccountData(AccountDataEvent.PoniesEmoteRooms)?.getContent<EmoteRoomsContent>() ?? {}; (
(mx as any).getAccountData(AccountDataEvent.PoniesEmoteRooms) as MatrixEvent | undefined
)?.getContent<EmoteRoomsContent>() ?? {};
const updatedContent: EmoteRoomsContent = JSON.parse(JSON.stringify(content)); const updatedContent: EmoteRoomsContent = JSON.parse(JSON.stringify(content));
selectedPacks.forEach((addr) => { selectedPacks.forEach((addr) => {
@@ -320,7 +323,7 @@ export function GlobalPacks({ onViewPack }: GlobalPacksProps) {
} }
}); });
await mx.setAccountData(AccountDataEvent.PoniesEmoteRooms, updatedContent); await (mx as any).setAccountData(AccountDataEvent.PoniesEmoteRooms, updatedContent);
}, [mx, selectedPacks, removedPacks]), }, [mx, selectedPacks, removedPacks]),
); );
@@ -192,7 +192,7 @@ export function KeywordMessagesNotifications() {
<KeywordInput /> <KeywordInput />
</SettingTile> </SettingTile>
</SequenceCard> </SequenceCard>
{keywordPushRules.map((pushRule) => ( {keywordPushRules.map((pushRule: any) => (
<SequenceCard <SequenceCard
key={pushRule.rule_id} key={pushRule.rule_id}
className={SequenceCardStyle} className={SequenceCardStyle}
+5 -2
View File
@@ -1,10 +1,13 @@
import { MatrixEvent } from 'matrix-js-sdk';
import { useState, useCallback } from 'react'; import { useState, useCallback } from 'react';
import { useMatrixClient } from './useMatrixClient'; import { useMatrixClient } from './useMatrixClient';
import { useAccountDataCallback } from './useAccountDataCallback'; import { useAccountDataCallback } from './useAccountDataCallback';
export function useAccountData(eventType: string) { export function useAccountData(eventType: string): MatrixEvent | undefined {
const mx = useMatrixClient(); const mx = useMatrixClient();
const [event, setEvent] = useState(() => mx.getAccountData(eventType)); const [event, setEvent] = useState<MatrixEvent | undefined>(
() => (mx as any).getAccountData(eventType) as MatrixEvent | undefined,
);
useAccountDataCallback( useAccountDataCallback(
mx, mx,
+2 -2
View File
@@ -54,11 +54,11 @@ export function useRoomReadPositions(room: Room): Map<string, string[]> {
}; };
const onMembership = (): void => setPositions(computePositions(room, myUserId)); const onMembership = (): void => setPositions(computePositions(room, myUserId));
room.on(RoomEvent.Receipt, onReceipt); room.on(RoomEvent.Receipt, onReceipt);
room.on(RoomMemberEvent.Membership, onMembership); (room as any).on(RoomMemberEvent.Membership, onMembership);
return () => { return () => {
if (debounceTimer !== null) clearTimeout(debounceTimer); if (debounceTimer !== null) clearTimeout(debounceTimer);
room.removeListener(RoomEvent.Receipt, onReceipt); room.removeListener(RoomEvent.Receipt, onReceipt);
room.removeListener(RoomMemberEvent.Membership, onMembership); (room as any).removeListener(RoomMemberEvent.Membership, onMembership);
}; };
}, [room, myUserId]); }, [room, myUserId]);
@@ -47,17 +47,17 @@ export const useRoomsNotificationPreferences = (): RoomsNotificationPreferences
allMessages: new Set(), allMessages: new Set(),
}; };
override.forEach((rule) => { override.forEach((rule: any) => {
if (isRoomId(rule.rule_id) && getNotificationMode(rule.actions) === NotificationMode.OFF) { if (isRoomId(rule.rule_id) && getNotificationMode(rule.actions) === NotificationMode.OFF) {
pref.mute.add(rule.rule_id); pref.mute.add(rule.rule_id);
} }
}); });
room.forEach((rule) => { room.forEach((rule: any) => {
if (getNotificationMode(rule.actions) === NotificationMode.OFF) { if (getNotificationMode(rule.actions) === NotificationMode.OFF) {
pref.specialMessages.add(rule.rule_id); pref.specialMessages.add(rule.rule_id);
} }
}); });
room.forEach((rule) => { room.forEach((rule: any) => {
if (getNotificationMode(rule.actions) !== NotificationMode.OFF) { if (getNotificationMode(rule.actions) !== NotificationMode.OFF) {
pref.allMessages.add(rule.rule_id); pref.allMessages.add(rule.rule_id);
} }
+2 -1
View File
@@ -223,7 +223,8 @@ export function ClientRoot({ children }: ClientRootProps) {
{startState.status === AsyncStatus.Error && ( {startState.status === AsyncStatus.Error && (
<Text>{`Failed to start. ${startState.error.message}`}</Text> <Text>{`Failed to start. ${startState.error.message}`}</Text>
)} )}
{loadState.error?.message !== IDB_VERSION_CONFLICT && ( {('error' in loadState ? (loadState as any).error?.message : undefined) !==
IDB_VERSION_CONFLICT && (
<Button variant="Critical" onClick={mx ? () => startMatrix(mx) : loadMatrix}> <Button variant="Critical" onClick={mx ? () => startMatrix(mx) : loadMatrix}>
<Text as="span" size="B400"> <Text as="span" size="B400">
Retry Retry
+2 -2
View File
@@ -752,7 +752,7 @@ export function SpaceTabs({ scrollRef }: SpaceTabsProps) {
const newSpacesContent = makeCinnySpacesContent(mx, newItems); const newSpacesContent = makeCinnySpacesContent(mx, newItems);
localEchoSidebarItem(parseSidebar(mx, orphanSpaces, newSpacesContent)); localEchoSidebarItem(parseSidebar(mx, orphanSpaces, newSpacesContent));
mx.setAccountData(AccountDataEvent.CinnySpaces, newSpacesContent); (mx as any).setAccountData(AccountDataEvent.CinnySpaces, newSpacesContent);
}, },
[mx, sidebarItems, setOpenedFolder, localEchoSidebarItem, orphanSpaces], [mx, sidebarItems, setOpenedFolder, localEchoSidebarItem, orphanSpaces],
), ),
@@ -798,7 +798,7 @@ export function SpaceTabs({ scrollRef }: SpaceTabsProps) {
const newSpacesContent = makeCinnySpacesContent(mx, newItems); const newSpacesContent = makeCinnySpacesContent(mx, newItems);
localEchoSidebarItem(parseSidebar(mx, orphanSpaces, newSpacesContent)); localEchoSidebarItem(parseSidebar(mx, orphanSpaces, newSpacesContent));
mx.setAccountData(AccountDataEvent.CinnySpaces, newSpacesContent); (mx as any).setAccountData(AccountDataEvent.CinnySpaces, newSpacesContent);
}, },
[mx, sidebarItems, orphanSpaces, localEchoSidebarItem], [mx, sidebarItems, orphanSpaces, localEchoSidebarItem],
); );
+1
View File
@@ -42,6 +42,7 @@ export const createPage = async (
canvas.height = pageViewport.height; canvas.height = pageViewport.height;
page.render({ page.render({
canvas,
canvasContext: context, canvasContext: context,
viewport: pageViewport, viewport: pageViewport,
}); });
+21 -19
View File
@@ -8,6 +8,7 @@ import React, {
useState, useState,
} from 'react'; } from 'react';
import { import {
DOMNode,
Element, Element,
Text as DOMText, Text as DOMText,
HTMLReactParserOptions, HTMLReactParserOptions,
@@ -302,7 +303,7 @@ export function CodeBlock({
hideTrack hideTrack
> >
<div id="code-block-content" className={css.CodeBlockInternal}> <div id="code-block-content" className={css.CodeBlockInternal}>
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</div> </div>
</Scroll> </Scroll>
{largeCodeBlock && !expanded && <Box className={css.CodeBlockBottomShadow} />} {largeCodeBlock && !expanded && <Box className={css.CodeBlockBottomShadow} />}
@@ -330,7 +331,7 @@ export const getReactCustomHtmlParser = (
if (name === 'h1') { if (name === 'h1') {
return ( return (
<Text {...props} className={css.Heading} size="H2"> <Text {...props} className={css.Heading} size="H2">
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</Text> </Text>
); );
} }
@@ -338,7 +339,7 @@ export const getReactCustomHtmlParser = (
if (name === 'h2') { if (name === 'h2') {
return ( return (
<Text {...props} className={css.Heading} size="H3"> <Text {...props} className={css.Heading} size="H3">
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</Text> </Text>
); );
} }
@@ -346,7 +347,7 @@ export const getReactCustomHtmlParser = (
if (name === 'h3') { if (name === 'h3') {
return ( return (
<Text {...props} className={css.Heading} size="H4"> <Text {...props} className={css.Heading} size="H4">
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</Text> </Text>
); );
} }
@@ -354,7 +355,7 @@ export const getReactCustomHtmlParser = (
if (name === 'h4') { if (name === 'h4') {
return ( return (
<Text {...props} className={css.Heading} size="H4"> <Text {...props} className={css.Heading} size="H4">
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</Text> </Text>
); );
} }
@@ -362,7 +363,7 @@ export const getReactCustomHtmlParser = (
if (name === 'h5') { if (name === 'h5') {
return ( return (
<Text {...props} className={css.Heading} size="H5"> <Text {...props} className={css.Heading} size="H5">
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</Text> </Text>
); );
} }
@@ -370,7 +371,7 @@ export const getReactCustomHtmlParser = (
if (name === 'h6') { if (name === 'h6') {
return ( return (
<Text {...props} className={css.Heading} size="H6"> <Text {...props} className={css.Heading} size="H6">
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</Text> </Text>
); );
} }
@@ -378,7 +379,7 @@ export const getReactCustomHtmlParser = (
if (name === 'p') { if (name === 'p') {
return ( return (
<Text {...props} className={classNames(css.Paragraph, css.MarginSpaced)} size="Inherit"> <Text {...props} className={classNames(css.Paragraph, css.MarginSpaced)} size="Inherit">
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</Text> </Text>
); );
} }
@@ -390,7 +391,7 @@ export const getReactCustomHtmlParser = (
if (name === 'blockquote') { if (name === 'blockquote') {
return ( return (
<Text {...props} size="Inherit" as="blockquote" className={css.BlockQuote}> <Text {...props} size="Inherit" as="blockquote" className={css.BlockQuote}>
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</Text> </Text>
); );
} }
@@ -398,23 +399,24 @@ export const getReactCustomHtmlParser = (
if (name === 'ul') { if (name === 'ul') {
return ( return (
<ul {...props} className={css.List}> <ul {...props} className={css.List}>
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</ul> </ul>
); );
} }
if (name === 'ol') { if (name === 'ol') {
return ( return (
<ol {...props} className={css.List}> <ol {...props} className={css.List}>
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</ol> </ol>
); );
} }
if (name === 'code') { if (name === 'code') {
if (parent && 'name' in parent && parent.name === 'pre') { if (parent && 'name' in parent && parent.name === 'pre') {
const codeReact = domToReact(children, opts); const codeReact = domToReact(children as unknown as DOMNode[], opts);
if (typeof codeReact === 'string') { if (typeof codeReact === 'string') {
let lang = props.className; let lang: string | undefined =
typeof props.className === 'string' ? props.className : undefined;
if (lang === 'language-rs') lang = 'language-rust'; if (lang === 'language-rs') lang = 'language-rust';
else if (lang === 'language-js') lang = 'language-javascript'; else if (lang === 'language-js') lang = 'language-javascript';
else if (lang === 'language-ts') lang = 'language-typescript'; else if (lang === 'language-ts') lang = 'language-typescript';
@@ -435,13 +437,13 @@ export const getReactCustomHtmlParser = (
} else { } else {
return ( return (
<Text as="code" size="T300" className={css.Code} {...props}> <Text as="code" size="T300" className={css.Code} {...props}>
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</Text> </Text>
); );
} }
} }
if (name === 'a' && testMatrixTo(tryDecodeURIComponent(props.href))) { if (name === 'a' && testMatrixTo(tryDecodeURIComponent(String(props.href)))) {
const content = children.find((child) => !(child instanceof DOMText)) const content = children.find((child) => !(child instanceof DOMText))
? undefined ? undefined
: children.map((c) => (c instanceof DOMText ? c.data : '')).join(); : children.map((c) => (c instanceof DOMText ? c.data : '')).join();
@@ -449,7 +451,7 @@ export const getReactCustomHtmlParser = (
const mention = renderMatrixMention( const mention = renderMatrixMention(
mx, mx,
roomId, roomId,
tryDecodeURIComponent(props.href), tryDecodeURIComponent(String(props.href)),
makeMentionCustomProps(params.handleMentionClick, content), makeMentionCustomProps(params.handleMentionClick, content),
); );
@@ -471,14 +473,14 @@ export const getReactCustomHtmlParser = (
aria-pressed={true} aria-pressed={true}
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
> >
{domToReact(children, opts)} {domToReact(children as unknown as DOMNode[], opts)}
</span> </span>
); );
} }
if (name === 'img') { if (name === 'img') {
const htmlSrc = mxcUrlToHttp(mx, props.src, params.useAuthentication); const htmlSrc = mxcUrlToHttp(mx, String(props.src), params.useAuthentication);
if (htmlSrc && props.src.startsWith('mxc://') === false) { if (htmlSrc && String(props.src).startsWith('mxc://') === false) {
return ( return (
<a href={htmlSrc} target="_blank" rel="noreferrer noopener"> <a href={htmlSrc} target="_blank" rel="noreferrer noopener">
{props.alt || props.title || htmlSrc} {props.alt || props.title || htmlSrc}
+1 -1
View File
@@ -42,7 +42,7 @@ export function addRecentEmoji(mx: MatrixClient, unicode: string) {
entry[1] += 1; entry[1] += 1;
} }
recentEmoji.unshift(entry); recentEmoji.unshift(entry);
mx.setAccountData(AccountDataEvent.ElementRecentEmoji, { (mx as any).setAccountData(AccountDataEvent.ElementRecentEmoji, {
recent_emoji: recentEmoji.slice(0, 100), recent_emoji: recentEmoji.slice(0, 100),
}); });
} }
+2
View File
@@ -72,6 +72,8 @@ const timeoutReceipt = (
return Date.now() - target.ts >= timeout; return Date.now() - target.ts >= timeout;
}; };
const typingTimers = new Map<string, ReturnType<typeof setTimeout>>();
export const roomIdToTypingMembersAtom = atom< export const roomIdToTypingMembersAtom = atom<
IRoomIdToTypingMembers, IRoomIdToTypingMembers,
[IRoomIdToTypingMembersAction], [IRoomIdToTypingMembersAction],
+1 -1
View File
@@ -113,7 +113,7 @@ export const encryptFile = async (
}> => { }> => {
const dataBuffer = await file.arrayBuffer(); const dataBuffer = await file.arrayBuffer();
const encryptedAttachment = await encryptAttachment(dataBuffer); const encryptedAttachment = await encryptAttachment(dataBuffer);
const encFile = new File([encryptedAttachment.data], file.name, { const encFile = new File([encryptedAttachment.data], (file as File).name, {
type: file.type, type: file.type,
}); });
return { return {