From 08b7f2306855fe13c649d1ddfc923bdffce4cd52 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 11 Oct 2026 10:28:52 +0000 Subject: [PATCH 01/10] fix(deps): update dependency @simplewebauthn/server to v14 --- apps/server/package.json | 2 +- pnpm-lock.yaml | 183 +++++++++++++++++++++++++++------------ 2 files changed, 130 insertions(+), 55 deletions(-) diff --git a/apps/server/package.json b/apps/server/package.json index b8bd8c7f..bf33271b 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -46,7 +46,7 @@ "dependencies": { "@caesar/shared": "workspace:*", "@libsql/client": "0.18.0", - "@simplewebauthn/server": "^13.3.3", + "@simplewebauthn/server": "^14.0.3", "@trpc/server": "catalog:", "argon2": "^0.45.0", "cron": "^4.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 992a86b7..e1650188 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -436,8 +436,8 @@ importers: specifier: 0.18.0 version: 0.18.0 '@simplewebauthn/server': - specifier: ^13.3.3 - version: 13.3.3 + specifier: ^14.0.3 + version: 14.0.3 '@trpc/server': specifier: 'catalog:' version: 11.19.0(typescript@6.0.3) @@ -1419,32 +1419,62 @@ packages: '@peculiar/asn1-android@2.7.0': resolution: {integrity: sha512-iD3VskhVQnM4nE3PN9cBdPTR7JrqZy3FYk+uD2CeG6DUqKoANqaEfx0f7izPmW+Qm5JBM35ek+viLCmjy18ByQ==} - '@peculiar/asn1-cms@2.7.0': - resolution: {integrity: sha512-hew63shtzzvBcSHbhm+cyAmKe6AIfinT9hzEqSPjDC6opTTMKmTkQ0gHuN2KsWlvqiKw1S/fS94fhag/FJkioQ==} + '@peculiar/asn1-asym-key@2.10.0': + resolution: {integrity: sha512-1R8xUTeqcUTSMLFTTCzJyFuKiq3y25EQKs9DezUetJ8qMqbJyxo3XkzykiwwT/Xzlt5/vRzS/sW4M1r+pq1FTg==} + engines: {node: '>=14'} + + '@peculiar/asn1-cms@2.10.0': + resolution: {integrity: sha512-CkX0H4NCIOMHOU3rh2xXZywinYZ/EnJlaOlJiGI0e5L4XjFqHf4iH30LMbXWChVppdA9ljbanjtzQFOhDNfTWg==} + engines: {node: '>=14'} + + '@peculiar/asn1-csr@2.10.0': + resolution: {integrity: sha512-jTPTr/9rxKM+niQLMF3jiAMb0lWHUhUHIuSOhdGCIfpB4FAQYf9SoiXOgxP8bS/68IB+bj+1OHvVnDVCQfVUZw==} + engines: {node: '>=14'} - '@peculiar/asn1-csr@2.7.0': - resolution: {integrity: sha512-VVsAyGqErT9D1SY4aEqozThXMVI+ssVRiv2DDeYuvpBKLIgZ3hYs3Ay3u/VSoKq6ESFi9cf6rf3IOOzfwh7oMA==} + '@peculiar/asn1-ecc@2.10.0': + resolution: {integrity: sha512-GFd3iOjFrWX+QWH2R2dO5QSJyyRGv9CIBKtRlGlPNCvb2RvmCbBDexe91MJgV76c69d998Xsa+CvuQ98seoiPg==} + engines: {node: '>=14'} '@peculiar/asn1-ecc@2.7.0': resolution: {integrity: sha512-n7KEs/Q/wrB415cxy4fHOBhegp4NdJ15fkJPwcB/3/8iNBQC2L/N7SChJPKDJPZGYH0jD4Tg4/0vnHmwghnbKw==} - '@peculiar/asn1-pfx@2.7.0': - resolution: {integrity: sha512-V/nrlQVmhg7lYAsM7E13UDL5erAwFv6kCIVFqNaMIHSVi7dngcT839JkRTkQBqznMG98l2XjxYk74ZztAohZzA==} + '@peculiar/asn1-pfx@2.10.0': + resolution: {integrity: sha512-1y3QK9ZH1IPleAMmRoJlPS10eGkAWnULETW8zDFNUK1ffqpG7zmDY+kYBMYQgwlcQZ2iitLm2z2EBP0xzRXpaA==} + engines: {node: '>=14'} + + '@peculiar/asn1-pkcs8@2.10.0': + resolution: {integrity: sha512-Ri+BZT9bnwqlHWmhs7lvWjvJRxKev2hA2+4EbZajgeYWCbR8hyv0znF4DhsFouOhMj2nSDV/iGJ6DMQtwITnCw==} + engines: {node: '>=14'} - '@peculiar/asn1-pkcs8@2.7.0': - resolution: {integrity: sha512-9GTl1nE8Mx1kTZ+7QyYatDyKsm34QcWRBFkY1iPvWC3X4Dona5s/tlLiQsx5WzVdZqiMBZNYT0buyw4/vbhnjw==} + '@peculiar/asn1-pkcs9@2.10.0': + resolution: {integrity: sha512-XIXsbDQFezYk6fudczkuvawkRD4GNpISGCqfYhdkJlvcGF/RFknU+0DDJagOaJqBf+PdPzk4J9oMqDGcvfR9HQ==} + engines: {node: '>=14'} - '@peculiar/asn1-pkcs9@2.7.0': - resolution: {integrity: sha512-Bh7m+OuIaSEllPQcSd9OSp93F4ROWH7sbITWV8MI+8dwsjE5111/87VxiWVvYFKyww3vp39geLv9ENqhwWHcew==} + '@peculiar/asn1-rsa@2.10.0': + resolution: {integrity: sha512-4Jvmwlh3gZAhNZ4/u7JSyLuce9hofOFZ4o3PYKAccCImGnyaT5CMym/ATgvAvqpOYFNW531oPZvJlEBhJy9VfA==} + engines: {node: '>=14'} '@peculiar/asn1-rsa@2.7.0': resolution: {integrity: sha512-/qvENQrXyTZURjMqSeofHul0JJt2sNSzSwk36pl2olkHbaioMQgrASDZAlHXl0xUlnVbHj0uGgOrBMTb5x2aJQ==} + '@peculiar/asn1-schema@2.10.0': + resolution: {integrity: sha512-GhokD41lV4gQrrLYm3wCkHfBOnJrnhDMgt4XeMW8gzfE1UdJqIuSwsE+ggf82XBjUXRJylcm+KIGQFa4utIVLw==} + engines: {node: '>=14'} + '@peculiar/asn1-schema@2.7.0': resolution: {integrity: sha512-W8ZfWzLmQnrcky+eh3tni4IozMdqBDiHWU0N+vve/UGjMaUs8c0L7A2oEdkBXS8rTpWDpK/aoI3DG/L/hxmxPg==} - '@peculiar/asn1-x509-attr@2.7.0': - resolution: {integrity: sha512-NS8e7SOgXipkzUPLF/sce7ukpMpWjhxYsH0n6Y+bHYo4TTxOb95Zv7hqwSuL212mj5YxovjdOKQOgH1As3E94w==} + '@peculiar/asn1-x509-attr@2.10.0': + resolution: {integrity: sha512-/85GtKOKmgvuSJNlaFfwGWNdRSZZ+hpF02NyM01XiCdzpaZONiBltDyfluFPvFx966CR+ZHNSG1jniwpy07oGg==} + engines: {node: '>=14'} + + '@peculiar/asn1-x509-post-quantum@2.10.0': + resolution: {integrity: sha512-cXKcZ30wKbUkRK5RK4Z3W1imewXvHAB9apEAuIqJ0OOkOQCpJrwLOuN38QlsEXqOI+3gtUv8Kf3UZohUmCbf3w==} + engines: {node: '>=14'} + + '@peculiar/asn1-x509@2.10.0': + resolution: {integrity: sha512-ucNVg8+ANveTpMN3fy9lA2alryONdXc2A4cEG2hMniWbvQt+YOZoe8BI80YYNO8FBcuDY1qbDQ4uQGQVraHxGA==} + engines: {node: '>=14'} '@peculiar/asn1-x509@2.7.0': resolution: {integrity: sha512-mUn9RRrkGDnG4ALfunDmzyRW5dg+sWCj/pfnCCqEHYbkGxEpvUt6iVJv8Yw1cyp6SWZ26ZE5oSmI5SqEaen15g==} @@ -1452,8 +1482,8 @@ packages: '@peculiar/utils@2.0.3': resolution: {integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==} - '@peculiar/x509@1.14.3': - resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} + '@peculiar/x509@2.1.0': + resolution: {integrity: sha512-IYbg1R03CSQGWwl24kGyqrdVtixNSbRaDvBg1r5wyYjTP+VwPQkka1BzTgU5+vxiuwqg04OxdvdJ1xYYFIdUSA==} engines: {node: '>=20.0.0'} '@phc/format@1.0.0': @@ -2019,8 +2049,8 @@ packages: '@simplewebauthn/browser@14.0.0': resolution: {integrity: sha512-1odWVqeEBTl7lJ9zMKLEsmTlnyrDO5iRcTvfMKKk1WThUnp/i8JJdffdj2icP+tty159s4PgwE3BiMoEW9NFow==} - '@simplewebauthn/server@13.3.3': - resolution: {integrity: sha512-LelX/lcy5cjc15A86i/aNxHhB5eU7dd20QsbP0VLAf9e38+SLlsnqCCyecx3xqfGofhmX05h1J9fKRYWxw+luA==} + '@simplewebauthn/server@14.0.3': + resolution: {integrity: sha512-D39/0fiDiYmGV+nraY9s63D1Ho2AX/waMLy22/9gUadTUuvbAnstfb4bpbHYbwZuV5ZLDYN1SmzDKuiHzKAA4Q==} engines: {node: '>=20.0.0'} '@standard-schema/spec@1.1.0': @@ -4547,18 +4577,33 @@ snapshots: asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-cms@2.7.0': + '@peculiar/asn1-asym-key@2.10.0': dependencies: - '@peculiar/asn1-schema': 2.7.0 - '@peculiar/asn1-x509': 2.7.0 - '@peculiar/asn1-x509-attr': 2.7.0 + '@peculiar/asn1-pkcs8': 2.10.0 + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-csr@2.7.0': + '@peculiar/asn1-cms@2.10.0': dependencies: - '@peculiar/asn1-schema': 2.7.0 - '@peculiar/asn1-x509': 2.7.0 + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + '@peculiar/asn1-x509-attr': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-csr@2.10.0': + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-ecc@2.10.0': + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 asn1js: 3.0.10 tslib: 2.8.1 @@ -4569,30 +4614,37 @@ snapshots: asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-pfx@2.7.0': + '@peculiar/asn1-pfx@2.10.0': dependencies: - '@peculiar/asn1-cms': 2.7.0 - '@peculiar/asn1-pkcs8': 2.7.0 - '@peculiar/asn1-rsa': 2.7.0 - '@peculiar/asn1-schema': 2.7.0 + '@peculiar/asn1-cms': 2.10.0 + '@peculiar/asn1-pkcs8': 2.10.0 + '@peculiar/asn1-rsa': 2.10.0 + '@peculiar/asn1-schema': 2.10.0 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-pkcs8@2.7.0': + '@peculiar/asn1-pkcs8@2.10.0': dependencies: - '@peculiar/asn1-schema': 2.7.0 - '@peculiar/asn1-x509': 2.7.0 + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-pkcs9@2.7.0': + '@peculiar/asn1-pkcs9@2.10.0': dependencies: - '@peculiar/asn1-cms': 2.7.0 - '@peculiar/asn1-pfx': 2.7.0 - '@peculiar/asn1-pkcs8': 2.7.0 - '@peculiar/asn1-schema': 2.7.0 - '@peculiar/asn1-x509': 2.7.0 - '@peculiar/asn1-x509-attr': 2.7.0 + '@peculiar/asn1-cms': 2.10.0 + '@peculiar/asn1-pfx': 2.10.0 + '@peculiar/asn1-pkcs8': 2.10.0 + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + '@peculiar/asn1-x509-attr': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-rsa@2.10.0': + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 asn1js: 3.0.10 tslib: 2.8.1 @@ -4603,16 +4655,37 @@ snapshots: asn1js: 3.0.10 tslib: 2.8.1 + '@peculiar/asn1-schema@2.10.0': + dependencies: + '@peculiar/utils': 2.0.3 + asn1js: 3.0.10 + tslib: 2.8.1 + '@peculiar/asn1-schema@2.7.0': dependencies: '@peculiar/utils': 2.0.3 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-x509-attr@2.7.0': + '@peculiar/asn1-x509-attr@2.10.0': dependencies: - '@peculiar/asn1-schema': 2.7.0 - '@peculiar/asn1-x509': 2.7.0 + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-x509-post-quantum@2.10.0': + dependencies: + '@peculiar/asn1-asym-key': 2.10.0 + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-x509@2.10.0': + dependencies: + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/utils': 2.0.3 asn1js: 3.0.10 tslib: 2.8.1 @@ -4627,17 +4700,17 @@ snapshots: dependencies: tslib: 2.8.1 - '@peculiar/x509@1.14.3': + '@peculiar/x509@2.1.0': dependencies: - '@peculiar/asn1-cms': 2.7.0 - '@peculiar/asn1-csr': 2.7.0 - '@peculiar/asn1-ecc': 2.7.0 - '@peculiar/asn1-pkcs9': 2.7.0 - '@peculiar/asn1-rsa': 2.7.0 - '@peculiar/asn1-schema': 2.7.0 - '@peculiar/asn1-x509': 2.7.0 + '@peculiar/asn1-cms': 2.10.0 + '@peculiar/asn1-csr': 2.10.0 + '@peculiar/asn1-ecc': 2.10.0 + '@peculiar/asn1-pkcs9': 2.10.0 + '@peculiar/asn1-rsa': 2.10.0 + '@peculiar/asn1-schema': 2.10.0 + '@peculiar/asn1-x509': 2.10.0 + '@peculiar/asn1-x509-post-quantum': 2.10.0 pvtsutils: 1.3.6 - reflect-metadata: 0.2.2 tslib: 2.8.1 tsyringe: 4.10.0 @@ -5171,7 +5244,7 @@ snapshots: '@simplewebauthn/browser@14.0.0': {} - '@simplewebauthn/server@13.3.3': + '@simplewebauthn/server@14.0.3': dependencies: '@hexagon/base64': 1.1.28 '@levischuck/tiny-cbor': 0.2.11 @@ -5180,7 +5253,9 @@ snapshots: '@peculiar/asn1-rsa': 2.7.0 '@peculiar/asn1-schema': 2.7.0 '@peculiar/asn1-x509': 2.7.0 - '@peculiar/x509': 1.14.3 + '@peculiar/asn1-x509-post-quantum': 2.10.0 + '@peculiar/x509': 2.1.0 + reflect-metadata: 0.2.2 '@standard-schema/spec@1.1.0': {} From db39ac965d6220de5fd6326ba84b5c83098e18d6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 11 Oct 2026 10:29:00 +0000 Subject: [PATCH 02/10] fix(deps): update dependency linkify-it to v6 --- packages/shared/package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/shared/package.json b/packages/shared/package.json index c050ca28..60ef730a 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -39,7 +39,7 @@ "@trpc/client": "catalog:", "drizzle-orm": "catalog:", "js-sha256": "^1.0.0", - "linkify-it": "^5.0.2", + "linkify-it": "^6.1.0", "mediasoup": "catalog:" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e1650188..eb3ed1cb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -560,8 +560,8 @@ importers: specifier: ^1.0.0 version: 1.0.0 linkify-it: - specifier: ^5.0.2 - version: 5.0.2 + specifier: ^6.1.0 + version: 6.1.0 mediasoup: specifier: 'catalog:' version: 3.28.0 @@ -3245,8 +3245,8 @@ packages: resolution: {integrity: sha512-+/R92+k6wwhkdJa7tSXp2WqLaRjyo2eTNbgxNyuZV9fKZ6zLcM9ZSd2ZdzsvrZwAvu4sk3vSfxEmj0xwfOVe7Q==} engines: {node: '>=22'} - linkify-it@5.0.2: - resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==} + linkify-it@6.1.0: + resolution: {integrity: sha512-wJ/TwpSDTLepCrQoYWYIExIKg5Zchex2Nn5yk2mFnB+6PtdkHtyLx742md9csRjjOnGkKIS/RrbY7l8D6gT9Vw==} linkifyjs@4.3.3: resolution: {integrity: sha512-P8aEP5U/D1/IlTY2OeYsErdwh9bGuLE30NcXtKEjgdHcahveQoQwM2yZNsioQHsWFz0P7KKudisbrzCgR0sDHg==} @@ -3789,8 +3789,8 @@ packages: resolution: {integrity: sha512-t+3Ktbq0Ies2vaSezfOaWiolH4OigQIO1dk+1xDpOydB1COVPocVYOrEV5rqZ0kFY9XYG1v9LutCyMgYBpABcw==} hasBin: true - uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + uc.micro@3.0.0: + resolution: {integrity: sha512-U3PppEkleoTnIfi8BozMx3yju3qc/L6SwqWo2Sw+54PX+PX0q9I+r1Um5HCmqD7n9VDX5/v3vQH/AjA6deDdtw==} unbash@4.0.2: resolution: {integrity: sha512-8gwNZ29+0/3zmXw7ToIHZtg6wK37xnniRUdBt7B27xZxaxfgR5tGMaGHT0t0dLtBV9fXE7zurh0s6Z1DHVjfWg==} @@ -6384,9 +6384,9 @@ snapshots: cheerio: 1.0.0-rc.11 undici: 8.11.2 - linkify-it@5.0.2: + linkify-it@6.1.0: dependencies: - uc.micro: 2.1.0 + uc.micro: 3.0.0 linkifyjs@4.3.3: {} @@ -6938,7 +6938,7 @@ snapshots: is-standalone-pwa: 0.1.1 ua-is-frozen: 0.1.2 - uc.micro@2.1.0: {} + uc.micro@3.0.0: {} unbash@4.0.2: {} From a3552371c842870e407a7c313fefe1d2e0c52c1e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 11 Oct 2026 10:28:33 +0000 Subject: [PATCH 03/10] chore(deps): update dependency prettier to ^3.9.9 --- pnpm-lock.yaml | 50 ++++++++++++++++----------------------------- pnpm-workspace.yaml | 2 +- 2 files changed, 19 insertions(+), 33 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eb3ed1cb..f86f9c2b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -205,8 +205,8 @@ catalogs: specifier: 3.28.0 version: 3.28.0 prettier: - specifier: ^3.8.3 - version: 3.8.3 + specifier: ^3.9.9 + version: 3.9.10 prettier-plugin-organize-imports: specifier: ^4.3.0 version: 4.3.0 @@ -247,10 +247,10 @@ importers: version: 6.24.0 prettier: specifier: 'catalog:' - version: 3.8.3 + version: 3.9.10 prettier-plugin-organize-imports: specifier: 'catalog:' - version: 4.3.0(prettier@3.8.3)(typescript@6.0.3) + version: 4.3.0(prettier@3.9.10)(typescript@6.0.3) apps/client: dependencies: @@ -407,10 +407,10 @@ importers: version: 17.13.0 prettier: specifier: 'catalog:' - version: 3.8.3 + version: 3.9.10 prettier-plugin-organize-imports: specifier: 'catalog:' - version: 4.3.0(prettier@3.8.3)(typescript@6.0.3) + version: 4.3.0(prettier@3.9.10)(typescript@6.0.3) tw-animate-css: specifier: ^1.4.0 version: 1.4.0 @@ -534,10 +534,10 @@ importers: version: 1.0.0-alpha.6 prettier: specifier: 'catalog:' - version: 3.8.3 + version: 3.9.10 prettier-plugin-organize-imports: specifier: 'catalog:' - version: 4.3.0(prettier@3.8.3)(typescript@6.0.3) + version: 4.3.0(prettier@3.9.10)(typescript@6.0.3) tsx: specifier: ^4.22.5 version: 4.23.0 @@ -586,10 +586,10 @@ importers: version: 17.13.0 prettier: specifier: 'catalog:' - version: 3.8.3 + version: 3.9.10 prettier-plugin-organize-imports: specifier: 'catalog:' - version: 4.3.0(prettier@3.8.3)(typescript@6.0.3) + version: 4.3.0(prettier@3.9.10)(typescript@6.0.3) typescript: specifier: 'catalog:' version: 6.0.3 @@ -701,10 +701,10 @@ importers: version: 17.13.0 prettier: specifier: 'catalog:' - version: 3.8.3 + version: 3.9.10 prettier-plugin-organize-imports: specifier: 'catalog:' - version: 4.3.0(prettier@3.8.3)(typescript@6.0.3) + version: 4.3.0(prettier@3.9.10)(typescript@6.0.3) typescript: specifier: 'catalog:' version: 6.0.3 @@ -3466,8 +3466,8 @@ packages: vue-tsc: optional: true - prettier@3.8.3: - resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} + prettier@3.9.10: + resolution: {integrity: sha512-skGHTH1Yb9QvaTC4hWnRTzEYtCpApF0UMBPz+t/0ZPzP8ihefo/btKd+QA7pUE0fEwA1SbS/NmhyEcstdXOIdA==} engines: {node: '>=14'} hasBin: true @@ -3955,18 +3955,6 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - ws@8.21.3: - resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} - 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 - ws@8.22.0: resolution: {integrity: sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==} engines: {node: '>=10.0.0'} @@ -4390,7 +4378,7 @@ snapshots: '@libsql/isomorphic-ws@0.1.5': dependencies: '@types/ws': 8.18.1 - ws: 8.21.3 + ws: 8.22.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -6611,12 +6599,12 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-organize-imports@4.3.0(prettier@3.8.3)(typescript@6.0.3): + prettier-plugin-organize-imports@4.3.0(prettier@3.9.10)(typescript@6.0.3): dependencies: - prettier: 3.8.3 + prettier: 3.9.10 typescript: 6.0.3 - prettier@3.8.3: {} + prettier@3.9.10: {} promise-limit@2.7.0: {} @@ -7037,8 +7025,6 @@ snapshots: word-wrap@1.2.5: {} - ws@8.21.3: {} - ws@8.22.0: {} yallist@3.1.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ccde7067..b3c829ea 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -21,7 +21,7 @@ catalog: globals: ^17.13.0 lucide-react: ^1.52.0 mediasoup: 3.28.0 - prettier: ^3.8.3 + prettier: ^3.9.9 prettier-plugin-organize-imports: ^4.3.0 react: ^19.3.0 react-dom: ^19.3.0 From a059c81aecf89fcdd39f8e154a9522e29d86dfb7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 11 Oct 2026 10:31:36 +0000 Subject: [PATCH 04/10] chore(deps): update dev minor+patch --- apps/client/package.json | 8 +- apps/server/package.json | 8 +- package.json | 2 +- pnpm-lock.yaml | 1192 +++++++++++++++++++++++++------------- 4 files changed, 791 insertions(+), 419 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 728e8566..326d094a 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -60,11 +60,11 @@ "@types/node": "catalog:", "@types/react": "catalog:", "@types/react-dom": "catalog:", - "@vitejs/plugin-react": "^6.0.3", + "@vitejs/plugin-react": "^6.1.2", "eslint": "catalog:", "eslint-plugin-react-hooks": "^7.1.1", - "eslint-plugin-react-refresh": "^0.5.3", - "eslint-plugin-react-you-might-not-need-an-effect": "^1.0.1", + "eslint-plugin-react-refresh": "^0.5.7", + "eslint-plugin-react-you-might-not-need-an-effect": "^1.0.2", "eslint-plugin-unused-imports": "catalog:", "globals": "catalog:", "prettier": "catalog:", @@ -72,7 +72,7 @@ "tw-animate-css": "^1.4.0", "typescript": "catalog:", "typescript-eslint": "catalog:", - "vite": "^8.1.3", + "vite": "^8.3.3", "vitest": "catalog:" } } \ No newline at end of file diff --git a/apps/server/package.json b/apps/server/package.json index bf33271b..5d261569 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -26,17 +26,17 @@ "@types/jsonwebtoken": "^9.0.10", "@types/mime-types": "^3.0.1", "@types/node": "catalog:", - "@types/sanitize-html": "^2.16.1", + "@types/sanitize-html": "^2.16.2", "@types/web-push": "^3.6.4", - "@types/ws": "^8.18.1", - "esbuild": "^0.28.1", + "@types/ws": "^8.18.2", + "esbuild": "^0.28.2", "eslint": "catalog:", "eslint-plugin-unused-imports": "catalog:", "globals": "catalog:", "postject": "^1.0.0-alpha.6", "prettier": "catalog:", "prettier-plugin-organize-imports": "catalog:", - "tsx": "^4.22.5", + "tsx": "^4.23.15", "typescript-eslint": "catalog:", "vitest": "catalog:" }, diff --git a/package.json b/package.json index 4cc460ce..c0a586ae 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "magic": "pnpm format && pnpm check-types && pnpm lint" }, "devDependencies": { - "knip": "^6.24.0", + "knip": "^6.40.0", "prettier": "catalog:", "prettier-plugin-organize-imports": "catalog:" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f86f9c2b..5708d1ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -243,8 +243,8 @@ importers: .: devDependencies: knip: - specifier: ^6.24.0 - version: 6.24.0 + specifier: ^6.40.0 + version: 6.41.0 prettier: specifier: 'catalog:' version: 3.9.10 @@ -289,7 +289,7 @@ importers: version: 14.0.0 '@tailwindcss/vite': specifier: ^4.3.3 - version: 4.3.3(vite@8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 4.3.3(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) '@tanstack/react-query': specifier: ^5.104.1 version: 5.104.1(react@19.3.0) @@ -385,8 +385,8 @@ importers: specifier: 'catalog:' version: 19.3.0(@types/react@19.3.0) '@vitejs/plugin-react': - specifier: ^6.0.3 - version: 6.0.3(vite@8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) + specifier: ^6.1.2 + version: 6.1.2(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) eslint: specifier: 'catalog:' version: 10.12.0(jiti@2.7.0)(supports-color@11.0.0) @@ -394,11 +394,11 @@ importers: specifier: ^7.1.1 version: 7.1.1(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0))(supports-color@11.0.0) eslint-plugin-react-refresh: - specifier: ^0.5.3 - version: 0.5.3(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0)) + specifier: ^0.5.7 + version: 0.5.7(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0)) eslint-plugin-react-you-might-not-need-an-effect: - specifier: ^1.0.1 - version: 1.0.1(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0)) + specifier: ^1.0.2 + version: 1.0.2(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0)) eslint-plugin-unused-imports: specifier: 'catalog:' version: 4.4.1(@typescript-eslint/eslint-plugin@8.71.1(@typescript-eslint/parser@8.71.1(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0))(supports-color@11.0.0)(typescript@6.0.3))(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0))(supports-color@11.0.0)(typescript@6.0.3))(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0)) @@ -421,11 +421,11 @@ importers: specifier: 'catalog:' version: 8.71.1(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0))(supports-color@11.0.0)(typescript@6.0.3) vite: - specifier: ^8.1.3 - version: 8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0) + specifier: ^8.3.3 + version: 8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) vitest: specifier: 'catalog:' - version: 5.0.3(@types/node@24.19.1)(vite@8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 5.0.3(@types/node@24.19.1)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) apps/server: dependencies: @@ -509,17 +509,17 @@ importers: specifier: 'catalog:' version: 24.19.1 '@types/sanitize-html': - specifier: ^2.16.1 - version: 2.16.1 + specifier: ^2.16.2 + version: 2.16.2 '@types/web-push': specifier: ^3.6.4 version: 3.6.4 '@types/ws': - specifier: ^8.18.1 - version: 8.18.1 + specifier: ^8.18.2 + version: 8.18.2 esbuild: - specifier: ^0.28.1 - version: 0.28.1 + specifier: ^0.28.2 + version: 0.28.2 eslint: specifier: 'catalog:' version: 10.12.0(jiti@2.7.0)(supports-color@11.0.0) @@ -539,14 +539,14 @@ importers: specifier: 'catalog:' version: 4.3.0(prettier@3.9.10)(typescript@6.0.3) tsx: - specifier: ^4.22.5 - version: 4.23.0 + specifier: ^4.23.15 + version: 4.23.15 typescript-eslint: specifier: 'catalog:' version: 8.71.1(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0))(supports-color@11.0.0)(typescript@6.0.3) vitest: specifier: 'catalog:' - version: 5.0.3(@types/node@24.19.1)(vite@8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 5.0.3(@types/node@24.19.1)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) packages/shared: dependencies: @@ -598,7 +598,7 @@ importers: version: 8.71.1(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0))(supports-color@11.0.0)(typescript@6.0.3) vitest: specifier: 'catalog:' - version: 5.0.3(@types/node@24.19.1)(vite@8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) + version: 5.0.3(@types/node@24.19.1)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) packages/ui: dependencies: @@ -812,17 +812,11 @@ packages: peerDependencies: react: '>=16.8.0' - '@emnapi/core@1.11.0': - resolution: {integrity: sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==} + '@emnapi/core@1.11.2': + resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==} - '@emnapi/core@1.11.1': - resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} - - '@emnapi/runtime@1.11.0': - resolution: {integrity: sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg==} - - '@emnapi/runtime@1.11.1': - resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} '@emnapi/wasi-threads@1.2.2': resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} @@ -836,156 +830,312 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.28.2': + resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.28.1': resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.28.2': + resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.28.1': resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.28.2': + resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.28.1': resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.28.2': + resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.28.1': resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.28.2': + resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.28.1': resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.28.2': + resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.28.1': resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.28.2': + resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.28.1': resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.28.2': + resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.28.1': resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.28.2': + resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.28.1': resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.28.2': + resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.28.1': resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.28.2': + resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.28.1': resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.28.2': + resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.28.1': resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.28.2': + resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.28.1': resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.28.2': + resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.28.1': resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.28.2': + resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.28.1': resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.28.2': + resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.28.1': resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.28.2': + resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.28.1': resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.28.2': + resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.28.1': resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.28.2': + resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.28.1': resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.28.2': + resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.28.1': resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.28.2': + resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.28.1': resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.28.2': + resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.28.1': resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.28.2': + resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.28.1': resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.28.2': + resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.28.1': resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.28.2': + resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.28.1': resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.28.2': + resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==} + 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} @@ -1183,236 +1333,231 @@ packages: resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==} engines: {node: '>= 20.19.0'} - '@oxc-parser/binding-android-arm-eabi@0.137.0': - resolution: {integrity: sha512-KDs+0VPdEmasOkpuJHW9V5WCF+cvYdMQv2Jd+aJXt+cxIx12NToRQRbXaRwUEDsZw+/jMk81Ve8ZFbjUkJTOwA==} + '@oxc-parser/binding-android-arm-eabi@0.153.0': + resolution: {integrity: sha512-BcWu25dMwMjHpaDCEidmpAi7rGg1qZoihJeUUH9bD55pVZ0z4Wa5CQgqSTo0R41H81oozisQKW3WqvAN2m77IQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxc-parser/binding-android-arm64@0.137.0': - resolution: {integrity: sha512-WhALNzfy3x/RfC6bsqX+csavuUY0yHHE7XfgPE5M542uhoBZUUoGTPG+nkMbGoG4+gcfss5s7urMyn5QBHu0sw==} + '@oxc-parser/binding-android-arm64@0.153.0': + resolution: {integrity: sha512-9l5rdp2DhRqVriBHsNpu5cEf+hizZ4B58rt93HzyQEBUgZiC6qe2oFpaAAnXGCxHGnQExI1s7S2G0QhFacUZ6w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-parser/binding-darwin-arm64@0.137.0': - resolution: {integrity: sha512-bFPr5hgmNMOMoyPTGtdsK4Ug21RovIPojRMgDDhSp1LtCnc/DkLwGONKjgRjszg677RlGnkYSviQ8hHaUPOVYA==} + '@oxc-parser/binding-darwin-arm64@0.153.0': + resolution: {integrity: sha512-EcpsyRXHhENDpekpG4QNaSZj2F/BAz4Gh4o89zZwNss86R8KyRSQ6sXbAj74Xyeb4z3j/yBZZ6joQZhraIWyfw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-parser/binding-darwin-x64@0.137.0': - resolution: {integrity: sha512-CL5dMm1asqXIDZHg14FLxj3Mc36w8PI7xCWh1uA4is6z8g2XrIILoTcQYOxDbwzuk34RDPX5IAGUxZr6LA9KAg==} + '@oxc-parser/binding-darwin-x64@0.153.0': + resolution: {integrity: sha512-hlj80HUQy07/2lYp6rmxH+3u+H2ik3rjLR52CUdPApxmZCNxASDUf/+ykTzAHS/fehftmVMATKvPaWmuLHuasg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-parser/binding-freebsd-x64@0.137.0': - resolution: {integrity: sha512-79h8rYGnSlKPGWo7mHr2ixO6ea7aW8B0CT965SZ8SLbNnCOH5aOYBTeVXUY6eMvEaiLyWr8Skuiugr5pDYgLGw==} + '@oxc-parser/binding-freebsd-x64@0.153.0': + resolution: {integrity: sha512-fWRcv2pMSh1qtez46MOu8vuUJ5fiaQZPHSphbWulbL7SHBMKfRgZl2PzjXZYQJbq7NEXyXbgIuIuUm+/Rmkv8w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-parser/binding-linux-arm-gnueabihf@0.137.0': - resolution: {integrity: sha512-ASgmlSimhGyr0lksgVIo6hibz1obnDq4qJbiMX/AzltfgPnanRrzG1Q+23g8ljOHOjv6dsznkUuCYL3gg0sY1Q==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.153.0': + resolution: {integrity: sha512-paZeUK1GXShl/bOJQET1/8AQxayFeuN4SIWAkgTRxE7ZQwv9uYSB2n0648smygP22N7jcI3zxAm0Z+ALNiIKxg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm-musleabihf@0.137.0': - resolution: {integrity: sha512-AU2J9aa22Sx32wRGnDjybOU9TQXXQUud5sdUi+ZB0XxwM8aToWLweV+yA0wlQm0yIUVqljquqoHCYEq9II8gJQ==} + '@oxc-parser/binding-linux-arm-musleabihf@0.153.0': + resolution: {integrity: sha512-qFPp5NwMf4K1C0O+DCVGmcbOaYyYAq98Rvv9p4VSfb777iUwlJCqMUxf6QG9N5f5ls4TEX6LitOZHi+6GL6rYQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm64-gnu@0.137.0': - resolution: {integrity: sha512-GdEtiG89yMr7XkUGxifgodXEEm2f+xW2f9CpDjlgAnBOwhTmrpQMvhOGobLVKUyzf/qHBXW16smk5zbF3nZU6w==} + '@oxc-parser/binding-linux-arm64-gnu@0.153.0': + resolution: {integrity: sha512-oufEhZCX7saeo27Logra8cvBR1jQ/yw2zUI2hHmWw3qA/XYqEW31FOvLQBv7DWN32NjVdlcaP11WBBZTJo4k9g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-arm64-musl@0.137.0': - resolution: {integrity: sha512-EGJ+Bs8iXx8KBH8DQ5BLoEm5lnHaYjlh4/8j8vFhrr/6z4tqONy5BZDzLpKmmNWlN6Hlc5r8YOuBVHqZ9vRFEQ==} + '@oxc-parser/binding-linux-arm64-musl@0.153.0': + resolution: {integrity: sha512-zXYzuAqng85h6+LI3iRm0zeMLX1/K2z41ZAMWxVRgt0D10VvZUaV5q+TEB46KDhoKBpdexoTLC6QoB/EiP2oqQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxc-parser/binding-linux-ppc64-gnu@0.137.0': - resolution: {integrity: sha512-vzFUQENy/fnbSe5DZWovq6tIBc1uhuMztanSW6rz1e9WdQE4gHwYuD7ZII6JnrJifd1R3RSoqiZbgRFlVL2tYQ==} + '@oxc-parser/binding-linux-ppc64-gnu@0.153.0': + resolution: {integrity: sha512-J7+NLwLEzdkKM9cKyPHH/AjXXstWOs98KYgLrPPnO4N9MO8EZRBfPNnBcS3S67uMOBkRpUmCl2FhRnWdQ5CbBA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-gnu@0.137.0': - resolution: {integrity: sha512-SfVI14HBQs9gtLcUD5hTt5hsNbdrqSUNg9S8muN+LhVQ5nf1WwH3hAoK6B9NKgdYgWAQSXFXGiiBedQ4r/BKuw==} + '@oxc-parser/binding-linux-riscv64-gnu@0.153.0': + resolution: {integrity: sha512-sD0K11GQTLWylln54nPMMTtgmBbQrR5It/vMpZpy/fogiw8O2AvIE+9LuWUXddrWk9zvFIHGRcSgFn4IHOfoYg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-musl@0.137.0': - resolution: {integrity: sha512-e7Ppy4FCIFNQxT/ikSeIWFoQ0l+N9vgtRBtLcyZXeolTzApyVoPqEXsYPrcdM/9i0Bwk8knvYd37vaEMxHyi6g==} + '@oxc-parser/binding-linux-riscv64-musl@0.153.0': + resolution: {integrity: sha512-7L66uql2BhvSz51LwfExjOdn6et/ydTiQxl23VApdKzJhTc3TczA1Qt6VR/UcvlQrL2ZbytIJb447vh7p5wmUw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxc-parser/binding-linux-s390x-gnu@0.137.0': - resolution: {integrity: sha512-Bho5qFwdhqsIFR7gipYEUlqvi3SRrY8sugxXig380MIaakBB1PyU9+7dBiBVScfImTNWhijUxdBwqrprGdq5WA==} + '@oxc-parser/binding-linux-s390x-gnu@0.153.0': + resolution: {integrity: sha512-hXV3T7mNyrPR19rbPYkglkQJtoM/UNo/xwbZeeqdAxEg8PXgb4LXXuxPpGgI4bzRRCWwLUxdDSS58xIyC2u1TA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-x64-gnu@0.137.0': - resolution: {integrity: sha512-36mGWtg7PyFzjJwGDkH6/F4o2nIDEoKXLPr/X/lwqklkomQwJJt1I5GJVmGhovUEmgPK5WAeAZMqlFCehwiy9Q==} + '@oxc-parser/binding-linux-x64-gnu@0.153.0': + resolution: {integrity: sha512-Da8Vqs1xdtoDYtEjmozD7wGgJeLBQkMbR0WUBECOSxodyX5DXy8ySlvJWbukyO2Q0+TM9EK+4LT6tbq0jCg4hQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-x64-musl@0.137.0': - resolution: {integrity: sha512-/Jqx6+N7A44n2BdvUr7pXhVr2vFjs6WGH3unZRczwrfiH0H1zY0QwKQMG/dtRiTlKGDKGukznPT8lx84/oEsZg==} + '@oxc-parser/binding-linux-x64-musl@0.153.0': + resolution: {integrity: sha512-zGAPxNTIIw6X5WyTRscIFE/oDjpdNtrrl32ing6NOXdGjzRucadnxBilexLdeYQ9YxixF93GujpXyQ0jw7ddSg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxc-parser/binding-openharmony-arm64@0.137.0': - resolution: {integrity: sha512-9Uj0qHNNl+OgT1UTGwF7ixIXU6T1u2SbMidmgPy/h1h/fl2gRS6YpAxxY1gwHofcWjoTwkoMFd8xs5Vuj6GOFA==} + '@oxc-parser/binding-openharmony-arm64@0.153.0': + resolution: {integrity: sha512-GoHzpqP5XyPIp9DHokoEdCp+K4UPl/h1neFj1uXnUB3pJYyOQ7NOhFVOttNUgCGcj2eywAvu5cRivTOSq4S10g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxc-parser/binding-wasm32-wasi@0.137.0': - resolution: {integrity: sha512-gW2vfkytNGgMVADiuzdvOfw0mWG9za20F/1fCJsif5aBMAvWJTSbpIXbIe0XkOe0VENk+PadpQ7cZgUy2sUJcA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] - - '@oxc-parser/binding-win32-arm64-msvc@0.137.0': - resolution: {integrity: sha512-x+pFANF0yL5uK/6T7lu6SlR5qid6sp//eZXKLq5iNsIE+EQg6EaS8/wsW7E91nXXjpnPhSoMOHXShSVhGRdn8w==} + '@oxc-parser/binding-win32-arm64-msvc@0.153.0': + resolution: {integrity: sha512-xGcy12tO9k7zFbeyQzEuilfWfQpyRq23/fLPfN3wjSWuWv58k46fQT1hsO1KFNykZuVGW9xSJE/z592TmAoSDA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-parser/binding-win32-ia32-msvc@0.137.0': - resolution: {integrity: sha512-sQUqym80PFi6McRsIqfJrSu2JrSClEZIXXD+/FjAFoULEKzOPsldIdFBG96xdX8aVMzCNQ9792FPx3MfkEIrFA==} + '@oxc-parser/binding-win32-ia32-msvc@0.153.0': + resolution: {integrity: sha512-o1ykUjWncvXX6N5a4KebgLjtD8zRui+f1llMhSGoSC9oP2KOqapRpdwmZ3NcNG0axFouwVKmhGBjd+IhA8BksA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxc-parser/binding-win32-x64-msvc@0.137.0': - resolution: {integrity: sha512-2AsevxlvNN4WKxpEn3RtqD5zbqMaXF+T7JXblsP4gVuY+vC9dXS4ED/PwfRCliFqoeisYS3Iro4DHzxr0TEvVA==} + '@oxc-parser/binding-win32-x64-msvc@0.153.0': + resolution: {integrity: sha512-gxQz7G96Up136fd+2zWrP+o6FYGs9NO4Dyv55IoeJFJUDwLFHcLYY11hhA5wQKs0HoM57Q8esQ3nEVhnCdsjAQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@oxc-project/types@0.137.0': - resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} + '@oxc-project/types@0.153.0': + resolution: {integrity: sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw==} - '@oxc-resolver/binding-android-arm-eabi@11.21.3': - resolution: {integrity: sha512-eNU11A2WNizh04v3uyaJCootrHIaS0B9aHYXvAvVnPNk4xYSjMUjHnhQ6dewPN2MRYDskV85d1N0Aw0WNWhcyg==} + '@oxc-resolver/binding-android-arm-eabi@11.24.2': + resolution: {integrity: sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==} cpu: [arm] os: [android] - '@oxc-resolver/binding-android-arm64@11.21.3': - resolution: {integrity: sha512-8Q+ZjTLvn2dIcWsrmhdrEihm7q+ag/k+mkry7Z+t0QbbHaVxXQfvH9AewyVMh/WrpEKhQ3DDgx9fYbqeCpeOEw==} + '@oxc-resolver/binding-android-arm64@11.24.2': + resolution: {integrity: sha512-cl4icWaZFnLdg8m6qtnh5rBMuGbxc/ptStFHLeCNwr+2cZjkjNwQu/jYRS0CHlnPecOJMpuS5M6/BH+0J/YkEg==} cpu: [arm64] os: [android] - '@oxc-resolver/binding-darwin-arm64@11.21.3': - resolution: {integrity: sha512-wkh0qKZGHXVUDxFw3oA1TXnU2BDYY/r775oJflGeIr8uDPPoN2pk8gijQIzYRT6hoql/lg3+Tx/SaTn9e2/aGg==} + '@oxc-resolver/binding-darwin-arm64@11.24.2': + resolution: {integrity: sha512-At29QEMF6HajbQvgY8K6OXnHD1x9rad74xBEfmCB6ZqCGsdq75aK7tOYcTbOanMy8qdIBrfL3SMr3p/lfSlb9w==} cpu: [arm64] os: [darwin] - '@oxc-resolver/binding-darwin-x64@11.21.3': - resolution: {integrity: sha512-HbNc23FAQYbuyDV2vBWMez4u4mrsm5RAkniGZAWqr6lYZ3N4beeqIb776jzwRl8qL2zRhHVXpUj97X0QgogVzg==} + '@oxc-resolver/binding-darwin-x64@11.24.2': + resolution: {integrity: sha512-A5Kqr1EUj4oIL5CF4WRssq/o5P0Y11cwoFouMRmQ7YnC/A8V93nv1nb7aSU8HwcgmXropjLNkVTl4MN87cu28Q==} cpu: [x64] os: [darwin] - '@oxc-resolver/binding-freebsd-x64@11.21.3': - resolution: {integrity: sha512-K6xNsTUPEUdfrn0+kbMq5nOUB5w1C5pavPQngt4TM2FpN91lP0PBe2srSpamb4d69O7h86oAi/qWX/kZNRSjkw==} + '@oxc-resolver/binding-freebsd-x64@11.24.2': + resolution: {integrity: sha512-R5xkRBRRz7ceH/P5Jrc6G7FmdUdgpLYyESFAUDVTNQ9K0sGPxcp4ljiwEwEqsvNcQ4sYbMRrWcHHBCu7ksAJVw==} cpu: [x64] os: [freebsd] - '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3': - resolution: {integrity: sha512-VcFmOpcpWX1zoEy8M58tR2M9YxM+Z9RuQhqAx5q0CTmrruaP7Gveejg75hzd/5sg5nk9G3aLALEa3hE2FsmmTQ==} + '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': + resolution: {integrity: sha512-k/RuYL4L/R58IBn3wT5ma3Wh4k62bp1eYCFRWCmMsasUOqL+H6sW0VGFadEzKWXFFlz+2uIMoeMk9ySSZJHgbg==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3': - resolution: {integrity: sha512-quVoxFLBy43hWaQbbDtQNRwAX5vX76mv7n64icAtQcJ3eNgVeblqmkupF/hAneNthdqSlnd1sTjb3aQSaDPaCQ==} + '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': + resolution: {integrity: sha512-bnHAak3ujYfH5pKk4NieFNbvYvernfoQDgwLddbZ3OtMYrem87/qjlA+u+aKG0oZcqSLGCful/6/CEA+aeAgaA==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm64-gnu@11.21.3': - resolution: {integrity: sha512-X0AqNZgcD07Q4V3RDK18/vYOj/HQT/FnmEFGYS2jTWqY7JO13ryE3TEs3eAIgUJhBnNkpEaiXqz3VK8M7qQhWQ==} + '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': + resolution: {integrity: sha512-vDT3KHgzYp47gmtNOqL2VNhCyl5Zv643eyxm//A68J8DeUGXrvD1pZFiaT4jSfe+RInfnn1R2yVHye4enx6RnA==} cpu: [arm64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-arm64-musl@11.21.3': - resolution: {integrity: sha512-YkaQnaKYdbuaXvRt5Qd0GpbihzVnyfR6z1SpYfIUC6RTu4NF7lDKPjVkYb+jRI2gedVO2rVpN35Y6akG6ud4Lw==} + '@oxc-resolver/binding-linux-arm64-musl@11.24.2': + resolution: {integrity: sha512-+kMlQvbzfyEYtu5FcjE4p+ttBLpKW4d/AsAsuE69BxV6V4twZJeIQZFfD8gh/wqglY0MkPSezWXQH0jBV13MUw==} cpu: [arm64] os: [linux] libc: [musl] - '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3': - resolution: {integrity: sha512-gB9HwhrPiFqUzDeEq+y/CgAijz1YdI6BnXz5GaH2Pa9cWdutchlkGFAiAuGb/PjVQpiK6NFKzFuztxrweoit7A==} + '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': + resolution: {integrity: sha512-shjfMhmZ3gq9fv/w7bi3PnZlgOPG+2QAOFf0BJF0EgBSIGZ6PMLN2zbGEblTUYB/NKVDRyYhE2ff3dJ1QqNPkA==} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3': - resolution: {integrity: sha512-zjDWBlYk8QGv0H8dsPUWqkfjYIIjG2TvspGkzXL0eImbgxtZorA/klKeHyolevoT3Kvbi+1iMr9Lhrh7jf54Og==} + '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': + resolution: {integrity: sha512-zGelwFR5oRo+b69k8Lrzun86DyUHzfKN6cnjbR9l7Z7NIRznOE/2ZvPa1IUKqAL2PzAXOdwkfVqNvO1H2RlpAw==} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-riscv64-musl@11.21.3': - resolution: {integrity: sha512-4UfsQvacV388y1zpXL7C1x1FNYaV52JtuNRiuzrfQA2z1z6ElVrsidkGsrvQ5EgeSq1Pj7kaKqrgGkvFuxJ/tw==} + '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': + resolution: {integrity: sha512-qxZ1SWCXJY0eyhAlP6Lmo9F2Nrtx7EkYj9oCgL8apDPCwXwCEDA2U697bbT81JIc2IrVjxO4KX6WU2N+oN9Z4w==} cpu: [riscv64] os: [linux] libc: [musl] - '@oxc-resolver/binding-linux-s390x-gnu@11.21.3': - resolution: {integrity: sha512-b5uH+HKH0MP5mNBYaK75SKsJbw52URqrx2LavYdq6wb0l3ExAG5niYRP9DWUNHdKilpaBVM2bXk9HNWrH3ew7Q==} + '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': + resolution: {integrity: sha512-sGCecF3cx2DFlH4t/z7ApnOnXqN48p5p5mlHDEnHTAukQa2P+qMVE4CwyWE9W+q/m3QJ7kKfGrIjax31f44oFQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-x64-gnu@11.21.3': - resolution: {integrity: sha512-PjYlmilBpNRh2ntXNYAK3Am5w/nPfEpnU/96iNx7CI8EzAn12J4JRiec63wHJTH31nLoCNxBg/829pN+3CfG3Q==} + '@oxc-resolver/binding-linux-x64-gnu@11.24.2': + resolution: {integrity: sha512-k/VlMMcSzMlahb3/fENM4rTlsJ0s3fFROA0KXPBmKggqmTSaE383sl8F3KCOXPLmVsYfW6hCitMhXCEtNeZxxg==} cpu: [x64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-x64-musl@11.21.3': - resolution: {integrity: sha512-QTBAb7JuHlZ7JUEyM8UiQi2f7m/L4swBhP2TNpYIDc9Wp/wRw1G/8sl6i13aIzQAXH7LKIm294LeOHd0lQR8zA==} + '@oxc-resolver/binding-linux-x64-musl@11.24.2': + resolution: {integrity: sha512-8hbnZyNi97b/8wapYaIF9+t9GmZKBW2vunaOc3h9HGJptH7b7XpvZqOTBSm/MpTjr7H497BlgOaSfLUdhmy2bw==} cpu: [x64] os: [linux] libc: [musl] - '@oxc-resolver/binding-openharmony-arm64@11.21.3': - resolution: {integrity: sha512-4j1DFwjwv36ec9kds0jU/ucQ5Ha4ERO/H95BxR5JFf0kqUUAJ1kwII7XhTc1vZrkdJkvLGC9Q2MbpObpum8RBg==} + '@oxc-resolver/binding-openharmony-arm64@11.24.2': + resolution: {integrity: sha512-MvyGik3a6pVgZ0t/kWlbmFxFLmXQJwgLsY2eYFHLpy0wGwRbfzeIGgDwQ3kXqE30z+kSXennRkCrT7TUvkptNg==} cpu: [arm64] os: [openharmony] - '@oxc-resolver/binding-wasm32-wasi@11.21.3': - resolution: {integrity: sha512-i8oluoel5kru/j1WNrjmQSiA3GQ7wvIYVR1IwIoZtKogAhya2iub+ZKIeSIkcJOrnzQ18Tzl/F+kL3fYOxZLvA==} + '@oxc-resolver/binding-wasm32-wasi@11.24.2': + resolution: {integrity: sha512-vHcssMPwO08RTvj/c0iOBz90attxyG3wQJ0dTcyEQK43LRpcdLWZlV5feBhv6Isn6ahbQIzHbCgfa81+RiML0Q==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-resolver/binding-win32-arm64-msvc@11.21.3': - resolution: {integrity: sha512-M/8dw8dD6aOs+NlPJax401CZB9I7Aut84isQLgALGGwke4Afvw+/7yYhZb94yXf6t2sPLhQLmSmtSV+2FhsOWg==} + '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': + resolution: {integrity: sha512-uokJqro2iBqkFvJdKQLP7d8/BUmFwESQFVmIJUQKj1Xn1a/LysJoe1vmeECLF5b3jsV8CAL5sEMJXX6SdK9Nhg==} cpu: [arm64] os: [win32] - '@oxc-resolver/binding-win32-x64-msvc@11.21.3': - resolution: {integrity: sha512-H7BCt/VnS9hnmMp42eGhZ99izSCRvlnWwy/N71K1/J8QoExwY4262Z8QiEkMDtduRJrztayDxETTckmUuAVL9Q==} + '@oxc-resolver/binding-win32-x64-msvc@11.24.2': + resolution: {integrity: sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw==} cpu: [x64] os: [win32] @@ -1948,97 +2093,98 @@ packages: react-redux: optional: true - '@rolldown/binding-android-arm64@1.1.3': - resolution: {integrity: sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==} + '@rolldown/binding-android-arm-eabi@1.2.13': + resolution: {integrity: sha512-Vu/NICrgdRvUOeaJZIyB2FP63s6fO/4ud5l8dXmxDx9yDyn+mN0y+gsvsVviSli+T361Aqo0h46EuMoobrwawA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@rolldown/binding-android-arm64@1.2.13': + resolution: {integrity: sha512-6LEoIrGy5vvCd2boNnv2soPSUZj/PRvhp8R/t9KlX+mIZxThIE/ZqxrGXxmuNX0FuvQFvLdZr7S4HrYpYBVhEQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.1.3': - resolution: {integrity: sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw==} + '@rolldown/binding-darwin-arm64@1.2.13': + resolution: {integrity: sha512-CaJSRzlQ6Q+zkDMVA9OkVxBjVoPRCDEE3v0FSJ9kIQBgRjFApA3Si4ijhbNVUji7ZJt+PfO0e46qy4nPInHUPA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.1.3': - resolution: {integrity: sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw==} + '@rolldown/binding-darwin-x64@1.2.13': + resolution: {integrity: sha512-e4r340I5hxSzJkD3YJBxgzq/rJ3wwxwdLLb2FPt1Zpyem20nrQPT11DDEEkazwxaHumH8wpglsp/Ozgj/wT6mw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.1.3': - resolution: {integrity: sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw==} + '@rolldown/binding-freebsd-x64@1.2.13': + resolution: {integrity: sha512-hoBWDZ4/K/mJKVMbsgUd1jfpA2DiOrJ54mpegObU9TBHBBrtX4FLIXJJQRDPZ/2Dn91GvPob+Z2hwKJzf4E5SQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.1.3': - resolution: {integrity: sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.13': + resolution: {integrity: sha512-oF9fZu3vTWnTiVAkDFxU9PJLt1nh20K9RRpuHsR7ZnE2L7XookBbDBVLojCVSLGbvtSlxeUNnjAj6DbNsKyzbg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.1.3': - resolution: {integrity: sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA==} + '@rolldown/binding-linux-arm64-gnu@1.2.13': + resolution: {integrity: sha512-DTpb/+jMiqWMPgphn4ksW1zW+XLJ6dJJ9FMvnIk9I291LhCctMPhMYJrP5t9p6C9qa3KXadDdUEZHBaPh3kNxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.1.3': - resolution: {integrity: sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==} + '@rolldown/binding-linux-arm64-musl@1.2.13': + resolution: {integrity: sha512-xU+Kvv9N2A3SY35zFh1FWWNjxbadE/BKeqnkXe7vScU4GZsw757BlVmDLITZEq8DPpk6m7uoDYkK7P+x/uU5Ow==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.1.3': - resolution: {integrity: sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==} + '@rolldown/binding-linux-ppc64-gnu@1.2.13': + resolution: {integrity: sha512-XMk/hnhh25oQ756Lclb1Q11h4ll0xC0Esa5w4Vzp+mAE2S3AGJgeM0SonrIgY8fHhjarb6hcoTuwoFG0VVP2ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.1.3': - resolution: {integrity: sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==} + '@rolldown/binding-linux-s390x-gnu@1.2.13': + resolution: {integrity: sha512-U1BoTHYmlywE2n3HUWjzZ+8EQsKr+OwpxYuDWaubx42tUL8QSL7nOqRz/NVHanibbFP3M1Rxuprz/wNcbMKjqw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.1.3': - resolution: {integrity: sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==} + '@rolldown/binding-linux-x64-gnu@1.2.13': + resolution: {integrity: sha512-J4cm80Pc6wEwV5AZ42o62sIQgDk+Y7R2s646jIwuvO+4V46QB58N4vVuMPWCBaNgursXLpmUWJV//WQAkPvHBQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.1.3': - resolution: {integrity: sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==} + '@rolldown/binding-linux-x64-musl@1.2.13': + resolution: {integrity: sha512-W0euZS40U4V6JkmEnVCIX9mcsL6cbXQ4X8c2w+MMOIjFg68TXUW+u3RT+2e1t1pv9mg/EP3pDtK3POXdQ7Rxyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.1.3': - resolution: {integrity: sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==} + '@rolldown/binding-openharmony-arm64@1.2.13': + resolution: {integrity: sha512-do/AF/4n9MRshia3a5aXoy8xM2c6mgfT6D7H/dY6my5z+hfCIR4ab7mk4IRj++nsEQpKy39kd0DQnDq+r692tw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.1.3': - resolution: {integrity: sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] - - '@rolldown/binding-win32-arm64-msvc@1.1.3': - resolution: {integrity: sha512-2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g==} + '@rolldown/binding-win32-arm64-msvc@1.2.13': + resolution: {integrity: sha512-6FtUf2cJZobutJdxnGYX8z0vtbgqU0b2v8vfBhkXb9wp2MppMFtkunE+IaOntyi01rkIQoPW2GHABtfzsC0BRQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.1.3': - resolution: {integrity: sha512-OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA==} + '@rolldown/binding-win32-x64-msvc@1.2.13': + resolution: {integrity: sha512-UKhFaZTeTcbKrb3iU82m17jVcPEAoqDkCN5MBqgPyZSwp/cQmib21crTS0DdH7T1B7wZRWEI89YQAOJMet5yhg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -2391,8 +2537,8 @@ packages: '@types/react@19.3.0': resolution: {integrity: sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==} - '@types/sanitize-html@2.16.1': - resolution: {integrity: sha512-n9wjs8bCOTyN/ynwD8s/nTcTreIHB1vf31vhLMGqUPNHaweKC4/fAl4Dj+hUlCTKYgm4P3k83fmiFfzkZ6sgMA==} + '@types/sanitize-html@2.16.2': + resolution: {integrity: sha512-kuAbgDCFv418flrp3z4o/4ufLA/5ovmXRH0L419iZCPGO7w00znjeDI5Wy/KZWNIBpDQc7hucCK+J5almB6FyA==} '@types/use-sync-external-store@0.0.6': resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} @@ -2403,6 +2549,9 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@types/ws@8.18.2': + resolution: {integrity: sha512-67MQl+fpWKVTT1NYdnmo3U4sc/xPo/zQBncVnI74qmQa0z/b+1g6iYqNmGCPbxO+zz2aklb08a0oHfegiVd0/w==} + '@typescript-eslint/eslint-plugin@8.71.1': resolution: {integrity: sha512-nNlBf6HuotqMgZvSkWD5hNdemiBIxQ2NmrlgfcUIeZRs+BbakjscCQRq/Hb74EFVnFiSWWdL12JruqwBy3ERDw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2462,18 +2611,21 @@ packages: resolution: {integrity: sha512-0GxiUGqMU0qXJt58cBsiG3DP8lUmBaFo2vChtUX+CT7PnR3v/VGLLrzVP4K9r1lNiZXjHYefMBbPunplr09v6w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitejs/plugin-react@6.0.3': - resolution: {integrity: sha512-vmFvco5/QuC2f9Oj+wTk0+9XeDFkHxSamwZKYc7MxYwKICfvUvlMhqKI0VuICPltGqh1neqBKDvO4kes1ya8vg==} + '@vitejs/plugin-react@6.1.2': + resolution: {integrity: sha512-fhJNGUdscQa4HkI0xFxwonWyhnVReCPDbXI7FH7jmzpnVCrFQI7PRrhWecO263610vOrs9tr2Y4xcf8uAdFxbw==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 babel-plugin-react-compiler: ^1.0.0 + oxc-transform-react: ^0.152.0 vite: ^8.0.0 peerDependenciesMeta: '@rolldown/plugin-babel': optional: true babel-plugin-react-compiler: optional: true + oxc-transform-react: + optional: true '@vitest/mocker@5.0.3': resolution: {integrity: sha512-T8sWAIbkSyAjkwTcaEc3Iu0o9A27X1/kdXrizhZkGuSKScRQtRzclfAMpOTcGdXCsqxeWlpGy3XjqaW8CpLORg==} @@ -2808,10 +2960,6 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} - entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} - entities@8.0.0: resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} engines: {node: '>=20.19.0'} @@ -2824,6 +2972,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.28.2: + resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -2838,13 +2991,13 @@ packages: peerDependencies: 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 - eslint-plugin-react-refresh@0.5.3: - resolution: {integrity: sha512-5EMmLCV98Pi4o/f/3DP/v/tNqLHMIc9I8LKClNDWhZ9JTho89/kQcitCXQBMG7sAfVRK0Ie3T2EDOzp1YXYiVA==} + eslint-plugin-react-refresh@0.5.7: + resolution: {integrity: sha512-XhJSzLljuYD4UjNuFGJu2v7aD3sqNVK12w5/DCUfrNfHWegZo2+TsavNx8MuxMwEquuFAzNbNfXKU0WoZ+YUIg==} peerDependencies: eslint: ^9 || ^10 - eslint-plugin-react-you-might-not-need-an-effect@1.0.1: - resolution: {integrity: sha512-oOhQTYhor88Xp8RVytq25tvBfiAjU0r9SCDC51Qop+3Wg5BR1xGMAkM+/dV4MZbcMhdaU1L9bkv6LC95JmiTig==} + eslint-plugin-react-you-might-not-need-an-effect@1.0.2: + resolution: {integrity: sha512-HgYol2zhH3KbnW9Q4FY/FcIINbsYVL6rwQESChqBC2s9SLWtw1wg05+J7SCrr3BfQpNY2ReYhf8xjpd2JhKJOQ==} engines: {node: '>=14.0.0'} peerDependencies: eslint: '>=8.40.0' @@ -2964,9 +3117,9 @@ packages: flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - formatly@0.3.0: - resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==} - engines: {node: '>=18.3.0'} + formatly@0.11.4: + resolution: {integrity: sha512-TeCC10lP8KCgoX+Fe5lryILIT0/Dy+nP0OSVnsuB5CwXoLuOdqxCYlPFF1inR8S/zTy1ec7TjhS2TeRKWzzImA==} + engines: {node: '>=18.14.0'} hasBin: true formdata-polyfill@4.0.10: @@ -2986,8 +3139,8 @@ packages: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} - get-tsconfig@4.14.0: - resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + get-tsconfig@4.14.3: + resolution: {integrity: sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==} glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} @@ -3040,9 +3193,6 @@ packages: '@types/react': optional: true - htmlparser2@10.1.0: - resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} - htmlparser2@12.0.0: resolution: {integrity: sha512-Tz7u1i95/g2x2jz81+x0FBVhBhY5aRTvD3tXXdFaljuNdzDLJ8UGNRrTcj2cgQvAg3iW/h77Fz15nLW0L0CrZw==} engines: {node: '>=20.19.0'} @@ -3150,8 +3300,8 @@ packages: keyv@5.6.0: resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} - knip@6.24.0: - resolution: {integrity: sha512-PokLlgeEjLh1rAsB7ts+52wZ37HBr1nDhE6NNONwEaXdeZGCJOkP7ZlIAI2Gtu8xohquzTWy75bc/1diI9shQw==} + knip@6.41.0: + resolution: {integrity: sha512-DrhQlIuV6xScd5Q+WTF1znd1w41QzxFGCtAHXCajsH/ndGMotHoNYbdXbuFtzW3mIOmniHtZ7zCtvnQkUmJtQQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3173,30 +3323,60 @@ packages: cpu: [arm64] os: [android] + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + 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-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + 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-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + 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-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + 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-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + 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'} @@ -3204,6 +3384,13 @@ packages: os: [linux] libc: [glibc] + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + 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'} @@ -3211,6 +3398,13 @@ packages: os: [linux] libc: [musl] + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + 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'} @@ -3218,6 +3412,13 @@ packages: os: [linux] libc: [glibc] + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + 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'} @@ -3225,22 +3426,45 @@ packages: os: [linux] libc: [musl] + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + 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-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + 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-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + lightningcss@1.32.0: resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} + link-preview-js@5.0.0: resolution: {integrity: sha512-+/R92+k6wwhkdJa7tSXp2WqLaRjyo2eTNbgxNyuZV9fKZ6zLcM9ZSd2ZdzsvrZwAvu4sk3vSfxEmj0xwfOVe7Q==} engines: {node: '>=22'} @@ -3340,11 +3564,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.12: - resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - nanoid@3.3.20: resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3393,12 +3612,12 @@ packages: orderedmap@2.1.1: resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} - oxc-parser@0.137.0: - resolution: {integrity: sha512-yFImD+WLElJpLKy8llG1qe4DCmMsL18peRp8XP1JKfig/gISbJkglnpDtX2aTmAn10kZF7164HbN2H8QPsXxGg==} + oxc-parser@0.153.0: + resolution: {integrity: sha512-cEnpyyV1OJRXv++SFNw0z8i+2o/cr88rVLaOYJafELDoHM5yHvCAbwGRLvxuany6SNLcbblSMUyZaGzH+quSYg==} engines: {node: ^20.19.0 || >=22.12.0} - oxc-resolver@11.21.3: - resolution: {integrity: sha512-2Mx3fKQz7+xgrBONjsxOgCGtMHOn38/HxMzW1I5efwXB5a4lRN0Vp40gYUJFBWJslcrvwoofTrqoTnLbwTd3pA==} + oxc-resolver@11.24.2: + resolution: {integrity: sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==} p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} @@ -3408,6 +3627,9 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + package-manager-detector@1.9.0: + resolution: {integrity: sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==} + parse-srcset@1.0.2: resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==} @@ -3431,18 +3653,10 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} - engines: {node: '>=12'} - picomatch@4.0.7: resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} - postcss@8.5.16: - resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.29: resolution: {integrity: sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ==} engines: {node: ^10 || ^12 || >=14} @@ -3635,8 +3849,8 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - rolldown@1.1.3: - resolution: {integrity: sha512-1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g==} + rolldown@1.2.13: + resolution: {integrity: sha512-/5apOkwWxtACcQtZ5WlrAsKS4JwXVThQPJZ3RqIruRY9UG9M8e0VlXN068xum/JRKA4aIUoJ13ghe/kGCvidiQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3677,8 +3891,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - smol-toml@1.6.1: - resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} + smol-toml@1.9.1: + resolution: {integrity: sha512-j7WyPdf0CJoutMzMoPLF/bVXHtKZIT9Rb4eGeEbWw8X2t5oirjPgpL+OpaENZrILYaXqYwnVH+qgUwVbl+pUJQ==} engines: {node: '>= 18'} sonner@2.0.8: @@ -3754,8 +3968,8 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.23.0: - resolution: {integrity: sha512-eUdUIaCr963q2h5u3+QwvYp0+eqPvn+egeqZUm0hwERCqqx1E3kK5ehbGCvqSE5MQAULr67ww0cA3jKc3YkM1w==} + tsx@4.23.15: + resolution: {integrity: sha512-Yiex1Ovn8z2xPpOWckIiysV1SSyRMY9BkLF++q0yKiDxCqRhosKfMg3janKkiLBwZ5c/YryloKwGZcrEmtwxKw==} engines: {node: '>=18.0.0'} hasBin: true @@ -3792,8 +4006,8 @@ packages: uc.micro@3.0.0: resolution: {integrity: sha512-U3PppEkleoTnIfi8BozMx3yju3qc/L6SwqWo2Sw+54PX+PX0q9I+r1Um5HCmqD7n9VDX5/v3vQH/AjA6deDdtw==} - unbash@4.0.2: - resolution: {integrity: sha512-8gwNZ29+0/3zmXw7ToIHZtg6wK37xnniRUdBt7B27xZxaxfgR5tGMaGHT0t0dLtBV9fXE7zurh0s6Z1DHVjfWg==} + unbash@5.0.0: + resolution: {integrity: sha512-RYNm/ISFtflWpIcXTPHHLJZ0mqzInav+L9ke9PcL+hHsSf9+Fd/syPb614Mlqs/O3AYgjnvxDOFl0a+zVqi1/w==} engines: {node: '>=14'} undici-types@7.24.6: @@ -3841,13 +4055,13 @@ packages: resolution: {integrity: sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==} hasBin: true - vite@8.1.3: - resolution: {integrity: sha512-Ds+gBRbj0lwRO2Y5hwnUBdxSwlAve9LeRyU4sNnAr0ewW0gWF0n5bgXgUzbgZ49MV9BVUAQUFYVcDUcilUExMA==} + vite@8.3.4: + resolution: {integrity: sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.3.0 + '@vitejs/devtools': ^0.7.1 esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 @@ -3974,8 +4188,8 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml@2.9.0: - resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + yaml@2.9.1: + resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==} engines: {node: '>= 14.6'} hasBin: true @@ -4133,24 +4347,13 @@ snapshots: react: 19.3.0 tslib: 2.8.1 - '@emnapi/core@1.11.0': - dependencies: - '@emnapi/wasi-threads': 1.2.2 - tslib: 2.8.1 - optional: true - - '@emnapi/core@1.11.1': + '@emnapi/core@1.11.2': dependencies: '@emnapi/wasi-threads': 1.2.2 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.11.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.11.1': + '@emnapi/runtime@1.11.2': dependencies: tslib: 2.8.1 optional: true @@ -4165,81 +4368,159 @@ snapshots: '@esbuild/aix-ppc64@0.28.1': optional: true + '@esbuild/aix-ppc64@0.28.2': + optional: true + '@esbuild/android-arm64@0.28.1': optional: true + '@esbuild/android-arm64@0.28.2': + optional: true + '@esbuild/android-arm@0.28.1': optional: true + '@esbuild/android-arm@0.28.2': + optional: true + '@esbuild/android-x64@0.28.1': optional: true + '@esbuild/android-x64@0.28.2': + optional: true + '@esbuild/darwin-arm64@0.28.1': optional: true + '@esbuild/darwin-arm64@0.28.2': + optional: true + '@esbuild/darwin-x64@0.28.1': optional: true + '@esbuild/darwin-x64@0.28.2': + optional: true + '@esbuild/freebsd-arm64@0.28.1': optional: true + '@esbuild/freebsd-arm64@0.28.2': + optional: true + '@esbuild/freebsd-x64@0.28.1': optional: true + '@esbuild/freebsd-x64@0.28.2': + optional: true + '@esbuild/linux-arm64@0.28.1': optional: true + '@esbuild/linux-arm64@0.28.2': + optional: true + '@esbuild/linux-arm@0.28.1': optional: true + '@esbuild/linux-arm@0.28.2': + optional: true + '@esbuild/linux-ia32@0.28.1': optional: true + '@esbuild/linux-ia32@0.28.2': + optional: true + '@esbuild/linux-loong64@0.28.1': optional: true + '@esbuild/linux-loong64@0.28.2': + optional: true + '@esbuild/linux-mips64el@0.28.1': optional: true + '@esbuild/linux-mips64el@0.28.2': + optional: true + '@esbuild/linux-ppc64@0.28.1': optional: true + '@esbuild/linux-ppc64@0.28.2': + optional: true + '@esbuild/linux-riscv64@0.28.1': optional: true + '@esbuild/linux-riscv64@0.28.2': + optional: true + '@esbuild/linux-s390x@0.28.1': optional: true + '@esbuild/linux-s390x@0.28.2': + optional: true + '@esbuild/linux-x64@0.28.1': optional: true + '@esbuild/linux-x64@0.28.2': + optional: true + '@esbuild/netbsd-arm64@0.28.1': optional: true + '@esbuild/netbsd-arm64@0.28.2': + optional: true + '@esbuild/netbsd-x64@0.28.1': optional: true + '@esbuild/netbsd-x64@0.28.2': + optional: true + '@esbuild/openbsd-arm64@0.28.1': optional: true + '@esbuild/openbsd-arm64@0.28.2': + optional: true + '@esbuild/openbsd-x64@0.28.1': optional: true + '@esbuild/openbsd-x64@0.28.2': + optional: true + '@esbuild/openharmony-arm64@0.28.1': optional: true + '@esbuild/openharmony-arm64@0.28.2': + optional: true + '@esbuild/sunos-x64@0.28.1': optional: true + '@esbuild/sunos-x64@0.28.2': + optional: true + '@esbuild/win32-arm64@0.28.1': optional: true + '@esbuild/win32-arm64@0.28.2': + optional: true + '@esbuild/win32-ia32@0.28.1': optional: true + '@esbuild/win32-ia32@0.28.2': + optional: true + '@esbuild/win32-x64@0.28.1': optional: true + '@esbuild/win32-x64@0.28.2': + optional: true + '@eslint-community/eslint-utils@4.9.1(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0))': dependencies: eslint: 10.12.0(jiti@2.7.0)(supports-color@11.0.0) @@ -4410,17 +4691,10 @@ snapshots: dependencies: '@lukeed/csprng': 1.1.0 - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)': - dependencies: - '@emnapi/core': 1.11.0 - '@emnapi/runtime': 1.11.0 - '@tybys/wasm-util': 0.10.3 - optional: true - - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 '@tybys/wasm-util': 0.10.3 optional: true @@ -4432,131 +4706,124 @@ snapshots: '@noble/hashes@2.4.0': {} - '@oxc-parser/binding-android-arm-eabi@0.137.0': + '@oxc-parser/binding-android-arm-eabi@0.153.0': optional: true - '@oxc-parser/binding-android-arm64@0.137.0': + '@oxc-parser/binding-android-arm64@0.153.0': optional: true - '@oxc-parser/binding-darwin-arm64@0.137.0': + '@oxc-parser/binding-darwin-arm64@0.153.0': optional: true - '@oxc-parser/binding-darwin-x64@0.137.0': + '@oxc-parser/binding-darwin-x64@0.153.0': optional: true - '@oxc-parser/binding-freebsd-x64@0.137.0': + '@oxc-parser/binding-freebsd-x64@0.153.0': optional: true - '@oxc-parser/binding-linux-arm-gnueabihf@0.137.0': + '@oxc-parser/binding-linux-arm-gnueabihf@0.153.0': optional: true - '@oxc-parser/binding-linux-arm-musleabihf@0.137.0': + '@oxc-parser/binding-linux-arm-musleabihf@0.153.0': optional: true - '@oxc-parser/binding-linux-arm64-gnu@0.137.0': + '@oxc-parser/binding-linux-arm64-gnu@0.153.0': optional: true - '@oxc-parser/binding-linux-arm64-musl@0.137.0': + '@oxc-parser/binding-linux-arm64-musl@0.153.0': optional: true - '@oxc-parser/binding-linux-ppc64-gnu@0.137.0': + '@oxc-parser/binding-linux-ppc64-gnu@0.153.0': optional: true - '@oxc-parser/binding-linux-riscv64-gnu@0.137.0': + '@oxc-parser/binding-linux-riscv64-gnu@0.153.0': optional: true - '@oxc-parser/binding-linux-riscv64-musl@0.137.0': + '@oxc-parser/binding-linux-riscv64-musl@0.153.0': optional: true - '@oxc-parser/binding-linux-s390x-gnu@0.137.0': + '@oxc-parser/binding-linux-s390x-gnu@0.153.0': optional: true - '@oxc-parser/binding-linux-x64-gnu@0.137.0': + '@oxc-parser/binding-linux-x64-gnu@0.153.0': optional: true - '@oxc-parser/binding-linux-x64-musl@0.137.0': + '@oxc-parser/binding-linux-x64-musl@0.153.0': optional: true - '@oxc-parser/binding-openharmony-arm64@0.137.0': + '@oxc-parser/binding-openharmony-arm64@0.153.0': optional: true - '@oxc-parser/binding-wasm32-wasi@0.137.0': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - optional: true - - '@oxc-parser/binding-win32-arm64-msvc@0.137.0': + '@oxc-parser/binding-win32-arm64-msvc@0.153.0': optional: true - '@oxc-parser/binding-win32-ia32-msvc@0.137.0': + '@oxc-parser/binding-win32-ia32-msvc@0.153.0': optional: true - '@oxc-parser/binding-win32-x64-msvc@0.137.0': + '@oxc-parser/binding-win32-x64-msvc@0.153.0': optional: true - '@oxc-project/types@0.137.0': {} + '@oxc-project/types@0.153.0': {} - '@oxc-resolver/binding-android-arm-eabi@11.21.3': + '@oxc-resolver/binding-android-arm-eabi@11.24.2': optional: true - '@oxc-resolver/binding-android-arm64@11.21.3': + '@oxc-resolver/binding-android-arm64@11.24.2': optional: true - '@oxc-resolver/binding-darwin-arm64@11.21.3': + '@oxc-resolver/binding-darwin-arm64@11.24.2': optional: true - '@oxc-resolver/binding-darwin-x64@11.21.3': + '@oxc-resolver/binding-darwin-x64@11.24.2': optional: true - '@oxc-resolver/binding-freebsd-x64@11.21.3': + '@oxc-resolver/binding-freebsd-x64@11.24.2': optional: true - '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3': + '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': optional: true - '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3': + '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': optional: true - '@oxc-resolver/binding-linux-arm64-gnu@11.21.3': + '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-arm64-musl@11.21.3': + '@oxc-resolver/binding-linux-arm64-musl@11.24.2': optional: true - '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3': + '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3': + '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-riscv64-musl@11.21.3': + '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': optional: true - '@oxc-resolver/binding-linux-s390x-gnu@11.21.3': + '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-x64-gnu@11.21.3': + '@oxc-resolver/binding-linux-x64-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-x64-musl@11.21.3': + '@oxc-resolver/binding-linux-x64-musl@11.24.2': optional: true - '@oxc-resolver/binding-openharmony-arm64@11.21.3': + '@oxc-resolver/binding-openharmony-arm64@11.24.2': optional: true - '@oxc-resolver/binding-wasm32-wasi@11.21.3': + '@oxc-resolver/binding-wasm32-wasi@11.24.2': dependencies: - '@emnapi/core': 1.11.0 - '@emnapi/runtime': 1.11.0 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0) + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.21.3': + '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': optional: true - '@oxc-resolver/binding-win32-x64-msvc@11.21.3': + '@oxc-resolver/binding-win32-x64-msvc@11.24.2': optional: true '@peculiar/asn1-android@2.7.0': @@ -5179,53 +5446,49 @@ snapshots: react: 19.3.0 react-redux: 9.3.0(@types/react@19.3.0)(react@19.3.0)(redux@5.0.1) - '@rolldown/binding-android-arm64@1.1.3': + '@rolldown/binding-android-arm-eabi@1.2.13': optional: true - '@rolldown/binding-darwin-arm64@1.1.3': + '@rolldown/binding-android-arm64@1.2.13': optional: true - '@rolldown/binding-darwin-x64@1.1.3': + '@rolldown/binding-darwin-arm64@1.2.13': optional: true - '@rolldown/binding-freebsd-x64@1.1.3': + '@rolldown/binding-darwin-x64@1.2.13': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.1.3': + '@rolldown/binding-freebsd-x64@1.2.13': optional: true - '@rolldown/binding-linux-arm64-gnu@1.1.3': + '@rolldown/binding-linux-arm-gnueabihf@1.2.13': optional: true - '@rolldown/binding-linux-arm64-musl@1.1.3': + '@rolldown/binding-linux-arm64-gnu@1.2.13': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.1.3': + '@rolldown/binding-linux-arm64-musl@1.2.13': optional: true - '@rolldown/binding-linux-s390x-gnu@1.1.3': + '@rolldown/binding-linux-ppc64-gnu@1.2.13': optional: true - '@rolldown/binding-linux-x64-gnu@1.1.3': + '@rolldown/binding-linux-s390x-gnu@1.2.13': optional: true - '@rolldown/binding-linux-x64-musl@1.1.3': + '@rolldown/binding-linux-x64-gnu@1.2.13': optional: true - '@rolldown/binding-openharmony-arm64@1.1.3': + '@rolldown/binding-linux-x64-musl@1.2.13': optional: true - '@rolldown/binding-wasm32-wasi@1.1.3': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@rolldown/binding-openharmony-arm64@1.2.13': optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.3': + '@rolldown/binding-win32-arm64-msvc@1.2.13': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.3': + '@rolldown/binding-win32-x64-msvc@1.2.13': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -5310,12 +5573,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3 '@tailwindcss/oxide-win32-x64-msvc': 4.3.3 - '@tailwindcss/vite@4.3.3(vite@8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))': + '@tailwindcss/vite@4.3.3(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))': dependencies: '@tailwindcss/node': 4.3.3 '@tailwindcss/oxide': 4.3.3 tailwindcss: 4.3.3 - vite: 8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) '@tanstack/query-core@5.104.1': {} @@ -5574,9 +5837,9 @@ snapshots: dependencies: csstype: 3.2.3 - '@types/sanitize-html@2.16.1': + '@types/sanitize-html@2.16.2': dependencies: - htmlparser2: 10.1.0 + htmlparser2: 12.0.0 '@types/use-sync-external-store@0.0.6': {} @@ -5588,6 +5851,10 @@ snapshots: dependencies: '@types/node': 24.19.1 + '@types/ws@8.18.2': + dependencies: + '@types/node': 24.19.1 + '@typescript-eslint/eslint-plugin@8.71.1(@typescript-eslint/parser@8.71.1(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0))(supports-color@11.0.0)(typescript@6.0.3))(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0))(supports-color@11.0.0)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -5679,19 +5946,28 @@ snapshots: '@typescript-eslint/types': 8.71.1 eslint-visitor-keys: 5.0.1 - '@vitejs/plugin-react@6.0.3(vite@8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))': + '@vitejs/plugin-react@6.1.2(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) - '@vitest/mocker@5.0.3(vite@8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))': + '@vitest/mocker@5.0.3(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))': dependencies: '@jridgewell/trace-mapping': 0.3.31 '@vitest/spy': 5.0.3 estree-walker: 3.0.3 magic-string: 1.4.3 optionalDependencies: - vite: 8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) + + '@vitest/mocker@5.0.3(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))': + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + '@vitest/spy': 5.0.3 + estree-walker: 3.0.3 + magic-string: 1.4.3 + optionalDependencies: + vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) '@vitest/spy@5.0.3': {} @@ -5923,8 +6199,6 @@ snapshots: entities@6.0.1: {} - entities@7.0.1: {} - entities@8.0.0: {} es-module-lexer@2.3.2: {} @@ -5958,6 +6232,35 @@ snapshots: '@esbuild/win32-ia32': 0.28.1 '@esbuild/win32-x64': 0.28.1 + esbuild@0.28.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.2 + '@esbuild/android-arm': 0.28.2 + '@esbuild/android-arm64': 0.28.2 + '@esbuild/android-x64': 0.28.2 + '@esbuild/darwin-arm64': 0.28.2 + '@esbuild/darwin-x64': 0.28.2 + '@esbuild/freebsd-arm64': 0.28.2 + '@esbuild/freebsd-x64': 0.28.2 + '@esbuild/linux-arm': 0.28.2 + '@esbuild/linux-arm64': 0.28.2 + '@esbuild/linux-ia32': 0.28.2 + '@esbuild/linux-loong64': 0.28.2 + '@esbuild/linux-mips64el': 0.28.2 + '@esbuild/linux-ppc64': 0.28.2 + '@esbuild/linux-riscv64': 0.28.2 + '@esbuild/linux-s390x': 0.28.2 + '@esbuild/linux-x64': 0.28.2 + '@esbuild/netbsd-arm64': 0.28.2 + '@esbuild/netbsd-x64': 0.28.2 + '@esbuild/openbsd-arm64': 0.28.2 + '@esbuild/openbsd-x64': 0.28.2 + '@esbuild/openharmony-arm64': 0.28.2 + '@esbuild/sunos-x64': 0.28.2 + '@esbuild/win32-arm64': 0.28.2 + '@esbuild/win32-ia32': 0.28.2 + '@esbuild/win32-x64': 0.28.2 + escalade@3.2.0: {} escape-string-regexp@4.0.0: {} @@ -5973,11 +6276,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-refresh@0.5.3(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0)): + eslint-plugin-react-refresh@0.5.7(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0)): dependencies: eslint: 10.12.0(jiti@2.7.0)(supports-color@11.0.0) - eslint-plugin-react-you-might-not-need-an-effect@1.0.1(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0)): + eslint-plugin-react-you-might-not-need-an-effect@1.0.2(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0)): dependencies: eslint: 10.12.0(jiti@2.7.0)(supports-color@11.0.0) globals: 16.5.0 @@ -6078,9 +6381,9 @@ snapshots: dependencies: walk-up-path: 4.0.0 - fdir@6.5.0(picomatch@4.0.4): + fdir@6.5.0(picomatch@4.0.7): optionalDependencies: - picomatch: 4.0.4 + picomatch: 4.0.7 fetch-blob@3.2.0: dependencies: @@ -6108,9 +6411,10 @@ snapshots: flatted@3.4.2: {} - formatly@0.3.0: + formatly@0.11.4: dependencies: fd-package-json: 2.0.0 + package-manager-detector: 1.9.0 formdata-polyfill@4.0.10: dependencies: @@ -6123,7 +6427,7 @@ snapshots: get-nonce@1.0.1: {} - get-tsconfig@4.14.0: + get-tsconfig@4.14.3: dependencies: resolve-pkg-maps: 1.0.0 @@ -6174,13 +6478,6 @@ snapshots: optionalDependencies: '@types/react': 19.3.0 - htmlparser2@10.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 7.0.1 - htmlparser2@12.0.0: dependencies: domelementtype: 3.0.0 @@ -6278,20 +6575,19 @@ snapshots: dependencies: '@keyv/serialize': 1.1.1 - knip@6.24.0: + knip@6.41.0: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - formatly: 0.3.0 - get-tsconfig: 4.14.0 + formatly: 0.11.4 + get-tsconfig: 4.14.3 jiti: 2.7.0 - oxc-parser: 0.137.0 - oxc-resolver: 11.21.3 - picomatch: 4.0.4 - smol-toml: 1.6.1 + oxc-parser: 0.153.0 + oxc-resolver: 11.24.2 + picomatch: 4.0.7 + smol-toml: 1.9.1 strip-json-comments: 5.0.3 tinyglobby: 0.2.17 - unbash: 4.0.2 - yaml: 2.9.0 + unbash: 5.0.0 + yaml: 2.9.1 zod: 4.6.5 launder@1.7.2: @@ -6321,36 +6617,69 @@ snapshots: lightningcss-android-arm64@1.32.0: optional: true + lightningcss-android-arm64@1.33.0: + optional: true + lightningcss-darwin-arm64@1.32.0: optional: true + lightningcss-darwin-arm64@1.33.0: + optional: true + lightningcss-darwin-x64@1.32.0: optional: true + lightningcss-darwin-x64@1.33.0: + optional: true + lightningcss-freebsd-x64@1.32.0: optional: true + lightningcss-freebsd-x64@1.33.0: + optional: true + lightningcss-linux-arm-gnueabihf@1.32.0: optional: true + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + lightningcss-linux-arm64-gnu@1.32.0: optional: true + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + lightningcss-linux-arm64-musl@1.32.0: optional: true + lightningcss-linux-arm64-musl@1.33.0: + optional: true + lightningcss-linux-x64-gnu@1.32.0: optional: true + lightningcss-linux-x64-gnu@1.33.0: + optional: true + lightningcss-linux-x64-musl@1.32.0: optional: true + lightningcss-linux-x64-musl@1.33.0: + optional: true + lightningcss-win32-arm64-msvc@1.32.0: optional: true + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + lightningcss-win32-x64-msvc@1.32.0: optional: true + lightningcss-win32-x64-msvc@1.33.0: + optional: true + lightningcss@1.32.0: dependencies: detect-libc: 2.1.2 @@ -6367,6 +6696,22 @@ snapshots: lightningcss-win32-arm64-msvc: 1.32.0 lightningcss-win32-x64-msvc: 1.32.0 + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + link-preview-js@5.0.0: dependencies: cheerio: 1.0.0-rc.11 @@ -6461,8 +6806,6 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.12: {} - nanoid@3.3.20: {} natural-compare@1.4.0: {} @@ -6503,52 +6846,51 @@ snapshots: orderedmap@2.1.1: {} - oxc-parser@0.137.0: + oxc-parser@0.153.0: dependencies: - '@oxc-project/types': 0.137.0 + '@oxc-project/types': 0.153.0 optionalDependencies: - '@oxc-parser/binding-android-arm-eabi': 0.137.0 - '@oxc-parser/binding-android-arm64': 0.137.0 - '@oxc-parser/binding-darwin-arm64': 0.137.0 - '@oxc-parser/binding-darwin-x64': 0.137.0 - '@oxc-parser/binding-freebsd-x64': 0.137.0 - '@oxc-parser/binding-linux-arm-gnueabihf': 0.137.0 - '@oxc-parser/binding-linux-arm-musleabihf': 0.137.0 - '@oxc-parser/binding-linux-arm64-gnu': 0.137.0 - '@oxc-parser/binding-linux-arm64-musl': 0.137.0 - '@oxc-parser/binding-linux-ppc64-gnu': 0.137.0 - '@oxc-parser/binding-linux-riscv64-gnu': 0.137.0 - '@oxc-parser/binding-linux-riscv64-musl': 0.137.0 - '@oxc-parser/binding-linux-s390x-gnu': 0.137.0 - '@oxc-parser/binding-linux-x64-gnu': 0.137.0 - '@oxc-parser/binding-linux-x64-musl': 0.137.0 - '@oxc-parser/binding-openharmony-arm64': 0.137.0 - '@oxc-parser/binding-wasm32-wasi': 0.137.0 - '@oxc-parser/binding-win32-arm64-msvc': 0.137.0 - '@oxc-parser/binding-win32-ia32-msvc': 0.137.0 - '@oxc-parser/binding-win32-x64-msvc': 0.137.0 - - oxc-resolver@11.21.3: + '@oxc-parser/binding-android-arm-eabi': 0.153.0 + '@oxc-parser/binding-android-arm64': 0.153.0 + '@oxc-parser/binding-darwin-arm64': 0.153.0 + '@oxc-parser/binding-darwin-x64': 0.153.0 + '@oxc-parser/binding-freebsd-x64': 0.153.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.153.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.153.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.153.0 + '@oxc-parser/binding-linux-arm64-musl': 0.153.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.153.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.153.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.153.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.153.0 + '@oxc-parser/binding-linux-x64-gnu': 0.153.0 + '@oxc-parser/binding-linux-x64-musl': 0.153.0 + '@oxc-parser/binding-openharmony-arm64': 0.153.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.153.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.153.0 + '@oxc-parser/binding-win32-x64-msvc': 0.153.0 + + oxc-resolver@11.24.2: optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.21.3 - '@oxc-resolver/binding-android-arm64': 11.21.3 - '@oxc-resolver/binding-darwin-arm64': 11.21.3 - '@oxc-resolver/binding-darwin-x64': 11.21.3 - '@oxc-resolver/binding-freebsd-x64': 11.21.3 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.21.3 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.21.3 - '@oxc-resolver/binding-linux-arm64-gnu': 11.21.3 - '@oxc-resolver/binding-linux-arm64-musl': 11.21.3 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.21.3 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.21.3 - '@oxc-resolver/binding-linux-riscv64-musl': 11.21.3 - '@oxc-resolver/binding-linux-s390x-gnu': 11.21.3 - '@oxc-resolver/binding-linux-x64-gnu': 11.21.3 - '@oxc-resolver/binding-linux-x64-musl': 11.21.3 - '@oxc-resolver/binding-openharmony-arm64': 11.21.3 - '@oxc-resolver/binding-wasm32-wasi': 11.21.3 - '@oxc-resolver/binding-win32-arm64-msvc': 11.21.3 - '@oxc-resolver/binding-win32-x64-msvc': 11.21.3 + '@oxc-resolver/binding-android-arm-eabi': 11.24.2 + '@oxc-resolver/binding-android-arm64': 11.24.2 + '@oxc-resolver/binding-darwin-arm64': 11.24.2 + '@oxc-resolver/binding-darwin-x64': 11.24.2 + '@oxc-resolver/binding-freebsd-x64': 11.24.2 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.24.2 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.24.2 + '@oxc-resolver/binding-linux-arm64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-arm64-musl': 11.24.2 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-riscv64-musl': 11.24.2 + '@oxc-resolver/binding-linux-s390x-gnu': 11.24.2 + '@oxc-resolver/binding-linux-x64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-x64-musl': 11.24.2 + '@oxc-resolver/binding-openharmony-arm64': 11.24.2 + '@oxc-resolver/binding-wasm32-wasi': 11.24.2 + '@oxc-resolver/binding-win32-arm64-msvc': 11.24.2 + '@oxc-resolver/binding-win32-x64-msvc': 11.24.2 p-limit@3.1.0: dependencies: @@ -6558,6 +6900,8 @@ snapshots: dependencies: p-limit: 3.1.0 + package-manager-detector@1.9.0: {} + parse-srcset@1.0.2: {} parse5-htmlparser2-tree-adapter@7.1.0: @@ -6577,16 +6921,8 @@ snapshots: picocolors@1.1.1: {} - picomatch@4.0.4: {} - picomatch@4.0.7: {} - postcss@8.5.16: - dependencies: - nanoid: 3.3.12 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.29: dependencies: nanoid: 3.3.20 @@ -6780,26 +7116,26 @@ snapshots: resolve-pkg-maps@1.0.0: {} - rolldown@1.1.3: + rolldown@1.2.13: dependencies: - '@oxc-project/types': 0.137.0 + '@oxc-project/types': 0.153.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.3 - '@rolldown/binding-darwin-arm64': 1.1.3 - '@rolldown/binding-darwin-x64': 1.1.3 - '@rolldown/binding-freebsd-x64': 1.1.3 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.3 - '@rolldown/binding-linux-arm64-gnu': 1.1.3 - '@rolldown/binding-linux-arm64-musl': 1.1.3 - '@rolldown/binding-linux-ppc64-gnu': 1.1.3 - '@rolldown/binding-linux-s390x-gnu': 1.1.3 - '@rolldown/binding-linux-x64-gnu': 1.1.3 - '@rolldown/binding-linux-x64-musl': 1.1.3 - '@rolldown/binding-openharmony-arm64': 1.1.3 - '@rolldown/binding-wasm32-wasi': 1.1.3 - '@rolldown/binding-win32-arm64-msvc': 1.1.3 - '@rolldown/binding-win32-x64-msvc': 1.1.3 + '@rolldown/binding-android-arm-eabi': 1.2.13 + '@rolldown/binding-android-arm64': 1.2.13 + '@rolldown/binding-darwin-arm64': 1.2.13 + '@rolldown/binding-darwin-x64': 1.2.13 + '@rolldown/binding-freebsd-x64': 1.2.13 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.13 + '@rolldown/binding-linux-arm64-gnu': 1.2.13 + '@rolldown/binding-linux-arm64-musl': 1.2.13 + '@rolldown/binding-linux-ppc64-gnu': 1.2.13 + '@rolldown/binding-linux-s390x-gnu': 1.2.13 + '@rolldown/binding-linux-x64-gnu': 1.2.13 + '@rolldown/binding-linux-x64-musl': 1.2.13 + '@rolldown/binding-openharmony-arm64': 1.2.13 + '@rolldown/binding-win32-arm64-msvc': 1.2.13 + '@rolldown/binding-win32-x64-msvc': 1.2.13 rope-sequence@1.3.4: {} @@ -6831,7 +7167,7 @@ snapshots: shebang-regex@3.0.0: {} - smol-toml@1.6.1: {} + smol-toml@1.9.1: {} sonner@2.0.8(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0): dependencies: @@ -6878,8 +7214,8 @@ snapshots: tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 ts-api-utils@2.5.0(typescript@6.0.3): dependencies: @@ -6889,7 +7225,7 @@ snapshots: tslib@2.8.1: {} - tsx@4.23.0: + tsx@4.23.15: dependencies: esbuild: 0.28.1 optionalDependencies: @@ -6928,7 +7264,7 @@ snapshots: uc.micro@3.0.0: {} - unbash@4.0.2: {} + unbash@5.0.0: {} undici-types@7.24.6: {} @@ -6965,25 +7301,61 @@ snapshots: uuid@14.0.2: {} - vite@8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0): + vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1): dependencies: - lightningcss: 1.32.0 - picomatch: 4.0.4 - postcss: 8.5.16 - rolldown: 1.1.3 + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.29 + rolldown: 1.2.13 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 24.19.1 esbuild: 0.28.1 fsevents: 2.3.3 jiti: 2.7.0 - tsx: 4.23.0 - yaml: 2.9.0 + tsx: 4.23.15 + yaml: 2.9.1 + + vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1): + dependencies: + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.29 + rolldown: 1.2.13 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 24.19.1 + esbuild: 0.28.2 + fsevents: 2.3.3 + jiti: 2.7.0 + tsx: 4.23.15 + yaml: 2.9.1 + + vitest@5.0.3(@types/node@24.19.1)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): + dependencies: + '@types/chai': 5.2.3 + '@vitest/mocker': 5.0.3(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + chai: 6.2.2 + es-module-lexer: 2.3.2 + expect-type: 1.4.0 + magic-string: 1.4.3 + obug: 2.2.1 + picomatch: 4.0.7 + std-env: 4.3.0 + tinybench: 6.2.0 + tinyexec: 1.3.1 + tinyglobby: 0.2.17 + vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) + why-is-node-running: 3.2.1 + optionalDependencies: + '@types/node': 24.19.1 + transitivePeerDependencies: + - msw - vitest@5.0.3(@types/node@24.19.1)(vite@8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)): + vitest@5.0.3(@types/node@24.19.1)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): dependencies: '@types/chai': 5.2.3 - '@vitest/mocker': 5.0.3(vite@8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) + '@vitest/mocker': 5.0.3(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) chai: 6.2.2 es-module-lexer: 2.3.2 expect-type: 1.4.0 @@ -6994,7 +7366,7 @@ snapshots: tinybench: 6.2.0 tinyexec: 1.3.1 tinyglobby: 0.2.17 - vite: 8.1.3(@types/node@24.19.1)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0) + vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) why-is-node-running: 3.2.1 optionalDependencies: '@types/node': 24.19.1 @@ -7031,7 +7403,7 @@ snapshots: yallist@5.0.0: {} - yaml@2.9.0: {} + yaml@2.9.1: {} yocto-queue@0.1.0: {} From 49082678d65dbf74581f0fcf8c38d5eb87d9e378 Mon Sep 17 00:00:00 2001 From: h8d13 Date: Sun, 11 Oct 2026 12:40:53 +0200 Subject: [PATCH 05/10] fix(deps): adapt code to linkify-it 6, simplewebauthn 14, prettier 3.9, knip 6.40 * linkify-it 6: named LinkifyIt export, keep fuzzyLink for link previews * simplewebauthn 14 types transports as string[], schema column follows * prettier 3.9 joins unions that fit (voice.ts TStreamQuality) * knip 6.40 flags unused UserControl and AppRouter re-exports --- apps/client/src/components/left-sidebar/index.tsx | 1 - apps/client/src/lib/trpc.ts | 2 +- packages/shared/src/db/schema.ts | 14 +++----------- packages/shared/src/helpers/extract-urls.ts | 5 +++-- packages/shared/src/helpers/linkify-html.ts | 2 +- packages/shared/src/voice.ts | 3 +-- 6 files changed, 9 insertions(+), 18 deletions(-) diff --git a/apps/client/src/components/left-sidebar/index.tsx b/apps/client/src/components/left-sidebar/index.tsx index 567ba98f..6a706963 100644 --- a/apps/client/src/components/left-sidebar/index.tsx +++ b/apps/client/src/components/left-sidebar/index.tsx @@ -69,5 +69,4 @@ const LeftSidebar = memo(({ className, isOpen = true }: TLeftSidebarProps) => { ); }); -export { UserControl } from './user-control'; export { LeftSidebar }; diff --git a/apps/client/src/lib/trpc.ts b/apps/client/src/lib/trpc.ts index b2355675..3bac0ae6 100644 --- a/apps/client/src/lib/trpc.ts +++ b/apps/client/src/lib/trpc.ts @@ -126,4 +126,4 @@ const cleanup = () => { }, 100); }; -export { cleanup, connectToTRPC, getTRPCClient, type AppRouter }; +export { cleanup, connectToTRPC, getTRPCClient }; diff --git a/packages/shared/src/db/schema.ts b/packages/shared/src/db/schema.ts index 4f2613d5..2288a9fa 100644 --- a/packages/shared/src/db/schema.ts +++ b/packages/shared/src/db/schema.ts @@ -196,16 +196,8 @@ const users = sqliteTable( ); // WebAuthn credentials per user. `counter` must strictly increase per -// assertion; a regress signals a cloned authenticator. -type WebauthnTransport = - | 'ble' - | 'cable' - | 'hybrid' - | 'internal' - | 'nfc' - | 'smart-card' - | 'usb'; - +// assertion; a regress signals a cloned authenticator. `transports` stays +// plain strings, as @simplewebauthn types them (new transports appear over time). const userWebauthnCredentials = sqliteTable('user_webauthn_credentials', { id: integer('id').primaryKey({ autoIncrement: true }), userId: integer('user_id') @@ -214,7 +206,7 @@ const userWebauthnCredentials = sqliteTable('user_webauthn_credentials', { credentialId: text('credential_id').notNull().unique(), publicKey: blob('public_key', { mode: 'buffer' }).$type().notNull(), counter: integer('counter').notNull().default(0), - transports: text('transports', { mode: 'json' }).$type(), + transports: text('transports', { mode: 'json' }).$type(), deviceType: text('device_type'), backedUp: integer('backed_up', { mode: 'boolean' }).notNull().default(false), name: text('name'), diff --git a/packages/shared/src/helpers/extract-urls.ts b/packages/shared/src/helpers/extract-urls.ts index f586014c..e6110e2b 100644 --- a/packages/shared/src/helpers/extract-urls.ts +++ b/packages/shared/src/helpers/extract-urls.ts @@ -1,6 +1,7 @@ -import LinkifyIt from 'linkify-it'; +import { LinkifyIt } from 'linkify-it'; -const linkify = new LinkifyIt(); +// v6 turned fuzzyLink off; previews still pick up bare domains (example.com) +const linkify = new LinkifyIt({ fuzzyLink: true }); const extractUrls = (content: string): string[] => { try { diff --git a/packages/shared/src/helpers/linkify-html.ts b/packages/shared/src/helpers/linkify-html.ts index 873f820d..02b688b7 100644 --- a/packages/shared/src/helpers/linkify-html.ts +++ b/packages/shared/src/helpers/linkify-html.ts @@ -1,4 +1,4 @@ -import LinkifyIt from 'linkify-it'; +import { LinkifyIt } from 'linkify-it'; const linkify = new LinkifyIt(); diff --git a/packages/shared/src/voice.ts b/packages/shared/src/voice.ts index 4011c581..4ce3d1d4 100644 --- a/packages/shared/src/voice.ts +++ b/packages/shared/src/voice.ts @@ -61,7 +61,6 @@ export type TStreamQualityLayer = { }; export type TStreamQuality = - | { mode: 'auto' } - | { mode: 'layer'; spatialLayer: number }; + { mode: 'auto' } | { mode: 'layer'; spatialLayer: number }; export type TConsumerType = 'simple' | 'simulcast' | 'svc' | 'pipe'; From 56d0da7bc87e6e49b893bb6824a814503eff5340 Mon Sep 17 00:00:00 2001 From: h8d13 Date: Sun, 11 Oct 2026 12:40:53 +0200 Subject: [PATCH 06/10] chore(renovate): hold typescript below 7 typescript-eslint crashes on TS 7 (typescript-eslint#10940). --- renovate.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/renovate.json b/renovate.json index 92e90a86..a86d1d25 100644 --- a/renovate.json +++ b/renovate.json @@ -51,6 +51,11 @@ "dependencyDashboardApproval": true, "description": "ts/node/mediasoup/pnpm majors must be approved on the dashboard" }, + { + "matchPackageNames": ["typescript"], + "allowedVersions": "<7", + "description": "typescript-eslint crashes on TS 7, see typescript-eslint#10940" + }, { "matchPackageNames": ["mediasoup", "argon2", "better-sqlite3"], "rangeStrategy": "pin", From 451023bb21ff7afe1f2b49e93fa4a5091cf9f745 Mon Sep 17 00:00:00 2001 From: h8d13 Date: Sun, 11 Oct 2026 12:42:35 +0200 Subject: [PATCH 07/10] fix(format): join union casts that fit, per prettier 3.9 --- apps/client/src/components/left-sidebar/categories.tsx | 3 +-- .../src/components/tiptap-input/commands/command-suggestion.ts | 3 +-- apps/server/src/utils/mediasoup.ts | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/apps/client/src/components/left-sidebar/categories.tsx b/apps/client/src/components/left-sidebar/categories.tsx index d79e6ca6..5af94dbc 100644 --- a/apps/client/src/components/left-sidebar/categories.tsx +++ b/apps/client/src/components/left-sidebar/categories.tsx @@ -271,8 +271,7 @@ const Categories = memo(() => { active.data.current?.userId ?? aId.slice(3) ); const sourceChannelId = active.data.current?.channelId as - | number - | undefined; + number | undefined; const destChannelId = Number(oId.slice(3)); if (destChannelId === sourceChannelId) return; diff --git a/apps/client/src/components/tiptap-input/commands/command-suggestion.ts b/apps/client/src/components/tiptap-input/commands/command-suggestion.ts index 45a6a387..337cf7bf 100644 --- a/apps/client/src/components/tiptap-input/commands/command-suggestion.ts +++ b/apps/client/src/components/tiptap-input/commands/command-suggestion.ts @@ -99,8 +99,7 @@ export const CommandSuggestion = { onKeyDown(props: { event: KeyboardEvent }) { const commandListRef = component?.ref as - | CommandListRef - | undefined; + CommandListRef | undefined; if (commandListRef?.onKeyDown) { return commandListRef.onKeyDown(props.event); diff --git a/apps/server/src/utils/mediasoup.ts b/apps/server/src/utils/mediasoup.ts index 8214bcdd..75f9abc7 100644 --- a/apps/server/src/utils/mediasoup.ts +++ b/apps/server/src/utils/mediasoup.ts @@ -22,8 +22,7 @@ const resolveWorkerCount = (): number => { const resolveLogLevel = (): mediasoup.types.WorkerLogLevel => { const fromEnv = process.env.CAESAR_WEBRTC_LOG_LEVEL as - | mediasoup.types.WorkerLogLevel - | undefined; + mediasoup.types.WorkerLogLevel | undefined; if ( fromEnv === 'debug' || fromEnv === 'warn' || From d42058e0ef1e692312fa04f51e9f0054b5c21b6a Mon Sep 17 00:00:00 2001 From: h8d13 Date: Sun, 11 Oct 2026 12:44:28 +0200 Subject: [PATCH 08/10] fix(webauthn): cast registration options to browser JSON type Server v14 types PRF eval buffers structurally, @simplewebauthn/browser expects DOM BufferSource; the wire format is JSON either way. --- .../user-settings/security-keys/index.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/client/src/components/server-screens/user-settings/security-keys/index.tsx b/apps/client/src/components/server-screens/user-settings/security-keys/index.tsx index d79eec6b..f8950eeb 100644 --- a/apps/client/src/components/server-screens/user-settings/security-keys/index.tsx +++ b/apps/client/src/components/server-screens/user-settings/security-keys/index.tsx @@ -10,7 +10,10 @@ import { Group, Input } from '@caesar/ui'; -import { startRegistration } from '@simplewebauthn/browser'; +import { + startRegistration, + type PublicKeyCredentialCreationOptionsJSON +} from '@simplewebauthn/browser'; import { format } from 'date-fns'; import { KeyRound, Trash2 } from 'lucide-react'; import { memo, useCallback, useEffect, useState } from 'react'; @@ -52,7 +55,11 @@ const SecurityKeys = memo(() => { setLoading(true); try { const options = await trpc.webauthn.registerStart.mutate(); - const response = await startRegistration({ optionsJSON: options }); + // server v14 types PRF buffers structurally, the wire format is + // JSON either way + const response = await startRegistration({ + optionsJSON: options as PublicKeyCredentialCreationOptionsJSON + }); await trpc.webauthn.registerFinish.mutate({ response, name: newKeyName.trim() || undefined From 52d64a3bd9cbb2c93ec6a6be886e931c78315c26 Mon Sep 17 00:00:00 2001 From: h8d13 Date: Sun, 11 Oct 2026 12:47:47 +0200 Subject: [PATCH 09/10] chore(deps): drop @types/linkify-it, v6 ships its own types --- packages/shared/package.json | 1 - pnpm-lock.yaml | 8 -------- 2 files changed, 9 deletions(-) diff --git a/packages/shared/package.json b/packages/shared/package.json index 60ef730a..579357e9 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -24,7 +24,6 @@ }, "devDependencies": { "@eslint/js": "catalog:", - "@types/linkify-it": "^5.0.0", "@types/node": "catalog:", "eslint": "catalog:", "eslint-plugin-unused-imports": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5708d1ae..ea3be1c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -569,9 +569,6 @@ importers: '@eslint/js': specifier: 'catalog:' version: 10.0.1(eslint@10.12.0(jiti@2.7.0)(supports-color@11.0.0)) - '@types/linkify-it': - specifier: ^5.0.0 - version: 5.0.0 '@types/node': specifier: 'catalog:' version: 24.19.1 @@ -2514,9 +2511,6 @@ packages: '@types/jsonwebtoken@9.0.10': resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==} - '@types/linkify-it@5.0.0': - resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} - '@types/luxon@3.7.1': resolution: {integrity: sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==} @@ -5817,8 +5811,6 @@ snapshots: '@types/ms': 2.1.0 '@types/node': 24.19.1 - '@types/linkify-it@5.0.0': {} - '@types/luxon@3.7.1': {} '@types/mime-types@3.0.1': {} From cae40a58a3e6a9728b01294ba665c5b4c740377f Mon Sep 17 00:00:00 2001 From: h8d13 Date: Sun, 11 Oct 2026 12:48:55 +0200 Subject: [PATCH 10/10] fix(client): split contexts and tiptap views out for fast refresh react-refresh/only-export-components warned on files mixing component and non-component exports: * devices/media providers: contexts move to context.ts * mention nodes: node views move to *-node-view.tsx * mention suggestions: lists move to channel-list.tsx / user-list.tsx --- .../components/devices-provider/context.ts | 48 ++++++ .../devices-provider/hooks/use-devices.ts | 2 +- .../src/components/devices-provider/index.tsx | 60 +------ .../src/components/media-provider/context.ts | 128 +++++++++++++++ .../src/components/media-provider/index.tsx | 148 ++---------------- .../tiptap-input/commands/channel-list.tsx | 105 +++++++++++++ .../commands/channel-mention-node-view.tsx | 14 ++ .../commands/channel-mention-node.tsx | 18 +-- .../commands/channel-mention-suggestion.tsx | 104 +----------- .../commands/mention-node-view.tsx | 14 ++ .../tiptap-input/commands/mention-node.tsx | 18 +-- .../tiptap-input/commands/user-list.tsx | 99 ++++++++++++ .../commands/user-mention-suggestion.tsx | 95 +---------- .../client/src/features/server/voice/hooks.ts | 2 +- 14 files changed, 436 insertions(+), 419 deletions(-) create mode 100644 apps/client/src/components/devices-provider/context.ts create mode 100644 apps/client/src/components/media-provider/context.ts create mode 100644 apps/client/src/components/tiptap-input/commands/channel-list.tsx create mode 100644 apps/client/src/components/tiptap-input/commands/channel-mention-node-view.tsx create mode 100644 apps/client/src/components/tiptap-input/commands/mention-node-view.tsx create mode 100644 apps/client/src/components/tiptap-input/commands/user-list.tsx diff --git a/apps/client/src/components/devices-provider/context.ts b/apps/client/src/components/devices-provider/context.ts new file mode 100644 index 00000000..f07e5d81 --- /dev/null +++ b/apps/client/src/components/devices-provider/context.ts @@ -0,0 +1,48 @@ +import { MICROPHONE_GATE_DEFAULT_THRESHOLD_DB } from '@/helpers/audio-gate'; +import { + NoiseSuppressionMode, + Resolution, + VideoCodec, + type TDeviceSettings +} from '@/types'; +import { DEFAULT_BITRATE, DEFAULT_WEBCAM_BITRATE } from '@caesar/shared'; +import { createContext } from 'react'; + +const DEFAULT_DEVICE_SETTINGS: TDeviceSettings = { + microphoneId: undefined, + playbackId: undefined, + webcamId: undefined, + webcamResolution: Resolution['720p'], + webcamFramerate: 30, + webcamBitrate: DEFAULT_WEBCAM_BITRATE, + echoCancellation: true, + noiseSuppression: true, + autoGainControl: true, + noiseGateEnabled: true, + noiseGateThresholdDb: MICROPHONE_GATE_DEFAULT_THRESHOLD_DB, + noiseSuppressionMode: NoiseSuppressionMode.RNNOISE, + pushToTalkEnabled: false, + pushToTalkKeys: 'Space', + shareSystemAudio: true, + mirrorOwnVideo: false, + simulcastEnabled: true, + screenResolution: Resolution['720p'], + screenFramerate: 30, + screenCodec: VideoCodec.AUTO, + screenBitrate: DEFAULT_BITRATE +}; + +type TDevicesProvider = { + loading: boolean; + devices: TDeviceSettings; + saveDevices: (newDevices: TDeviceSettings) => void; +}; + +const DevicesProviderContext = createContext({ + loading: false, + devices: DEFAULT_DEVICE_SETTINGS, + saveDevices: () => {} +}); + +export { DEFAULT_DEVICE_SETTINGS, DevicesProviderContext }; +export type { TDevicesProvider }; diff --git a/apps/client/src/components/devices-provider/hooks/use-devices.ts b/apps/client/src/components/devices-provider/hooks/use-devices.ts index 78293b02..8ead556b 100644 --- a/apps/client/src/components/devices-provider/hooks/use-devices.ts +++ b/apps/client/src/components/devices-provider/hooks/use-devices.ts @@ -1,5 +1,5 @@ import { useContext } from 'react'; -import { DevicesProviderContext } from '..'; +import { DevicesProviderContext } from '../context'; const useDevices = () => { const context = useContext(DevicesProviderContext); diff --git a/apps/client/src/components/devices-provider/index.tsx b/apps/client/src/components/devices-provider/index.tsx index 3961c3b9..32eec37f 100644 --- a/apps/client/src/components/devices-provider/index.tsx +++ b/apps/client/src/components/devices-provider/index.tsx @@ -1,63 +1,17 @@ -import { MICROPHONE_GATE_DEFAULT_THRESHOLD_DB } from '@/helpers/audio-gate'; import { getLocalStorageItemAsJSON, LocalStorageKey, setLocalStorageItemAsJSON } from '@/helpers/storage'; +import { NoiseSuppressionMode, type TDeviceSettings } from '@/types'; +import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { - NoiseSuppressionMode, - Resolution, - VideoCodec, - type TDeviceSettings -} from '@/types'; -import { DEFAULT_BITRATE, DEFAULT_WEBCAM_BITRATE } from '@caesar/shared'; -import { - createContext, - memo, - useCallback, - useEffect, - useMemo, - useRef, - useState -} from 'react'; + DEFAULT_DEVICE_SETTINGS, + DevicesProviderContext, + type TDevicesProvider +} from './context'; import { useAvailableDevices } from './hooks/use-available-devices'; -const DEFAULT_DEVICE_SETTINGS: TDeviceSettings = { - microphoneId: undefined, - playbackId: undefined, - webcamId: undefined, - webcamResolution: Resolution['720p'], - webcamFramerate: 30, - webcamBitrate: DEFAULT_WEBCAM_BITRATE, - echoCancellation: true, - noiseSuppression: true, - autoGainControl: true, - noiseGateEnabled: true, - noiseGateThresholdDb: MICROPHONE_GATE_DEFAULT_THRESHOLD_DB, - noiseSuppressionMode: NoiseSuppressionMode.RNNOISE, - pushToTalkEnabled: false, - pushToTalkKeys: 'Space', - shareSystemAudio: true, - mirrorOwnVideo: false, - simulcastEnabled: true, - screenResolution: Resolution['720p'], - screenFramerate: 30, - screenCodec: VideoCodec.AUTO, - screenBitrate: DEFAULT_BITRATE -}; - -export type TDevicesProvider = { - loading: boolean; - devices: TDeviceSettings; - saveDevices: (newDevices: TDeviceSettings) => void; -}; - -const DevicesProviderContext = createContext({ - loading: false, - devices: DEFAULT_DEVICE_SETTINGS, - saveDevices: () => {} -}); - type TDevicesProviderProps = { children: React.ReactNode; }; @@ -158,4 +112,4 @@ const DevicesProvider = memo(({ children }: TDevicesProviderProps) => { ); }); -export { DevicesProvider, DevicesProviderContext }; +export { DevicesProvider }; diff --git a/apps/client/src/components/media-provider/context.ts b/apps/client/src/components/media-provider/context.ts new file mode 100644 index 00000000..4516252f --- /dev/null +++ b/apps/client/src/components/media-provider/context.ts @@ -0,0 +1,128 @@ +import type { TRemoteUserStreamKinds } from '@/types'; +import type { + StreamKind, + TStreamQuality, + TStreamQualityLayer, + TVoiceUserState +} from '@caesar/shared'; +import type { RtpCapabilities } from 'mediasoup-client/types'; +import { createContext } from 'react'; +import type { useLocalStreams } from './hooks/use-local-streams'; +import type { useRemoteStreams } from './hooks/use-remote-streams'; +import type { TransportStatsData } from './hooks/use-transport-stats'; +import type { useVoiceControls } from './hooks/use-voice-controls'; + +type AudioVideoRefs = { + videoRef: React.RefObject; + audioRef: React.RefObject; + screenShareRef: React.RefObject; + screenShareAudioRef: React.RefObject; + externalAudioRef: React.RefObject; + externalVideoRef: React.RefObject; +}; + +enum ConnectionStatus { + DISCONNECTED = 'disconnected', + CONNECTING = 'connecting', + CONNECTED = 'connected', + FAILED = 'failed' +} + +export type TMediaProvider = { + loading: boolean; + connectionStatus: ConnectionStatus; + audioVideoRefsMap: Map; + ownVoiceState: TVoiceUserState; + getOrCreateRefs: (remoteId: number) => AudioVideoRefs; + getConsumerCodec: ( + remoteId: number, + kind: StreamKind + ) => string | undefined; + isSimulcastConsumer: (remoteId: number, kind: StreamKind) => boolean; + getStreamQualityLayers: ( + remoteId: number, + kind: StreamKind + ) => TStreamQualityLayer[]; + getStreamQuality: (remoteId: number, kind: StreamKind) => TStreamQuality; + setStreamQuality: ( + remoteId: number, + kind: StreamKind, + quality: TStreamQuality + ) => void; + pauseConsumer: (remoteId: number, kind: TRemoteUserStreamKinds) => void; + resumeConsumer: (remoteId: number, kind: TRemoteUserStreamKinds) => void; + init: ( + routerRtpCapabilities: RtpCapabilities, + channelId: number + ) => Promise; +} & Pick< + ReturnType, + | 'localAudioStream' + | 'localVideoStream' + | 'localScreenShareStream' + | 'localScreenShareAudioStream' +> & + Pick< + ReturnType, + 'remoteUserStreams' | 'externalStreams' + > & + ReturnType; + +const DEFAULT_TRANSPORT_STATS: TransportStatsData = { + producer: null, + consumer: null, + screenShare: null, + totalBytesReceived: 0, + totalBytesSent: 0, + isMonitoring: false, + currentBitrateReceived: 0, + currentBitrateSent: 0, + averageBitrateReceived: 0, + averageBitrateSent: 0 +}; + +const MediaStatsContext = createContext( + DEFAULT_TRANSPORT_STATS +); + +const MediaProviderContext = createContext({ + loading: false, + connectionStatus: ConnectionStatus.DISCONNECTED, + audioVideoRefsMap: new Map(), + getOrCreateRefs: () => ({ + videoRef: { current: null }, + audioRef: { current: null }, + screenShareRef: { current: null }, + screenShareAudioRef: { current: null }, + externalAudioRef: { current: null }, + externalVideoRef: { current: null } + }), + getConsumerCodec: () => undefined, + isSimulcastConsumer: () => false, + getStreamQualityLayers: () => [], + getStreamQuality: () => ({ mode: 'auto' }), + setStreamQuality: () => {}, + pauseConsumer: () => {}, + resumeConsumer: () => {}, + init: () => Promise.resolve(), + toggleMic: () => Promise.resolve(), + toggleSound: () => Promise.resolve(), + toggleWebcam: () => Promise.resolve(), + toggleScreenShare: () => Promise.resolve(), + ownVoiceState: { + micMuted: false, + soundMuted: false, + webcamEnabled: false, + sharingScreen: false + }, + localAudioStream: undefined, + localVideoStream: undefined, + localScreenShareStream: undefined, + localScreenShareAudioStream: undefined, + + remoteUserStreams: {}, + externalStreams: {} +}); + +export { ConnectionStatus, MediaProviderContext, MediaStatsContext }; +export type { AudioVideoRefs }; diff --git a/apps/client/src/components/media-provider/index.tsx b/apps/client/src/components/media-provider/index.tsx index 53dee330..e5d950d0 100644 --- a/apps/client/src/components/media-provider/index.tsx +++ b/apps/client/src/components/media-provider/index.tsx @@ -28,41 +28,31 @@ import { logVoice } from '@/helpers/browser-logger'; import { parseKeyCombo } from '@/helpers/format-key-code'; import { getResWidthHeight } from '@/helpers/get-res-with-height'; import { getTRPCClient } from '@/lib/trpc'; -import { - NoiseSuppressionMode, - VideoCodec, - type TRemoteUserStreamKinds -} from '@/types'; +import { NoiseSuppressionMode, VideoCodec } from '@/types'; import { DEFAULT_BITRATE, DEFAULT_WEBCAM_BITRATE, StreamKind, - type TStreamQuality, - type TStreamQualityLayer, - type TVoiceUserState + type TStreamQuality } from '@caesar/shared'; import type { RtpCapabilities, RtpCodecCapability } from 'mediasoup-client/types'; -import { - createContext, - memo, - useCallback, - useEffect, - useMemo, - useRef, - useState -} from 'react'; +import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { useDevices } from '../devices-provider/hooks/use-devices'; import { SpeakingDetector } from '../speaking-detector'; +import { + ConnectionStatus, + MediaProviderContext, + MediaStatsContext, + type AudioVideoRefs, + type TMediaProvider +} from './context'; import { FloatingPinnedCard } from './floating-pinned-card'; import { useLocalStreams } from './hooks/use-local-streams'; import { useRemoteStreams } from './hooks/use-remote-streams'; -import { - useTransportStats, - type TransportStatsData -} from './hooks/use-transport-stats'; +import { useTransportStats } from './hooks/use-transport-stats'; import { useTransports } from './hooks/use-transports'; import { useVoiceControls } from './hooks/use-voice-controls'; import { useVoiceEvents } from './hooks/use-voice-events'; @@ -158,120 +148,6 @@ const buildVideoEncodings = (opts: { ]; }; -type AudioVideoRefs = { - videoRef: React.RefObject; - audioRef: React.RefObject; - screenShareRef: React.RefObject; - screenShareAudioRef: React.RefObject; - externalAudioRef: React.RefObject; - externalVideoRef: React.RefObject; -}; - -export type { AudioVideoRefs }; - -enum ConnectionStatus { - DISCONNECTED = 'disconnected', - CONNECTING = 'connecting', - CONNECTED = 'connected', - FAILED = 'failed' -} - -export type TMediaProvider = { - loading: boolean; - connectionStatus: ConnectionStatus; - audioVideoRefsMap: Map; - ownVoiceState: TVoiceUserState; - getOrCreateRefs: (remoteId: number) => AudioVideoRefs; - getConsumerCodec: ( - remoteId: number, - kind: StreamKind - ) => string | undefined; - isSimulcastConsumer: (remoteId: number, kind: StreamKind) => boolean; - getStreamQualityLayers: ( - remoteId: number, - kind: StreamKind - ) => TStreamQualityLayer[]; - getStreamQuality: (remoteId: number, kind: StreamKind) => TStreamQuality; - setStreamQuality: ( - remoteId: number, - kind: StreamKind, - quality: TStreamQuality - ) => void; - pauseConsumer: (remoteId: number, kind: TRemoteUserStreamKinds) => void; - resumeConsumer: (remoteId: number, kind: TRemoteUserStreamKinds) => void; - init: ( - routerRtpCapabilities: RtpCapabilities, - channelId: number - ) => Promise; -} & Pick< - ReturnType, - | 'localAudioStream' - | 'localVideoStream' - | 'localScreenShareStream' - | 'localScreenShareAudioStream' -> & - Pick< - ReturnType, - 'remoteUserStreams' | 'externalStreams' - > & - ReturnType; - -const DEFAULT_TRANSPORT_STATS: TransportStatsData = { - producer: null, - consumer: null, - screenShare: null, - totalBytesReceived: 0, - totalBytesSent: 0, - isMonitoring: false, - currentBitrateReceived: 0, - currentBitrateSent: 0, - averageBitrateReceived: 0, - averageBitrateSent: 0 -}; - -const MediaStatsContext = createContext( - DEFAULT_TRANSPORT_STATS -); - -const MediaProviderContext = createContext({ - loading: false, - connectionStatus: ConnectionStatus.DISCONNECTED, - audioVideoRefsMap: new Map(), - getOrCreateRefs: () => ({ - videoRef: { current: null }, - audioRef: { current: null }, - screenShareRef: { current: null }, - screenShareAudioRef: { current: null }, - externalAudioRef: { current: null }, - externalVideoRef: { current: null } - }), - getConsumerCodec: () => undefined, - isSimulcastConsumer: () => false, - getStreamQualityLayers: () => [], - getStreamQuality: () => ({ mode: 'auto' }), - setStreamQuality: () => {}, - pauseConsumer: () => {}, - resumeConsumer: () => {}, - init: () => Promise.resolve(), - toggleMic: () => Promise.resolve(), - toggleSound: () => Promise.resolve(), - toggleWebcam: () => Promise.resolve(), - toggleScreenShare: () => Promise.resolve(), - ownVoiceState: { - micMuted: false, - soundMuted: false, - webcamEnabled: false, - sharingScreen: false - }, - localAudioStream: undefined, - localVideoStream: undefined, - localScreenShareStream: undefined, - localScreenShareAudioStream: undefined, - - remoteUserStreams: {}, - externalStreams: {} -}); - type TMediaProviderProps = { children: React.ReactNode; }; @@ -1499,4 +1375,4 @@ const MediaProvider = memo(({ children }: TMediaProviderProps) => { ); }); -export { MediaProvider, MediaProviderContext, MediaStatsContext }; +export { MediaProvider }; diff --git a/apps/client/src/components/tiptap-input/commands/channel-list.tsx b/apps/client/src/components/tiptap-input/commands/channel-list.tsx new file mode 100644 index 00000000..ecae25ab --- /dev/null +++ b/apps/client/src/components/tiptap-input/commands/channel-list.tsx @@ -0,0 +1,105 @@ +import { ChannelType, type TChannel } from '@caesar/shared'; +import { Hash, Volume2 } from 'lucide-react'; +import { + forwardRef, + useCallback, + useEffect, + useImperativeHandle, + useState +} from 'react'; + +type TChannelListProps = { + items: TChannel[]; + onSelect: (item: TChannel) => void; +}; + +type TChannelListRef = { + onKeyDown: (event: KeyboardEvent) => boolean; +}; + +const ChannelList = forwardRef( + ({ items, onSelect }, ref) => { + const [selectedIndex, setSelectedIndex] = useState(0); + useEffect(() => setSelectedIndex(0), [items]); + + const selectItem = useCallback( + (index: number) => items[index] && onSelect(items[index]), + [items, onSelect] + ); + + const onKeyDown = useCallback( + (e: KeyboardEvent): boolean => { + if (items.length === 0) return false; + if (e.key === 'ArrowUp') { + e.preventDefault(); + setSelectedIndex((i) => + i <= 0 ? items.length - 1 : i - 1 + ); + return true; + } + if (e.key === 'ArrowDown') { + e.preventDefault(); + setSelectedIndex((i) => + i >= items.length - 1 ? 0 : i + 1 + ); + return true; + } + if (e.key === 'Enter' || e.key === 'Tab') { + e.preventDefault(); + selectItem(selectedIndex); + return true; + } + if (e.key === 'Escape') return false; + return false; + }, + [items, selectItem, selectedIndex] + ); + + useImperativeHandle(ref, () => ({ onKeyDown })); + + if (items.length === 0) return null; + + return ( +
+ {items.map((item, index) => { + const Icon = + item.type === ChannelType.VOICE ? Volume2 : Hash; + + return ( + + ); + })} +
+ ); + } +); + +ChannelList.displayName = 'ChannelList'; + +export { ChannelList }; +export type { TChannelListRef }; diff --git a/apps/client/src/components/tiptap-input/commands/channel-mention-node-view.tsx b/apps/client/src/components/tiptap-input/commands/channel-mention-node-view.tsx new file mode 100644 index 00000000..d0e8e521 --- /dev/null +++ b/apps/client/src/components/tiptap-input/commands/channel-mention-node-view.tsx @@ -0,0 +1,14 @@ +import { ChannelChip } from '@/components/channel-chip'; +import { NodeViewWrapper, type NodeViewProps } from '@tiptap/react'; +import { memo } from 'react'; + +const ChannelMentionNodeView = memo(({ node }: NodeViewProps) => ( + + + +)); + +export { ChannelMentionNodeView }; diff --git a/apps/client/src/components/tiptap-input/commands/channel-mention-node.tsx b/apps/client/src/components/tiptap-input/commands/channel-mention-node.tsx index a069bfea..412c561a 100644 --- a/apps/client/src/components/tiptap-input/commands/channel-mention-node.tsx +++ b/apps/client/src/components/tiptap-input/commands/channel-mention-node.tsx @@ -1,20 +1,6 @@ -import { ChannelChip } from '@/components/channel-chip'; import { Node } from '@tiptap/core'; -import { - NodeViewWrapper, - ReactNodeViewRenderer, - type NodeViewProps -} from '@tiptap/react'; -import { memo } from 'react'; - -const ChannelMentionNodeView = memo(({ node }: NodeViewProps) => ( - - - -)); +import { ReactNodeViewRenderer } from '@tiptap/react'; +import { ChannelMentionNodeView } from './channel-mention-node-view'; const ChannelMentionNode = Node.create({ name: 'channelMention', diff --git a/apps/client/src/components/tiptap-input/commands/channel-mention-suggestion.tsx b/apps/client/src/components/tiptap-input/commands/channel-mention-suggestion.tsx index 589f3ef9..5f44070b 100644 --- a/apps/client/src/components/tiptap-input/commands/channel-mention-suggestion.tsx +++ b/apps/client/src/components/tiptap-input/commands/channel-mention-suggestion.tsx @@ -1,111 +1,11 @@ -import { ChannelType, type TChannel } from '@caesar/shared'; +import type { TChannel } from '@caesar/shared'; import { computePosition, flip, shift } from '@floating-ui/dom'; import type { Editor } from '@tiptap/core'; import { ReactRenderer } from '@tiptap/react'; -import { Hash, Volume2 } from 'lucide-react'; -import { - forwardRef, - useCallback, - useEffect, - useImperativeHandle, - useState -} from 'react'; +import { ChannelList, type TChannelListRef } from './channel-list'; const CHANNEL_MENTION_STORAGE_KEY = 'mentionChannels'; -type TChannelListProps = { - items: TChannel[]; - onSelect: (item: TChannel) => void; -}; - -type TChannelListRef = { - onKeyDown: (event: KeyboardEvent) => boolean; -}; - -const ChannelList = forwardRef( - ({ items, onSelect }, ref) => { - const [selectedIndex, setSelectedIndex] = useState(0); - useEffect(() => setSelectedIndex(0), [items]); - - const selectItem = useCallback( - (index: number) => items[index] && onSelect(items[index]), - [items, onSelect] - ); - - const onKeyDown = useCallback( - (e: KeyboardEvent): boolean => { - if (items.length === 0) return false; - if (e.key === 'ArrowUp') { - e.preventDefault(); - setSelectedIndex((i) => - i <= 0 ? items.length - 1 : i - 1 - ); - return true; - } - if (e.key === 'ArrowDown') { - e.preventDefault(); - setSelectedIndex((i) => - i >= items.length - 1 ? 0 : i + 1 - ); - return true; - } - if (e.key === 'Enter' || e.key === 'Tab') { - e.preventDefault(); - selectItem(selectedIndex); - return true; - } - if (e.key === 'Escape') return false; - return false; - }, - [items, selectItem, selectedIndex] - ); - - useImperativeHandle(ref, () => ({ onKeyDown })); - - if (items.length === 0) return null; - - return ( -
- {items.map((item, index) => { - const Icon = - item.type === ChannelType.VOICE ? Volume2 : Hash; - - return ( - - ); - })} -
- ); - } -); - -ChannelList.displayName = 'ChannelList'; - type TSuggestionProps = { editor: Editor; query: string; diff --git a/apps/client/src/components/tiptap-input/commands/mention-node-view.tsx b/apps/client/src/components/tiptap-input/commands/mention-node-view.tsx new file mode 100644 index 00000000..c583e351 --- /dev/null +++ b/apps/client/src/components/tiptap-input/commands/mention-node-view.tsx @@ -0,0 +1,14 @@ +import { MentionChip } from '@/components/mention-chip'; +import { NodeViewWrapper, type NodeViewProps } from '@tiptap/react'; +import { memo } from 'react'; + +const MentionNodeView = memo(({ node }: NodeViewProps) => ( + + + +)); + +export { MentionNodeView }; diff --git a/apps/client/src/components/tiptap-input/commands/mention-node.tsx b/apps/client/src/components/tiptap-input/commands/mention-node.tsx index 76a2aff2..b45d9aeb 100644 --- a/apps/client/src/components/tiptap-input/commands/mention-node.tsx +++ b/apps/client/src/components/tiptap-input/commands/mention-node.tsx @@ -1,20 +1,6 @@ -import { MentionChip } from '@/components/mention-chip'; import { Node } from '@tiptap/core'; -import { - NodeViewWrapper, - ReactNodeViewRenderer, - type NodeViewProps -} from '@tiptap/react'; -import { memo } from 'react'; - -const MentionNodeView = memo(({ node }: NodeViewProps) => ( - - - -)); +import { ReactNodeViewRenderer } from '@tiptap/react'; +import { MentionNodeView } from './mention-node-view'; const MentionNode = Node.create({ name: 'mention', diff --git a/apps/client/src/components/tiptap-input/commands/user-list.tsx b/apps/client/src/components/tiptap-input/commands/user-list.tsx new file mode 100644 index 00000000..413ab7c2 --- /dev/null +++ b/apps/client/src/components/tiptap-input/commands/user-list.tsx @@ -0,0 +1,99 @@ +import { UserAvatar } from '@/components/user-avatar'; +import { getRenderedUsername } from '@/helpers/get-rendered-username'; +import type { TJoinedPublicUser } from '@caesar/shared'; +import { + forwardRef, + useCallback, + useEffect, + useImperativeHandle, + useState +} from 'react'; + +type TUserListProps = { + items: TJoinedPublicUser[]; + onSelect: (item: TJoinedPublicUser) => void; +}; + +type TUserListRef = { + onKeyDown: (event: KeyboardEvent) => boolean; +}; + +const UserList = forwardRef( + ({ items, onSelect }, ref) => { + const [selectedIndex, setSelectedIndex] = useState(0); + useEffect(() => setSelectedIndex(0), [items]); + + const selectItem = useCallback( + (index: number) => items[index] && onSelect(items[index]), + [items, onSelect] + ); + + const onKeyDown = useCallback( + (e: KeyboardEvent): boolean => { + if (items.length === 0) return false; + if (e.key === 'ArrowUp') { + e.preventDefault(); + setSelectedIndex((i) => + i <= 0 ? items.length - 1 : i - 1 + ); + return true; + } + if (e.key === 'ArrowDown') { + e.preventDefault(); + setSelectedIndex((i) => + i >= items.length - 1 ? 0 : i + 1 + ); + return true; + } + if (e.key === 'Enter' || e.key === 'Tab') { + e.preventDefault(); + selectItem(selectedIndex); + return true; + } + if (e.key === 'Escape') return false; + return false; + }, + [items, selectItem, selectedIndex] + ); + + useImperativeHandle(ref, () => ({ onKeyDown })); + + if (items.length === 0) return null; + + return ( +
+ {items.map((item, index) => ( + + ))} +
+ ); + } +); + +UserList.displayName = 'UserList'; + +export { UserList }; +export type { TUserListRef }; diff --git a/apps/client/src/components/tiptap-input/commands/user-mention-suggestion.tsx b/apps/client/src/components/tiptap-input/commands/user-mention-suggestion.tsx index 90eeb749..d2457dac 100644 --- a/apps/client/src/components/tiptap-input/commands/user-mention-suggestion.tsx +++ b/apps/client/src/components/tiptap-input/commands/user-mention-suggestion.tsx @@ -1,105 +1,12 @@ -import { UserAvatar } from '@/components/user-avatar'; import { getRenderedUsername } from '@/helpers/get-rendered-username'; import type { TJoinedPublicUser } from '@caesar/shared'; import { computePosition, flip, shift } from '@floating-ui/dom'; import type { Editor } from '@tiptap/core'; import { ReactRenderer } from '@tiptap/react'; -import { - forwardRef, - useCallback, - useEffect, - useImperativeHandle, - useState -} from 'react'; +import { UserList, type TUserListRef } from './user-list'; const USER_MENTION_STORAGE_KEY = 'mentionUsers'; -type TUserListProps = { - items: TJoinedPublicUser[]; - onSelect: (item: TJoinedPublicUser) => void; -}; - -type TUserListRef = { - onKeyDown: (event: KeyboardEvent) => boolean; -}; - -const UserList = forwardRef( - ({ items, onSelect }, ref) => { - const [selectedIndex, setSelectedIndex] = useState(0); - useEffect(() => setSelectedIndex(0), [items]); - - const selectItem = useCallback( - (index: number) => items[index] && onSelect(items[index]), - [items, onSelect] - ); - - const onKeyDown = useCallback( - (e: KeyboardEvent): boolean => { - if (items.length === 0) return false; - if (e.key === 'ArrowUp') { - e.preventDefault(); - setSelectedIndex((i) => - i <= 0 ? items.length - 1 : i - 1 - ); - return true; - } - if (e.key === 'ArrowDown') { - e.preventDefault(); - setSelectedIndex((i) => - i >= items.length - 1 ? 0 : i + 1 - ); - return true; - } - if (e.key === 'Enter' || e.key === 'Tab') { - e.preventDefault(); - selectItem(selectedIndex); - return true; - } - if (e.key === 'Escape') return false; - return false; - }, - [items, selectItem, selectedIndex] - ); - - useImperativeHandle(ref, () => ({ onKeyDown })); - - if (items.length === 0) return null; - - return ( -
- {items.map((item, index) => ( - - ))} -
- ); - } -); - -UserList.displayName = 'UserList'; - type TSuggestionProps = { editor: Editor; query: string; diff --git a/apps/client/src/features/server/voice/hooks.ts b/apps/client/src/features/server/voice/hooks.ts index 25066fd0..7c9a86c5 100644 --- a/apps/client/src/features/server/voice/hooks.ts +++ b/apps/client/src/features/server/voice/hooks.ts @@ -1,7 +1,7 @@ import { MediaProviderContext, MediaStatsContext -} from '@/components/media-provider'; +} from '@/components/media-provider/context'; import type { IRootState } from '@/features/store'; import { useContext } from 'react'; import { useSelector } from 'react-redux';