diff --git a/backend/package.json b/backend/package.json index ecb0cbc0..5119e9d5 100755 --- a/backend/package.json +++ b/backend/package.json @@ -46,15 +46,15 @@ "type-graphql": "npm:@capaj/type-graphql@2.0.0-alpha.1", "typescript": "^6.0.3", "uuid": "^14.0.0", - "wrangler": "^4.86.0", - "zod": "^4.4.1" + "wrangler": "^4.87.0", + "zod": "^4.4.2" }, "devDependencies": { "@anatine/esbuild-decorators": "^0.2.19", "@cjsa/cpy": "^9.0.1", "@faker-js/faker": "^10.4.0", "@mermaid-js/mermaid-cli": "^11.14.0", - "@swc/core": "^1.15.32", + "@swc/core": "^1.15.33", "@types/bun": "^1.3.13", "@types/graphql-list-fields": "^2.0.7", "@types/lodash.set": "^4.3.9", diff --git a/mobile-app/lingui.config.ts b/mobile-app/lingui.config.ts index 4694298a..486b672e 100755 --- a/mobile-app/lingui.config.ts +++ b/mobile-app/lingui.config.ts @@ -1,3 +1,5 @@ +import { formatter } from '@lingui/format-po' + export default { locales: ['en', 'cs'], sourceLocale: 'en', @@ -8,8 +10,7 @@ export default { exclude: ['**/node_modules/**'] } ], - format: 'po', - formatOptions: { origins: true, lineNumbers: false }, + format: formatter({ origins: true, lineNumbers: false }), pseudoLocale: 'pseudo', fallbackLocales: { pseudo: 'en' diff --git a/package.json b/package.json index 18b258ce..87cfaa51 100755 --- a/package.json +++ b/package.json @@ -37,10 +37,10 @@ "lint-staged": "^16.4.0", "npm-run-all": "^4.1.5", "prettier": "^3.8.3", - "turbo": "^2.9.6", + "turbo": "^2.9.8", "typescript": "^6.0.3", "vite-tsconfig-paths": "^6.1.1", - "zod": "^4.4.1", + "zod": "^4.4.2", "zx": "^8.8.5" }, "scripts": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fdcfa666..b85a7102 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,8 +84,8 @@ importers: specifier: ^3.8.3 version: 3.8.3 turbo: - specifier: ^2.9.6 - version: 2.9.6 + specifier: ^2.9.8 + version: 2.9.8 typescript: specifier: ^6.0.3 version: 6.0.3 @@ -93,8 +93,8 @@ importers: specifier: ^6.1.1 version: 6.1.1(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.37.0)(tsx@4.21.0)(yaml@2.8.3)) zod: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.4.2 + version: 4.4.2 zx: specifier: ^8.8.5 version: 8.8.5 @@ -145,7 +145,7 @@ importers: version: 17.4.2 drizzle-orm: specifier: 1.0.0-beta.15-859cf75 - version: 1.0.0-beta.15-859cf75(@electric-sql/pglite@0.4.5)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.3))(typescript@6.0.3))(@sinclair/typebox@0.34.49)(@types/mssql@9.1.9(@azure/core-client@1.10.1))(@types/pg@8.15.6)(@upstash/redis@1.37.0)(bun-types@1.3.13)(mssql@11.0.1(@azure/core-client@1.10.1))(mysql2@3.15.3)(pg@8.18.0)(postgres@3.4.9)(prisma@7.4.1(@types/react@19.2.14)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.3))(valibot@1.2.0(typescript@6.0.3))(zod@4.4.1) + version: 1.0.0-beta.15-859cf75(@electric-sql/pglite@0.4.5)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.3))(typescript@6.0.3))(@sinclair/typebox@0.34.49)(@types/mssql@9.1.9(@azure/core-client@1.10.1))(@types/pg@8.15.6)(@upstash/redis@1.37.0)(bun-types@1.3.13)(mssql@11.0.1(@azure/core-client@1.10.1))(mysql2@3.15.3)(pg@8.18.0)(postgres@3.4.9)(prisma@7.4.1(@types/react@19.2.14)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.3))(valibot@1.2.0(typescript@6.0.3))(zod@4.4.2) elysia: specifier: ^1.4.28 version: 1.4.28(@sinclair/typebox@0.34.49)(@types/bun@1.3.13)(exact-mirror@0.2.7(@sinclair/typebox@0.34.49))(file-type@21.3.0)(openapi-types@12.1.3)(typescript@6.0.3) @@ -204,11 +204,11 @@ importers: specifier: ^14.0.0 version: 14.0.0 wrangler: - specifier: ^4.86.0 - version: 4.86.0 + specifier: ^4.87.0 + version: 4.87.0 zod: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.4.2 + version: 4.4.2 devDependencies: '@anatine/esbuild-decorators': specifier: ^0.2.19 @@ -221,10 +221,10 @@ importers: version: 10.4.0 '@mermaid-js/mermaid-cli': specifier: ^11.14.0 - version: 11.14.0(puppeteer@19.11.1(typescript@6.0.3))(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3))(typescript@6.0.3) + version: 11.14.0(puppeteer@19.11.1(typescript@6.0.3))(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3))(typescript@6.0.3) '@swc/core': - specifier: ^1.15.32 - version: 1.15.32 + specifier: ^1.15.33 + version: 1.15.33 '@types/bun': specifier: ^1.3.13 version: 1.3.13 @@ -263,10 +263,10 @@ importers: version: 6.1.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3) + version: 10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3) unplugin-swc: specifier: ^1.5.9 - version: 1.5.9(@swc/core@1.15.32)(rollup@4.46.4) + version: 1.5.9(@swc/core@1.15.33)(rollup@4.46.4) vite: specifier: 8.0.10 version: 8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.37.0)(tsx@4.21.0)(yaml@2.8.3) @@ -347,7 +347,7 @@ importers: version: 1.1.8(@babel/core@7.29.0)(@babel/plugin-transform-typescript@7.28.5(@babel/core@7.29.0))(@babel/runtime@7.28.6)(@react-native/babel-preset@0.84.0(@babel/core@7.29.0))(metro-react-native-babel-preset@0.77.0(@babel/core@7.29.0)) '@rnx-kit/cli': specifier: ^0.18.17 - version: 0.18.17(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)))(metro-react-native-babel-transformer@0.76.8(@babel/core@7.29.0))(metro@0.83.4)(react-native@0.84.0(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4)) + version: 0.18.17(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)))(metro-react-native-babel-transformer@0.76.8(@babel/core@7.29.0))(metro@0.83.4)(react-native@0.84.0(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4)) '@rnx-kit/metro-config': specifier: ^1.3.17 version: 1.3.17(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(react-native@0.84.0(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) @@ -368,7 +368,7 @@ importers: version: 14.3.1(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@ts-react/form': specifier: ^1.8.3 - version: 1.8.3(@hookform/resolvers@2.9.11(react-hook-form@7.71.2(react@19.2.4)))(react-hook-form@7.71.2(react@19.2.4))(react@19.2.4)(zod@4.4.1) + version: 1.8.3(@hookform/resolvers@2.9.11(react-hook-form@7.71.2(react@19.2.4)))(react-hook-form@7.71.2(react@19.2.4))(react@19.2.4)(zod@4.4.2) '@tsconfig/react-native': specifier: ^3.0.9 version: 3.0.9 @@ -386,7 +386,7 @@ importers: version: 4.0.0(@types/react@19.2.14)(graphql-ws@6.0.8(@fastify/websocket@11.0.0)(graphql@16.12.0)(ws@8.20.0))(graphql@16.12.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) apollo-link-token-refresh: specifier: ^0.7.0 - version: 0.7.0(@apollo/client@4.1.5(graphql-ws@6.0.8(@fastify/websocket@11.0.0)(graphql@16.12.0)(ws@8.20.0))(graphql@16.12.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rxjs@7.8.2))(@swc/core@1.15.32)(@types/node@25.6.0)(graphql@16.12.0)(typescript@5.9.3) + version: 0.7.0(@apollo/client@4.1.5(graphql-ws@6.0.8(@fastify/websocket@11.0.0)(graphql@16.12.0)(ws@8.20.0))(graphql@16.12.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rxjs@7.8.2))(@swc/core@1.15.33)(@types/node@25.6.0)(graphql@16.12.0)(typescript@5.9.3) apollo3-cache-persist: specifier: ^0.15.0 version: 0.15.0(@apollo/client@4.1.5(graphql-ws@6.0.8(@fastify/websocket@11.0.0)(graphql@16.12.0)(ws@8.20.0))(graphql@16.12.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rxjs@7.8.2)) @@ -555,13 +555,13 @@ importers: version: 5.9.2(@lingui/babel-plugin-lingui-macro@5.9.2(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0)(react@19.2.4) '@react-native-community/eslint-config': specifier: ^3.2.0 - version: 3.2.0(eslint@8.57.1)(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)))(prettier@3.8.3)(typescript@5.9.3) + version: 3.2.0(eslint@8.57.1)(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)))(prettier@3.8.3)(typescript@5.9.3) '@react-native/babel-preset': specifier: 0.84.0 version: 0.84.0(@babel/core@7.29.0) '@testing-library/react-native': specifier: ^12.9.0 - version: 12.9.0(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)))(react-native@0.84.0(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react-test-renderer@19.2.3(react@19.2.4))(react@19.2.4) + version: 12.9.0(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)))(react-native@0.84.0(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react-test-renderer@19.2.3(react@19.2.4))(react@19.2.4) '@types/crypto-js': specifier: ^4.2.2 version: 4.2.2 @@ -606,7 +606,7 @@ importers: version: 5.11.1(eslint@8.57.1)(typescript@5.9.3) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)) + version: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)) pod-install: specifier: 0.3.10 version: 0.3.10 @@ -683,8 +683,8 @@ importers: specifier: ^3.5.0 version: 3.5.0 zod: - specifier: ^4.3.6 - version: 4.3.6 + specifier: ^4.4.2 + version: 4.4.2 devDependencies: '@tailwindcss/vite': specifier: ^4.2.2 @@ -766,10 +766,10 @@ importers: version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) '@hookform/resolvers': specifier: ^5.2.2 - version: 5.2.2(react-hook-form@7.74.0(react@19.2.4)) + version: 5.2.2(react-hook-form@7.75.0(react@19.2.4)) '@lingui/cli': - specifier: ^6.0.0 - version: 6.0.0(babel-plugin-macros@3.1.0) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-macros@3.1.0) '@radix-ui/react-slot': specifier: ^1.2.4 version: 1.2.4(@types/react@19.2.14)(react@19.2.4) @@ -793,7 +793,7 @@ importers: version: 11.17.0(typescript@6.0.3) '@ts-react/form': specifier: ^1.8.3 - version: 1.8.3(@hookform/resolvers@5.2.2(react-hook-form@7.74.0(react@19.2.4)))(react-hook-form@7.74.0(react@19.2.4))(react@19.2.4)(zod@4.4.1) + version: 1.8.3(@hookform/resolvers@5.2.2(react-hook-form@7.75.0(react@19.2.4)))(react-hook-form@7.75.0(react@19.2.4))(react@19.2.4)(zod@4.4.2) '@types/offscreencanvas': specifier: ^2019.7.3 version: 2019.7.3 @@ -852,11 +852,11 @@ importers: specifier: 3.1.5 version: 3.1.5 postcss: - specifier: ^8.5.12 - version: 8.5.12 + specifier: ^8.5.13 + version: 8.5.13 postcss-loader: specifier: ^8.2.1 - version: 8.2.1(postcss@8.5.12)(typescript@6.0.3)(webpack@5.106.2) + version: 8.2.1(postcss@8.5.13)(typescript@6.0.3)(webpack@5.106.2) preact: specifier: ^10.29.1 version: 10.29.1 @@ -879,8 +879,8 @@ importers: specifier: ^0.1.32 version: 0.1.32(react@19.2.4) react-hook-form: - specifier: ^7.74.0 - version: 7.74.0(react@19.2.4) + specifier: ^7.75.0 + version: 7.75.0(react@19.2.4) react-icons: specifier: ^5.6.0 version: 5.6.0(react@19.2.4) @@ -943,8 +943,8 @@ importers: specifier: ^7.29.0 version: 7.29.0 '@babel/preset-env': - specifier: ^7.29.2 - version: 7.29.2(@babel/core@7.29.0) + specifier: ^7.29.3 + version: 7.29.3(@babel/core@7.29.0) '@babel/preset-react': specifier: ^7.28.5 version: 7.28.5(@babel/core@7.29.0) @@ -952,11 +952,11 @@ importers: specifier: ^7.28.5 version: 7.28.5(@babel/core@7.29.0) '@lingui/react': - specifier: ^6.0.0 - version: 6.0.0(babel-plugin-macros@3.1.0)(react@19.2.4) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-macros@3.1.0)(react@19.2.4) '@lingui/vite-plugin': - specifier: ^6.0.0 - version: 6.0.0(@babel/core@7.29.0)(@lingui/babel-plugin-lingui-macro@6.0.0)(babel-plugin-macros@3.1.0)(rolldown@1.0.0-rc.17)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.37.0)(tsx@4.21.0)(yaml@2.8.3)) + specifier: ^6.0.1 + version: 6.0.1(@babel/core@7.29.0)(@lingui/babel-plugin-lingui-macro@6.0.1)(babel-plugin-macros@3.1.0)(rolldown@1.0.0-rc.17)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.37.0)(tsx@4.21.0)(yaml@2.8.3)) '@playwright/test': specifier: ^1.59.1 version: 1.59.1 @@ -1061,7 +1061,7 @@ importers: version: 0.14.0(@jest/expect-utils@30.3.0)(chalk@5.6.2)(expect@30.3.0)(jest-diff@30.3.0)(jest-message-util@30.3.0)(jest-validate@29.7.0) mockzilla-webextension: specifier: ^0.15.0 - version: 0.15.0(@types/jest@30.0.0)(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)))(mockzilla@0.14.0(@jest/expect-utils@30.3.0)(chalk@5.6.2)(expect@30.3.0)(jest-diff@30.3.0)(jest-message-util@30.3.0)(jest-validate@29.7.0))(webextension-polyfill@0.12.0) + version: 0.15.0(@types/jest@30.0.0)(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)))(mockzilla@0.14.0(@jest/expect-utils@30.3.0)(chalk@5.6.2)(expect@30.3.0)(jest-diff@30.3.0)(jest-message-util@30.3.0)(jest-validate@29.7.0))(webextension-polyfill@0.12.0) ms: specifier: ^2.1.3 version: 2.1.3 @@ -1091,7 +1091,7 @@ importers: version: 4.0.0(webpack@5.106.2) terser-webpack-plugin: specifier: ^5.5.0 - version: 5.5.0(@swc/core@1.15.32)(esbuild@0.28.0)(webpack@5.106.2) + version: 5.5.0(@swc/core@1.15.33)(esbuild@0.28.0)(webpack@5.106.2) tsx: specifier: ^4.21.0 version: 4.21.0 @@ -1112,7 +1112,7 @@ importers: version: 10.1.0(jiti@2.6.1) webpack: specifier: ^5.106.2 - version: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + version: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) webpack-bundle-analyzer: specifier: ^5.3.0 version: 5.3.0 @@ -1379,6 +1379,10 @@ packages: resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.29.3': + resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} + engines: {node: '>=6.9.0'} + '@babel/core@7.29.0': resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} @@ -1557,6 +1561,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3': + resolution: {integrity: sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} engines: {node: '>=6.9.0'} @@ -2152,8 +2162,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-env@7.29.2': - resolution: {integrity: sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==} + '@babel/preset-env@7.29.3': + resolution: {integrity: sha512-ySZypNLAIH1ClygLDQzVMoGQRViATnkHkYYV6TcNDz+8+jwZCdsguGvsb3EY5d9wyWyhmF1iSuFM0Yh5XPnqSA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2361,6 +2371,10 @@ packages: resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} engines: {node: '>=18.0.0'} + '@cloudflare/kv-asset-handler@0.5.0': + resolution: {integrity: sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==} + engines: {node: '>=22.0.0'} + '@cloudflare/unenv-preset@2.16.0': resolution: {integrity: sha512-8ovsRpwzPoEqPUzoErAYVv8l3FMZNeBVQfJTvtzP4AgLSRGZISRfuChFxHWUQd3n6cnrwkuTGxT+2cGo8EsyYg==} peerDependencies: @@ -2385,8 +2399,8 @@ packages: cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-64@1.20260426.1': - resolution: {integrity: sha512-Ch7DqsmYzSQRTY87pZpsGsFVz9VVBnLPnCBOHxKt1HH25a7oMu1w1PbPWqVmE0VerCLsj/TScX7Ob3v6E14TZw==} + '@cloudflare/workerd-darwin-64@1.20260430.1': + resolution: {integrity: sha512-ADohZUHf7NBvPp2PdZig2Opxx+hDkk3ve7jrTne3JRx9kDSB73zc4LzcEeEN8LKkbAcqZmvfRJfpChSlusu0lA==} engines: {node: '>=16'} cpu: [x64] os: [darwin] @@ -2397,8 +2411,8 @@ packages: cpu: [arm64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20260426.1': - resolution: {integrity: sha512-0m0U8vaPRH25SpKjbSyRql6gmPe4rCsETRV2WW0qBnuMdKNr5Vh5/Uez80xVrfiCCRMTULGeg63Nqg2vg6CDOA==} + '@cloudflare/workerd-darwin-arm64@1.20260430.1': + resolution: {integrity: sha512-/DoYC/1wHs+YRZzzqSQg1/EHB4hiv1yV5U8FnmapRRIzVaPtnt+ApeOXeMrIdKidgKOI8TqQzgBU8xbIM7Cl4Q==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] @@ -2409,8 +2423,8 @@ packages: cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-64@1.20260426.1': - resolution: {integrity: sha512-C8LlC8uSYzg49y51n++75esxZmMp+Uz1OKHHA/4lkv6rjOTbcHQJuEwSLppjybVIXpv7A8MBhbu9iyCTvyv1mw==} + '@cloudflare/workerd-linux-64@1.20260430.1': + resolution: {integrity: sha512-koJhBWvEVZPKCVFtMLp2iMHlYr+lFCF47wGbnlKdHVlemV0zTxJEyHI8aLlrhPLhBmOmYLp46rXw09/qJkRIhQ==} engines: {node: '>=16'} cpu: [x64] os: [linux] @@ -2421,8 +2435,8 @@ packages: cpu: [arm64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20260426.1': - resolution: {integrity: sha512-ESVp/OIFMAqjQsa8BOP2BQQz5Vpfv6ncN6lNnIuNeOgsISQBdYk+LA60bwQHMud9tvmnSYtONp1zkZ8OQz+x6w==} + '@cloudflare/workerd-linux-arm64@1.20260430.1': + resolution: {integrity: sha512-hMdapNAzNQZDXGGkg4Slydc3fRJP5FUZLJVVcZCW/+imhhJro9Z1rv5n/wfR+txKoSWhTYR8eOp8Pyi2bzLzlw==} engines: {node: '>=16'} cpu: [arm64] os: [linux] @@ -2433,8 +2447,8 @@ packages: cpu: [x64] os: [win32] - '@cloudflare/workerd-windows-64@1.20260426.1': - resolution: {integrity: sha512-d3Xj/IjINRgNVwH+eKhpUn4xkkcEewbWXbOvBlapiirKWh5zl9m0Epi3qOqmjyRYK6MICqIGXg4qZBEt0lxudw==} + '@cloudflare/workerd-windows-64@1.20260430.1': + resolution: {integrity: sha512-jS3ffixjb5USOwz4frw4WzCz0HrjVxkgyU3WiYb06N7hBAfN6eOrveAJ4QRef0+suK4V1vQFoB1oKdRBsXe9Dw==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -4756,8 +4770,8 @@ packages: resolution: {integrity: sha512-x9HxUUZgnzF5nTsRwCyJxL/csll/psQCeiTiUPMqE1qC9Mq3ZFPygHDUgijIwOCSDnILHM581Fjar/Njvpnnow==} engines: {node: '>=20.0.0'} - '@lingui/babel-plugin-extract-messages@6.0.0': - resolution: {integrity: sha512-c85SB/kcZY0b8uDje9JOPGAyQ7zTgmjx3N2e2dxNrnjA64fgqeyhJ1KAbHozEuHh7mGOgnv2jRXeAs+zS2okwg==} + '@lingui/babel-plugin-extract-messages@6.0.1': + resolution: {integrity: sha512-E9quPJxYZFz2f1t8lRyPILWKrqrUI32EYBQMjC9CcneKh9ZLtvm7K1IAM+tPMYW5BDDqlXIVr8XHhGrkv/3OSA==} engines: {node: '>=22.19.0'} '@lingui/babel-plugin-lingui-macro@5.9.2': @@ -4769,8 +4783,8 @@ packages: babel-plugin-macros: optional: true - '@lingui/babel-plugin-lingui-macro@6.0.0': - resolution: {integrity: sha512-a2Qf5hW1q2G4s5fCEOQq/uT4svEcmyVCLe02Jwnr/lmtCyHmfdNHgjVQB1EEEnEH0dSMDQRAubrLDDzjMxbX+w==} + '@lingui/babel-plugin-lingui-macro@6.0.1': + resolution: {integrity: sha512-ZVsi04ZeqkvOfLn+fVZPEv6//SKHvrJlD+T0oJWDdymMKQVGsuFUSHFq3eFBpKilPMzYSCCj0wHgmljdUQionw==} engines: {node: '>=22.19.0'} '@lingui/cli@5.9.2': @@ -4778,8 +4792,8 @@ packages: engines: {node: '>=20.0.0'} hasBin: true - '@lingui/cli@6.0.0': - resolution: {integrity: sha512-15ML0pQo47+OXLff2ML5p6BblQUC+4L4bSjBQChojhDEBml+X+oIgimIzYXUkiEJGEz/5Ja172eNCpTtFRqk2g==} + '@lingui/cli@6.0.1': + resolution: {integrity: sha512-xojK0f0JjgcZArNU4m3vydhG+ngQOxbovV8wDav3TT1R8PXSvKrmGfCoPffQczpbl86/0NOSdvteN8Da5MQlqg==} engines: {node: '>=22.19.0'} hasBin: true @@ -4787,8 +4801,8 @@ packages: resolution: {integrity: sha512-tkobrx4HIJDWgYO/qUOJgwOVB5QX+FdQHmk9wetzlhgf0BSc52OCGYeG//oKHteJB0dnr2XYicnTuUtoVwr3+g==} engines: {node: '>=20.0.0'} - '@lingui/conf@6.0.0': - resolution: {integrity: sha512-P7SvvG0Iu3U76XLtcdkKYYYNnk53yqRDnvdChpKY2EYiiYaQm3fl5yVC/yMhWAL5WKUH7fBvI6XUeXoxAGNyHw==} + '@lingui/conf@6.0.1': + resolution: {integrity: sha512-6NJIOTh7Pt1MXMNkUsxjA6tlKX7LB1QLh/A5H3a1SmZTSZgcbes/BvF4lEh7zAfhNIU5A5Y8PljX+n4fBGO7Hg==} engines: {node: '>=22.19.0'} '@lingui/core@5.9.2': @@ -4803,8 +4817,8 @@ packages: babel-plugin-macros: optional: true - '@lingui/core@6.0.0': - resolution: {integrity: sha512-2UcneQQhGAD0TLk5UmWspqrfULteqN0yxlDHAt/QNySXtXmfh+QoHHAOSVphbNOFBV2/w62XVROk10hRaQSmbg==} + '@lingui/core@6.0.1': + resolution: {integrity: sha512-3dtvQmPv7qpu6j4SwX8h/TQu3ADujdw9/ZV3qb6OwsYa0AhBUPaydVGOEDvkNA7v/fQh6CNUc6qqZrBbDBvdHA==} engines: {node: '>=22.19.0'} peerDependencies: babel-plugin-macros: 2 || 3 @@ -4816,8 +4830,8 @@ packages: resolution: {integrity: sha512-PMlJERgG0/rCYqMuBDQdsAuEEUxbqe1apwwDJxIniN9vZpwl+4jDZhDQ6J9CwjlaUPe7rCfOm/B79N88ELwTQQ==} engines: {node: '>=20.0.0'} - '@lingui/format-po@6.0.0': - resolution: {integrity: sha512-PiNIdC4xUuZOsj6t71DMSIKDD28jdGuiXrllT9AXdvsikxW4RzoPjE6Zys+Csp4wcjjldxS0NV1BOmAGYyW+Sw==} + '@lingui/format-po@6.0.1': + resolution: {integrity: sha512-kt3naP/2kpAPJ4dwwFnkhbvR5XkGaNdbK8W6ofpIJFhY3MvGZJ9rYY0KMp++3DAaXf7r6tHq0W0To3akSDejvg==} engines: {node: '>=22.19.0'} '@lingui/macro@5.9.2': @@ -4836,8 +4850,8 @@ packages: resolution: {integrity: sha512-PQA+bP4TBX7F5nmrEm9eDk+xddepjO7okI6bsOQ+6LIw1eJMvh9w/Xt3AoKTgzBCwd1ZwyqzBOelrX6sa6y+fg==} engines: {node: '>=20.0.0'} - '@lingui/message-utils@6.0.0': - resolution: {integrity: sha512-7HhrNjY9tQFa4l2RuwfqK7C5PViZnUpWl6RnBjvYz4YOWjP/jJwwbbG2oOVJeAfeo93BAyiO91lPoZnlBPjDEw==} + '@lingui/message-utils@6.0.1': + resolution: {integrity: sha512-cw1X5mqDODbYDkwvA9i6/4j7Ix0ptl+E9RfhBRLI2NsoLzHHX+ePryGkShFdUHYsDL+C9qkq8W0drgRVEl9LgA==} engines: {node: '>=22.19.0'} '@lingui/react@5.9.2': @@ -4853,8 +4867,8 @@ packages: babel-plugin-macros: optional: true - '@lingui/react@6.0.0': - resolution: {integrity: sha512-pjHVLSLeqLDGsy/MYyN3ohdWNwLMqrfGIKuEovU2/LPVd2bZpWTd4IlTtY9Z1RLXj5/p7nOaSsJnz8IyGT6DyQ==} + '@lingui/react@6.0.1': + resolution: {integrity: sha512-Pjj77gdZEINsqTvnNtHZTtU+xlgCK3lFKUd4fXMcIo8q7snkdmD8SB/EBJB28s+e5ZEcmFi5dfS4ekc5scQvPA==} engines: {node: '>=22.19.0'} peerDependencies: babel-plugin-macros: 2 || 3 @@ -4863,8 +4877,8 @@ packages: babel-plugin-macros: optional: true - '@lingui/vite-plugin@6.0.0': - resolution: {integrity: sha512-GsdePolPDnHwlBVVPcL0OvI8SdSpJl1APZ01RiSOtULWcG8TtG36rQOaGAnW5C/iqQNbXvFWErDrR9qzNZVv6g==} + '@lingui/vite-plugin@6.0.1': + resolution: {integrity: sha512-RgHkaC76p8NLj2DqA4JqC1/+pFIZWSkv4dJm/D8O+GSoJlst7WMl4h08qpPpAdTKgZpDZB8d22O6ejFohe6PTw==} engines: {node: '>=22.19.0'} peerDependencies: '@babel/core': ^7.29.0 || ^8.0.0-rc.1 @@ -7058,86 +7072,86 @@ packages: resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} engines: {node: '>=14'} - '@swc/core-darwin-arm64@1.15.32': - resolution: {integrity: sha512-/YWMvJDPu+AAwuUsM2G+DNQ/7zhodURGzdQyewEqcvgklAdDHs3LwQmLLnyn6SJl8DT8UOxkbzK+D1PmPeelRg==} + '@swc/core-darwin-arm64@1.15.33': + resolution: {integrity: sha512-N+L0uXhuO7FIfzqwgxmzv0zIpV0qEp8wPX3QQs2p4atjMoywup2JTeDlXPw+z9pWJGCae3JjM+tZ6myclI+2gA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.15.32': - resolution: {integrity: sha512-KOTXJXdAhWL+hZ77MYP3z+4pcMFaQhQ74yqyN1uz093q0YnbxpqMtYpPISbYvMHzVRNNx5kN+9RZAXEaadhWVA==} + '@swc/core-darwin-x64@1.15.33': + resolution: {integrity: sha512-/Il4QHSOhV4FekbsDtkrNmKbsX26oSysvgrRswa/RYOHXAkwXDbB4jaeKq6PsJLSPkzJ2KzQ061gtBnk0vNHfA==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.15.32': - resolution: {integrity: sha512-oOoxLweljlc0A4X8ybsgxV7cVaYTwBOg2iMDJcFR3Sr48C+lsv9VzSmqdK/IVIXF4W4GjLc3VqTAdSMXlfVLuQ==} + '@swc/core-linux-arm-gnueabihf@1.15.33': + resolution: {integrity: sha512-C64hBnBxq4viOPQ8hlx+2lJ23bzZBGnjw7ryALmS+0Q3zHmwO8lw1/DArLENw4Q18/0w5wdEO1k3m1wWNtKGqQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.15.32': - resolution: {integrity: sha512-oDzEkdl6D6BAWdMtU5KGO7y3HR5fJcvByNLyEk9+ugj8nP5Ovb7P4kBcStBXc4MPExFGQryehiINMlmY8HlclA==} + '@swc/core-linux-arm64-gnu@1.15.33': + resolution: {integrity: sha512-TRJfnJbX3jqpxRDRoieMzRiCBS5jOmXNb3iQXmcgjFEHKLnAgK1RZRU8Cq1MsPqO4jAJp/ld1G4O3fXuxv85uw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] libc: [glibc] - '@swc/core-linux-arm64-musl@1.15.32': - resolution: {integrity: sha512-omcqjoZP/b8D8PuczVoRwJieC6ibj7qIxTftNYokz4/aSmKFHvsd7nIFfPk5ZvtzncbH4AY7+Dkr/Lp2gWxYeA==} + '@swc/core-linux-arm64-musl@1.15.33': + resolution: {integrity: sha512-il7tYM+CpUNzieQbwAjFT1P8zqAhmGWNAGhQZBnxurXZ0aNn+5nqYFTEUKNZl7QibtT0uQXzTZrNGHCIj6Y1Og==} engines: {node: '>=10'} cpu: [arm64] os: [linux] libc: [musl] - '@swc/core-linux-ppc64-gnu@1.15.32': - resolution: {integrity: sha512-KGkTMyz/Tbn3PBNu0AVZ4GTDFKnICrYcTiNPZq8DrvK42pnFsf3GNDrIG9E5AtQlTmC0YigkWKmu0eMcfTrmgA==} + '@swc/core-linux-ppc64-gnu@1.15.33': + resolution: {integrity: sha512-ZtNBwN0Z7CFj9Il0FcPaKdjgP7URyKu/3RfH46vq+0paOBqLj4NYldD6Qo//Duif/7IOtAraUfDOmp0PLAufog==} engines: {node: '>=10'} cpu: [ppc64] os: [linux] libc: [glibc] - '@swc/core-linux-s390x-gnu@1.15.32': - resolution: {integrity: sha512-G3Aa4tVS/3OGZBkoNIwUF9F6RAy+Osb4GOlo62SinLmDiErz/ykmM7KH0wkz6l9kM8jJq1HyAM6atJTUEbBk7g==} + '@swc/core-linux-s390x-gnu@1.15.33': + resolution: {integrity: sha512-De1IyajoOmhOYYjw/lx66bKlyDpHZTueqwpDrWgf5O7T6d1ODeJJO9/OqMBmrBQc5C+dNnlmIufHsp4QVCWufA==} engines: {node: '>=10'} cpu: [s390x] os: [linux] libc: [glibc] - '@swc/core-linux-x64-gnu@1.15.32': - resolution: {integrity: sha512-ERsjfGcj6CBmj3vJnGDO8m8rTvw6RqMcWo1dogOtNx3/+/0+NNpJiXDobJrr1GwInI/BHAEkvSFIH6d2LqPcUQ==} + '@swc/core-linux-x64-gnu@1.15.33': + resolution: {integrity: sha512-mGTH0YxmUN+x6vRN/I6NOk5X0ogNktkwPnJ94IMvR7QjhRDwL0O8RXEDhyUM0YtwWrryBOqaJQBX4zruxEPRGw==} engines: {node: '>=10'} cpu: [x64] os: [linux] libc: [glibc] - '@swc/core-linux-x64-musl@1.15.32': - resolution: {integrity: sha512-N4Ggahe/8SUbTX50P6EdhbW9YWcgbZVb52R4cq6MK+zsoMjRq7rGvV5ztA05QnbaCYqMYx8rTY7KAIA3Crdo4Q==} + '@swc/core-linux-x64-musl@1.15.33': + resolution: {integrity: sha512-hj628ZkSEJf6zMf5VMbYrG2O6QqyTIp2qwY6VlCjvIa9lAEZ5c2lfPblCLVGYubTeLJDxadLB/CxqQYOQABeEQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] libc: [musl] - '@swc/core-win32-arm64-msvc@1.15.32': - resolution: {integrity: sha512-01yN0o9jvo8xBTP12aPK2wW8b41jmOlGbDDlAnoynotc4pO6xA0zby9f1z6j++qXDpGBttLySq1omgVrlQKYcw==} + '@swc/core-win32-arm64-msvc@1.15.33': + resolution: {integrity: sha512-GV2oohtN2/5+KSccl86VULu3aT+LrISC8uzgSq0FRnikpD+Zwc+sBlXmoKQ+Db6jI57ITUOIB8jRkdGMABC29g==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.15.32': - resolution: {integrity: sha512-fLagI9XZYNpTcmlqAcp3KBtmj7E19WCmYD80Jxj1Kn5tGNa7yxNLd3NNdWxuZGUPl5iC0/KqZru7g08gF6Fsrw==} + '@swc/core-win32-ia32-msvc@1.15.33': + resolution: {integrity: sha512-gtyvzSNR8DHKfFEA2uqb8Ld1myqi6uEg2jyeUq3ikn5ytYs7H8RpZYC8mdy4NXr8hfcdJfCLXPlYaqqfBXpoEQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.15.32': - resolution: {integrity: sha512-gbc2bQ/T2CiR+w0OvcVKwLOFAcPZBvmWmolbwpg1E8UrpeC03DGtyMUApOHNXNYWA3SHFrYXCQtosrcMza1YFg==} + '@swc/core-win32-x64-msvc@1.15.33': + resolution: {integrity: sha512-d6fRqQSkJI+kmMEBWaDQ7TMl8+YjLYbwRUPZQ9DY0ORBJeTzOrG0twvfvlZ2xgw6jA0ScQKgfBm4vHLSLl5Hqg==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.15.32': - resolution: {integrity: sha512-/eWL0n43D64QWEUHLtTE+jDqjkJhyidjkDhv6f0uJohOUAhywxQ9wXYp845DNNds0JpCdI4Uo0a9bl+vbXf+ew==} + '@swc/core@1.15.33': + resolution: {integrity: sha512-jOlwnFV2xhuuZeAUILGFULeR6vDPfijEJ57evfocwznQldLU3w2cZ9bSDryY9ip+AsM3r1NJKzf47V2NXebkeQ==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -7464,33 +7478,33 @@ packages: '@tsconfig/react-native@3.0.9': resolution: {integrity: sha512-+PuvMuxb0OTHo/o04vEQI7LfUoiPH33pePvAH+qxf5ZPsRAVwtespj7LqysOTAYcsmRvjLPjik7V8pIcm84dEQ==} - '@turbo/darwin-64@2.9.6': - resolution: {integrity: sha512-X/56SnVXIQZBLKwniGTwEQTGmtE5brSACnKMBWpY3YafuxVYefrC2acamfjgxP7BG5w3I+6jf0UrLoSzgPcSJg==} + '@turbo/darwin-64@2.9.8': + resolution: {integrity: sha512-zU1P95ygDpsQ+2QHh7CVTqvYwi9UBlhKWzoIyUnP3vUoge7H9SQEzrd8dj+XcTrslAp9Db3vIBcXtMVoTEYDnA==} cpu: [x64] os: [darwin] - '@turbo/darwin-arm64@2.9.6': - resolution: {integrity: sha512-aalBeSl4agT/QtYGDyf/XLajedWzUC9Vg/pm/YO6QQ93vkQ91Vz5uK1ta5RbVRDozQSz4njxUNqRNmOXDzW+qw==} + '@turbo/darwin-arm64@2.9.8': + resolution: {integrity: sha512-nKRFI5ZhCGUi4eXNlrojzWcT/CehMj0raot1WE4lw5qf66ZxZHbRbBqcwNEy+ZLY7RkJJRY+TaU89fuj3BcgGg==} cpu: [arm64] os: [darwin] - '@turbo/linux-64@2.9.6': - resolution: {integrity: sha512-YKi05jnNHaD7vevgYwahpzGwbsNNTwzU2c7VZdmdFm7+cGDP4oREUWSsainiMfRqjRuolQxBwRn8wf1jmu+YZA==} + '@turbo/linux-64@2.9.8': + resolution: {integrity: sha512-Wf/kQpVDCaWM3P5d6lKvJnqjYn/ofUBGbT4h4vRFrdC4N6B/nsun03S2kQNJJMXpXg39woeS4CI367RMU3/OAg==} cpu: [x64] os: [linux] - '@turbo/linux-arm64@2.9.6': - resolution: {integrity: sha512-02o/ZS69cOYEDczXvOB2xmyrtzjQ2hVFtWZK1iqxXUfzMmTjZK4UumrfNnjckSg+gqeBfnPRHa0NstA173Ik3g==} + '@turbo/linux-arm64@2.9.8': + resolution: {integrity: sha512-v6S3HuKVoa9CEx16IxKj1i/+crxXx22A9O80zW1350zyUlcX0T/zLOxVf1k+ruK/7ssXnDJVg8uSYOxlYRedlA==} cpu: [arm64] os: [linux] - '@turbo/windows-64@2.9.6': - resolution: {integrity: sha512-wVdQjvnBI15wB6JrA+43CtUtagjIMmX6XYO758oZHAsCNSxqRlJtdyujih0D8OCnwCRWiGWGI63zAxR0hO6s9g==} + '@turbo/windows-64@2.9.8': + resolution: {integrity: sha512-JaefWOJNBazDylAn3f+lLB34XMNu8nEBbgPRP/Ewysg81cBubGfcyyyzpQOGVuMwfaqdNAE/kitG7w3AbJn9/g==} cpu: [x64] os: [win32] - '@turbo/windows-arm64@2.9.6': - resolution: {integrity: sha512-1XUUyWW0W6FTSqGEhU8RHVqb2wP1SPkr7hIvBlMEwH9jr+sJQK5kqeosLJ/QaUv4ecSAd1ZhIrLoW7qslAzT4A==} + '@turbo/windows-arm64@2.9.8': + resolution: {integrity: sha512-Or6ljjB4TiiwCdVKDYWew0SokQ9kep5zruL8P3nbum9WdkH5XA41rQID4Ulc215Z+R3DrB+qXSHPsJjU3/n2ng==} cpu: [arm64] os: [win32] @@ -13323,9 +13337,9 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - miniflare@4.20260426.0: - resolution: {integrity: sha512-KM+v76d04qT+NsPfVKVQEgnnuLNE3uzCCl2QKMTJ5OXor5JbBm1vpkQwQ+l7o5ELCrZ74RnyKhJKLiJyUA39Tw==} - engines: {node: '>=18.0.0'} + miniflare@4.20260430.0: + resolution: {integrity: sha512-MWvMm3Siho9Yj7lbJZidLs8hbrRvIcOrif2mnsHQZdvoKfedpea+GaN8XJxbpRcq0B2WzNI1BB1ihdnqes3/ZA==} + engines: {node: '>=22.0.0'} hasBin: true minimalistic-assert@1.0.1: @@ -14306,6 +14320,10 @@ packages: resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.13: + resolution: {integrity: sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.5.8: resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} @@ -14694,8 +14712,8 @@ packages: peerDependencies: react: ^19.2.4 - react-hook-form@7.74.0: - resolution: {integrity: sha512-yR6wHr99p9wFv686jhRWVSFhUvDvNbdUf2dKlbno8/VKOCuoNobDGC6S+M2dua9A9Yo8vpcrp8assIYbsZCQ9g==} + react-hook-form@7.75.0: + resolution: {integrity: sha512-Ovv94H+0p3sJ7B9B5QxPuCP1u8V/cHuVGyH55cSwodYDtoJwK+fqk3vjfIgSX59I2U/bU4z0nRJ9HMLpNiWEmw==} engines: {node: '>=18.0.0'} peerDependencies: react: ^19.2.4 @@ -16426,8 +16444,8 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo@2.9.6: - resolution: {integrity: sha512-+v2QJey7ZUeUiuigkU+uFfklvNUyPI2VO2vBpMYJA+a1hKFLFiKtUYlRHdb3P9CrAvMzi0upbjI4WT+zKtqkBg==} + turbo@2.9.8: + resolution: {integrity: sha512-REEB2rVTVDTf4hav1gJ5dIsGylWZrNonvjXFtk1dCi8gND3PhZtnYkyry1bra/Fo+iP6ctTEZbg6vWfdfHq/1A==} hasBin: true tweetnacl@0.14.5: @@ -17282,8 +17300,8 @@ packages: engines: {node: '>=16'} hasBin: true - workerd@1.20260426.1: - resolution: {integrity: sha512-ELvGgN8c9oo+E6EPyecxk1TEf6/eAK4TxxQTW5mQ87C7jbjCzhMbg0P2ije49UBHV0dkBYPJcJvcklUltipl2A==} + workerd@1.20260430.1: + resolution: {integrity: sha512-KEgIWyiw3Jmn+DCd/L3ePo5fmiiYb/UcwKvDWPf/nLLOiwShDFzDSsegU5NY/JcwgvO/QsLHVi2FYrbkcXNY5Q==} engines: {node: '>=16'} hasBin: true @@ -17302,12 +17320,12 @@ packages: '@cloudflare/workers-types': optional: true - wrangler@4.86.0: - resolution: {integrity: sha512-9aa/gbF/HiUeeUEwyQpW5LDPBEzyt7iaE6xHwm0vk2Ly8A6J+jh03pzchqVnCCWR832mNyA28MD8oAYt0Kfvlw==} - engines: {node: '>=20.3.0'} + wrangler@4.87.0: + resolution: {integrity: sha512-lfhfKwLfQlowwgV0xhlYgE9fU3n0I30d4ccGY/rTCEm/n42Mjvlr0Ng3ZPNqlsrsKBcDR531V7dsPkgELvrk/Q==} + engines: {node: '>=22.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20260426.1 + '@cloudflare/workers-types': ^4.20260430.1 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -17599,11 +17617,8 @@ packages: zip-dir@2.0.0: resolution: {integrity: sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==} - zod@4.3.6: - resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} - - zod@4.4.1: - resolution: {integrity: sha512-a6ENMBBGZBsnlSebQ/eKCguSBeGKSf4O7BPnqVPmYGtpBYI7VSqoVqw+QcB7kPRjbqPwhYTpFbVj/RqNz/CT0Q==} + zod@4.4.2: + resolution: {integrity: sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==} zustand@4.5.7: resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} @@ -18022,6 +18037,8 @@ snapshots: '@babel/compat-data@7.29.0': {} + '@babel/compat-data@7.29.3': {} + '@babel/core@7.29.0': dependencies: '@babel/code-frame': 7.29.0 @@ -18255,6 +18272,14 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -18313,7 +18338,7 @@ snapshots: '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.29.0)': dependencies: - '@babel/compat-data': 7.29.0 + '@babel/compat-data': 7.29.3 '@babel/core': 7.29.0 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 @@ -18981,9 +19006,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-env@7.29.2(@babel/core@7.29.0)': + '@babel/preset-env@7.29.3(@babel/core@7.29.0)': dependencies: - '@babel/compat-data': 7.29.0 + '@babel/compat-data': 7.29.3 '@babel/core': 7.29.0 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 @@ -18991,6 +19016,7 @@ snapshots: '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.3(@babel/core@7.29.0) '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) @@ -19317,46 +19343,48 @@ snapshots: '@cloudflare/kv-asset-handler@0.4.2': {} + '@cloudflare/kv-asset-handler@0.5.0': {} + '@cloudflare/unenv-preset@2.16.0(unenv@2.0.0-rc.24)(workerd@1.20260317.1)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: workerd: 1.20260317.1 - '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260426.1)': + '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260430.1)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: - workerd: 1.20260426.1 + workerd: 1.20260430.1 '@cloudflare/workerd-darwin-64@1.20260317.1': optional: true - '@cloudflare/workerd-darwin-64@1.20260426.1': + '@cloudflare/workerd-darwin-64@1.20260430.1': optional: true '@cloudflare/workerd-darwin-arm64@1.20260317.1': optional: true - '@cloudflare/workerd-darwin-arm64@1.20260426.1': + '@cloudflare/workerd-darwin-arm64@1.20260430.1': optional: true '@cloudflare/workerd-linux-64@1.20260317.1': optional: true - '@cloudflare/workerd-linux-64@1.20260426.1': + '@cloudflare/workerd-linux-64@1.20260430.1': optional: true '@cloudflare/workerd-linux-arm64@1.20260317.1': optional: true - '@cloudflare/workerd-linux-arm64@1.20260426.1': + '@cloudflare/workerd-linux-arm64@1.20260430.1': optional: true '@cloudflare/workerd-windows-64@1.20260317.1': optional: true - '@cloudflare/workerd-windows-64@1.20260426.1': + '@cloudflare/workerd-windows-64@1.20260430.1': optional: true '@colors/colors@1.5.0': @@ -19962,7 +19990,7 @@ snapshots: debug: 4.4.3(supports-color@5.5.0) espree: 10.4.0 globals: 14.0.0 - ignore: 5.3.1 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.1 minimatch: 3.1.5 @@ -21543,9 +21571,9 @@ snapshots: transitivePeerDependencies: - '@vue/composition-api' - '@headlessui/tailwindcss@0.2.1(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)))': + '@headlessui/tailwindcss@0.2.1(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)))': dependencies: - tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)) + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)) '@headlessui/vue@1.7.23(vue@3.5.13(typescript@6.0.3))': dependencies: @@ -21566,10 +21594,10 @@ snapshots: '@standard-schema/utils': 0.3.0 react-hook-form: 7.72.0(react@19.2.4) - '@hookform/resolvers@5.2.2(react-hook-form@7.74.0(react@19.2.4))': + '@hookform/resolvers@5.2.2(react-hook-form@7.75.0(react@19.2.4))': dependencies: '@standard-schema/utils': 0.3.0 - react-hook-form: 7.74.0(react@19.2.4) + react-hook-form: 7.75.0(react@19.2.4) '@humanfs/core@0.19.1': {} @@ -21862,7 +21890,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0(node-notifier@10.0.1) @@ -21876,7 +21904,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -21899,7 +21927,7 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0(node-notifier@10.0.1) @@ -21913,7 +21941,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)) + jest-config: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -22135,7 +22163,7 @@ snapshots: '@lingui/babel-plugin-extract-messages@5.9.2': {} - '@lingui/babel-plugin-extract-messages@6.0.0': {} + '@lingui/babel-plugin-extract-messages@6.0.1': {} '@lingui/babel-plugin-lingui-macro@5.9.2(babel-plugin-macros@3.1.0)': dependencies: @@ -22150,12 +22178,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@lingui/babel-plugin-lingui-macro@6.0.0': + '@lingui/babel-plugin-lingui-macro@6.0.1': dependencies: '@babel/core': 7.29.0 '@babel/types': 7.29.0 - '@lingui/conf': 6.0.0 - '@lingui/message-utils': 6.0.0 + '@lingui/conf': 6.0.1 + '@lingui/message-utils': 6.0.1 transitivePeerDependencies: - supports-color @@ -22192,18 +22220,18 @@ snapshots: - babel-plugin-macros - supports-color - '@lingui/cli@6.0.0(babel-plugin-macros@3.1.0)': + '@lingui/cli@6.0.1(babel-plugin-macros@3.1.0)': dependencies: '@babel/core': 7.29.0 '@babel/generator': 7.29.1 '@babel/parser': 7.29.2 '@babel/types': 7.29.0 - '@lingui/babel-plugin-extract-messages': 6.0.0 - '@lingui/babel-plugin-lingui-macro': 6.0.0 - '@lingui/conf': 6.0.0 - '@lingui/core': 6.0.0(babel-plugin-macros@3.1.0) - '@lingui/format-po': 6.0.0 - '@lingui/message-utils': 6.0.0 + '@lingui/babel-plugin-extract-messages': 6.0.1 + '@lingui/babel-plugin-lingui-macro': 6.0.1 + '@lingui/conf': 6.0.1 + '@lingui/core': 6.0.1(babel-plugin-macros@3.1.0) + '@lingui/format-po': 6.0.1 + '@lingui/message-utils': 6.0.1 chokidar: 5.0.0 cli-table3: 0.6.5 commander: 14.0.3 @@ -22228,7 +22256,7 @@ snapshots: jiti: 2.6.1 picocolors: 1.1.1 - '@lingui/conf@6.0.0': + '@lingui/conf@6.0.1': dependencies: jest-validate: 29.7.0 jiti: 2.6.1 @@ -22243,10 +22271,10 @@ snapshots: '@lingui/babel-plugin-lingui-macro': 5.9.2(babel-plugin-macros@3.1.0) babel-plugin-macros: 3.1.0 - '@lingui/core@6.0.0(babel-plugin-macros@3.1.0)': + '@lingui/core@6.0.1(babel-plugin-macros@3.1.0)': dependencies: - '@lingui/babel-plugin-lingui-macro': 6.0.0 - '@lingui/message-utils': 6.0.0 + '@lingui/babel-plugin-lingui-macro': 6.0.1 + '@lingui/message-utils': 6.0.1 optionalDependencies: babel-plugin-macros: 3.1.0 transitivePeerDependencies: @@ -22259,10 +22287,10 @@ snapshots: date-fns: 3.6.0 pofile: 1.1.4 - '@lingui/format-po@6.0.0': + '@lingui/format-po@6.0.1': dependencies: - '@lingui/conf': 6.0.0 - '@lingui/message-utils': 6.0.0 + '@lingui/conf': 6.0.1 + '@lingui/message-utils': 6.0.1 pofile: 1.1.4 '@lingui/macro@5.9.2(@lingui/babel-plugin-lingui-macro@5.9.2(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0)(react@19.2.4)': @@ -22280,7 +22308,7 @@ snapshots: '@messageformat/parser': 5.1.0 js-sha256: 0.10.1 - '@lingui/message-utils@6.0.0': + '@lingui/message-utils@6.0.1': dependencies: '@messageformat/date-skeleton': 1.1.0 '@messageformat/parser': 5.1.0 @@ -22295,24 +22323,24 @@ snapshots: '@lingui/babel-plugin-lingui-macro': 5.9.2(babel-plugin-macros@3.1.0) babel-plugin-macros: 3.1.0 - '@lingui/react@6.0.0(babel-plugin-macros@3.1.0)(react@19.2.4)': + '@lingui/react@6.0.1(babel-plugin-macros@3.1.0)(react@19.2.4)': dependencies: - '@lingui/babel-plugin-lingui-macro': 6.0.0 - '@lingui/core': 6.0.0(babel-plugin-macros@3.1.0) + '@lingui/babel-plugin-lingui-macro': 6.0.1 + '@lingui/core': 6.0.1(babel-plugin-macros@3.1.0) react: 19.2.4 optionalDependencies: babel-plugin-macros: 3.1.0 transitivePeerDependencies: - supports-color - '@lingui/vite-plugin@6.0.0(@babel/core@7.29.0)(@lingui/babel-plugin-lingui-macro@6.0.0)(babel-plugin-macros@3.1.0)(rolldown@1.0.0-rc.17)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.37.0)(tsx@4.21.0)(yaml@2.8.3))': + '@lingui/vite-plugin@6.0.1(@babel/core@7.29.0)(@lingui/babel-plugin-lingui-macro@6.0.1)(babel-plugin-macros@3.1.0)(rolldown@1.0.0-rc.17)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.37.0)(tsx@4.21.0)(yaml@2.8.3))': dependencies: - '@lingui/cli': 6.0.0(babel-plugin-macros@3.1.0) - '@lingui/conf': 6.0.0 + '@lingui/cli': 6.0.1(babel-plugin-macros@3.1.0) + '@lingui/conf': 6.0.1 vite: 8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.37.0)(tsx@4.21.0)(yaml@2.8.3) optionalDependencies: '@babel/core': 7.29.0 - '@lingui/babel-plugin-lingui-macro': 6.0.0 + '@lingui/babel-plugin-lingui-macro': 6.0.1 rolldown: 1.0.0-rc.17 transitivePeerDependencies: - babel-plugin-macros @@ -22328,10 +22356,10 @@ snapshots: elkjs: 0.9.3 mermaid: 11.14.0 - '@mermaid-js/mermaid-cli@11.14.0(puppeteer@19.11.1(typescript@6.0.3))(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3))(typescript@6.0.3)': + '@mermaid-js/mermaid-cli@11.14.0(puppeteer@19.11.1(typescript@6.0.3))(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3))(typescript@6.0.3)': dependencies: '@mermaid-js/layout-elk': 0.2.1(mermaid@11.14.0) - '@mermaid-js/mermaid-zenuml': 0.2.0(mermaid@11.14.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3))(typescript@6.0.3) + '@mermaid-js/mermaid-zenuml': 0.2.0(mermaid@11.14.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3))(typescript@6.0.3) chalk: 5.6.2 commander: 13.1.0 import-meta-resolve: 4.1.0 @@ -22342,9 +22370,9 @@ snapshots: - ts-node - typescript - '@mermaid-js/mermaid-zenuml@0.2.0(mermaid@11.14.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3))(typescript@6.0.3)': + '@mermaid-js/mermaid-zenuml@0.2.0(mermaid@11.14.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3))(typescript@6.0.3)': dependencies: - '@zenuml/core': 3.27.12(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3))(typescript@6.0.3) + '@zenuml/core': 3.27.12(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3))(typescript@6.0.3) mermaid: 11.14.0 transitivePeerDependencies: - '@vue/composition-api' @@ -23669,7 +23697,7 @@ snapshots: - utf-8-validate optional: true - '@react-native-community/eslint-config@3.2.0(eslint@8.57.1)(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)))(prettier@3.8.3)(typescript@5.9.3)': + '@react-native-community/eslint-config@3.2.0(eslint@8.57.1)(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)))(prettier@3.8.3)(typescript@5.9.3)': dependencies: '@babel/core': 7.29.0 '@babel/eslint-parser': 7.22.9(@babel/core@7.29.0)(eslint@8.57.1) @@ -23680,7 +23708,7 @@ snapshots: eslint-config-prettier: 8.8.0(eslint@8.57.1) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) eslint-plugin-ft-flow: 2.0.3(@babel/eslint-parser@7.22.9(@babel/core@7.29.0)(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-jest: 26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)))(typescript@5.9.3) + eslint-plugin-jest: 26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)))(typescript@5.9.3) eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.8.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.8.3) eslint-plugin-react: 7.33.0(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.0(eslint@8.57.1) @@ -24305,7 +24333,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@rnx-kit/cli@0.18.17(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)))(metro-react-native-babel-transformer@0.76.8(@babel/core@7.29.0))(metro@0.83.4)(react-native@0.84.0(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))': + '@rnx-kit/cli@0.18.17(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)))(metro-react-native-babel-transformer@0.76.8(@babel/core@7.29.0))(metro@0.83.4)(react-native@0.84.0(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))': dependencies: '@rnx-kit/align-deps': 3.4.2(metro@0.83.4) '@rnx-kit/config': 0.7.5(metro@0.83.4) @@ -24327,7 +24355,7 @@ snapshots: ora: 5.4.1 qrcode: 1.5.3 optionalDependencies: - jest: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)) + jest: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)) react-native: 0.84.0(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4) transitivePeerDependencies: - '@office-iss/react-native-win32' @@ -25076,7 +25104,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-constant-elements': 7.22.5(@babel/core@7.29.0) - '@babel/preset-env': 7.29.2(@babel/core@7.29.0) + '@babel/preset-env': 7.29.3(@babel/core@7.29.0) '@babel/preset-react': 7.28.5(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@svgr/core': 8.1.0 @@ -25085,59 +25113,59 @@ snapshots: transitivePeerDependencies: - supports-color - '@swc/core-darwin-arm64@1.15.32': + '@swc/core-darwin-arm64@1.15.33': optional: true - '@swc/core-darwin-x64@1.15.32': + '@swc/core-darwin-x64@1.15.33': optional: true - '@swc/core-linux-arm-gnueabihf@1.15.32': + '@swc/core-linux-arm-gnueabihf@1.15.33': optional: true - '@swc/core-linux-arm64-gnu@1.15.32': + '@swc/core-linux-arm64-gnu@1.15.33': optional: true - '@swc/core-linux-arm64-musl@1.15.32': + '@swc/core-linux-arm64-musl@1.15.33': optional: true - '@swc/core-linux-ppc64-gnu@1.15.32': + '@swc/core-linux-ppc64-gnu@1.15.33': optional: true - '@swc/core-linux-s390x-gnu@1.15.32': + '@swc/core-linux-s390x-gnu@1.15.33': optional: true - '@swc/core-linux-x64-gnu@1.15.32': + '@swc/core-linux-x64-gnu@1.15.33': optional: true - '@swc/core-linux-x64-musl@1.15.32': + '@swc/core-linux-x64-musl@1.15.33': optional: true - '@swc/core-win32-arm64-msvc@1.15.32': + '@swc/core-win32-arm64-msvc@1.15.33': optional: true - '@swc/core-win32-ia32-msvc@1.15.32': + '@swc/core-win32-ia32-msvc@1.15.33': optional: true - '@swc/core-win32-x64-msvc@1.15.32': + '@swc/core-win32-x64-msvc@1.15.33': optional: true - '@swc/core@1.15.32': + '@swc/core@1.15.33': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.26 optionalDependencies: - '@swc/core-darwin-arm64': 1.15.32 - '@swc/core-darwin-x64': 1.15.32 - '@swc/core-linux-arm-gnueabihf': 1.15.32 - '@swc/core-linux-arm64-gnu': 1.15.32 - '@swc/core-linux-arm64-musl': 1.15.32 - '@swc/core-linux-ppc64-gnu': 1.15.32 - '@swc/core-linux-s390x-gnu': 1.15.32 - '@swc/core-linux-x64-gnu': 1.15.32 - '@swc/core-linux-x64-musl': 1.15.32 - '@swc/core-win32-arm64-msvc': 1.15.32 - '@swc/core-win32-ia32-msvc': 1.15.32 - '@swc/core-win32-x64-msvc': 1.15.32 + '@swc/core-darwin-arm64': 1.15.33 + '@swc/core-darwin-x64': 1.15.33 + '@swc/core-linux-arm-gnueabihf': 1.15.33 + '@swc/core-linux-arm64-gnu': 1.15.33 + '@swc/core-linux-arm64-musl': 1.15.33 + '@swc/core-linux-ppc64-gnu': 1.15.33 + '@swc/core-linux-s390x-gnu': 1.15.33 + '@swc/core-linux-x64-gnu': 1.15.33 + '@swc/core-linux-x64-musl': 1.15.33 + '@swc/core-win32-arm64-msvc': 1.15.33 + '@swc/core-win32-ia32-msvc': 1.15.33 + '@swc/core-win32-x64-msvc': 1.15.33 '@swc/counter@0.1.3': {} @@ -25280,7 +25308,7 @@ snapshots: '@alloc/quick-lru': 5.2.0 '@tailwindcss/node': 4.2.4 '@tailwindcss/oxide': 4.2.4 - postcss: 8.5.12 + postcss: 8.5.13 tailwindcss: 4.2.4 '@tailwindcss/vite@4.2.2(vite@8.0.2(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.37.0)(tsx@4.21.0)(yaml@2.8.3))': @@ -25337,7 +25365,7 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react-native@12.9.0(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)))(react-native@0.84.0(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react-test-renderer@19.2.3(react@19.2.4))(react@19.2.4)': + '@testing-library/react-native@12.9.0(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)))(react-native@0.84.0(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.84.0(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react-test-renderer@19.2.3(react@19.2.4))(react@19.2.4)': dependencies: jest-matcher-utils: 29.7.0 pretty-format: 29.7.0 @@ -25346,7 +25374,7 @@ snapshots: react-test-renderer: 19.2.3(react@19.2.4) redent: 3.0.0 optionalDependencies: - jest: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)) + jest: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)) '@testing-library/react@14.3.1(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: @@ -25394,19 +25422,19 @@ snapshots: '@trysound/sax@0.2.0': {} - '@ts-react/form@1.8.3(@hookform/resolvers@2.9.11(react-hook-form@7.71.2(react@19.2.4)))(react-hook-form@7.71.2(react@19.2.4))(react@19.2.4)(zod@4.4.1)': + '@ts-react/form@1.8.3(@hookform/resolvers@2.9.11(react-hook-form@7.71.2(react@19.2.4)))(react-hook-form@7.71.2(react@19.2.4))(react@19.2.4)(zod@4.4.2)': dependencies: '@hookform/resolvers': 2.9.11(react-hook-form@7.71.2(react@19.2.4)) react: 19.2.4 react-hook-form: 7.71.2(react@19.2.4) - zod: 4.4.1 + zod: 4.4.2 - '@ts-react/form@1.8.3(@hookform/resolvers@5.2.2(react-hook-form@7.74.0(react@19.2.4)))(react-hook-form@7.74.0(react@19.2.4))(react@19.2.4)(zod@4.4.1)': + '@ts-react/form@1.8.3(@hookform/resolvers@5.2.2(react-hook-form@7.75.0(react@19.2.4)))(react-hook-form@7.75.0(react@19.2.4))(react@19.2.4)(zod@4.4.2)': dependencies: - '@hookform/resolvers': 5.2.2(react-hook-form@7.74.0(react@19.2.4)) + '@hookform/resolvers': 5.2.2(react-hook-form@7.75.0(react@19.2.4)) react: 19.2.4 - react-hook-form: 7.74.0(react@19.2.4) - zod: 4.4.1 + react-hook-form: 7.75.0(react@19.2.4) + zod: 4.4.2 '@tsconfig/node10@1.0.9': {} @@ -25418,22 +25446,22 @@ snapshots: '@tsconfig/react-native@3.0.9': {} - '@turbo/darwin-64@2.9.6': + '@turbo/darwin-64@2.9.8': optional: true - '@turbo/darwin-arm64@2.9.6': + '@turbo/darwin-arm64@2.9.8': optional: true - '@turbo/linux-64@2.9.6': + '@turbo/linux-64@2.9.8': optional: true - '@turbo/linux-arm64@2.9.6': + '@turbo/linux-arm64@2.9.8': optional: true - '@turbo/windows-64@2.9.6': + '@turbo/windows-64@2.9.8': optional: true - '@turbo/windows-arm64@2.9.6': + '@turbo/windows-arm64@2.9.8': optional: true '@tybys/wasm-util@0.10.1': @@ -26115,7 +26143,7 @@ snapshots: '@vue/shared': 3.5.13 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.12 + postcss: 8.5.13 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.13': @@ -26227,7 +26255,7 @@ snapshots: '@webpack-cli/configtest@1.2.0(webpack-cli@4.9.2)(webpack@5.106.2)': dependencies: - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@4.9.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@4.9.2) webpack-cli: 4.9.2(webpack@5.106.2) '@webpack-cli/info@1.5.0(webpack-cli@4.9.2)': @@ -26316,10 +26344,10 @@ snapshots: dependencies: '@zag-js/dom-query': 0.31.1 - '@zenuml/core@3.27.12(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3))(typescript@6.0.3)': + '@zenuml/core@3.27.12(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3))(typescript@6.0.3)': dependencies: '@headlessui-float/vue': 0.14.4(@headlessui/vue@1.7.23(vue@3.5.13(typescript@6.0.3)))(vue@3.5.13(typescript@6.0.3)) - '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3))) + '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3))) '@headlessui/vue': 1.7.23(vue@3.5.13(typescript@6.0.3)) '@types/assert': 1.5.11 '@types/ramda': 0.28.25 @@ -26334,9 +26362,9 @@ snapshots: lodash: 4.18.1 marked: 4.3.0 pino: 8.20.0 - postcss: 8.5.12 + postcss: 8.5.13 ramda: 0.28.0 - tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)) + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)) vue: 3.5.13(typescript@6.0.3) vuex: 4.1.0(vue@3.5.13(typescript@6.0.3)) transitivePeerDependencies: @@ -26557,11 +26585,11 @@ snapshots: - react-dom - subscriptions-transport-ws - apollo-link-token-refresh@0.7.0(@apollo/client@4.1.5(graphql-ws@6.0.8(@fastify/websocket@11.0.0)(graphql@16.12.0)(ws@8.20.0))(graphql@16.12.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rxjs@7.8.2))(@swc/core@1.15.32)(@types/node@25.6.0)(graphql@16.12.0)(typescript@5.9.3): + apollo-link-token-refresh@0.7.0(@apollo/client@4.1.5(graphql-ws@6.0.8(@fastify/websocket@11.0.0)(graphql@16.12.0)(ws@8.20.0))(graphql@16.12.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rxjs@7.8.2))(@swc/core@1.15.33)(@types/node@25.6.0)(graphql@16.12.0)(typescript@5.9.3): dependencies: '@apollo/client': 4.1.5(graphql-ws@6.0.8(@fastify/websocket@11.0.0)(graphql@16.12.0)(ws@8.20.0))(graphql@16.12.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rxjs@7.8.2) graphql: 16.12.0 - ts-node: 10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3) + ts-node: 10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3) transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -26942,7 +26970,7 @@ snapshots: '@babel/core': 7.29.0 find-up: 5.0.0 optionalDependencies: - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) babel-messages@6.23.0: dependencies: @@ -27769,7 +27797,7 @@ snapshots: clean-webpack-plugin@4.0.0(webpack@5.106.2): dependencies: del: 4.1.1 - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) cli-boxes@3.0.0: {} @@ -28014,7 +28042,7 @@ snapshots: schema-utils: 4.3.3 serialize-javascript: 7.0.4 tinyglobby: 0.2.15 - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) core-js-compat@3.48.0: dependencies: @@ -28132,13 +28160,13 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.11 - create-jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)): + create-jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -28147,13 +28175,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)): + create-jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)) + jest-config: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -28225,16 +28253,16 @@ snapshots: css-loader@7.1.4(webpack@5.106.2): dependencies: - icss-utils: 5.1.0(postcss@8.5.12) - postcss: 8.5.12 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.12) - postcss-modules-local-by-default: 4.0.5(postcss@8.5.12) - postcss-modules-scope: 3.2.0(postcss@8.5.12) - postcss-modules-values: 4.0.0(postcss@8.5.12) + icss-utils: 5.1.0(postcss@8.5.13) + postcss: 8.5.13 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.13) + postcss-modules-local-by-default: 4.0.5(postcss@8.5.13) + postcss-modules-scope: 3.2.0(postcss@8.5.13) + postcss-modules-values: 4.0.0(postcss@8.5.13) postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) css-select@4.3.0: dependencies: @@ -28825,7 +28853,7 @@ snapshots: dotenv-webpack@9.0.0(webpack@5.106.2): dependencies: dotenv-defaults: 5.0.2 - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) dotenv@14.3.2: {} @@ -28842,7 +28870,7 @@ snapshots: esbuild: 0.25.11 jiti: 2.6.1 - drizzle-orm@1.0.0-beta.15-859cf75(@electric-sql/pglite@0.4.5)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.3))(typescript@6.0.3))(@sinclair/typebox@0.34.49)(@types/mssql@9.1.9(@azure/core-client@1.10.1))(@types/pg@8.15.6)(@upstash/redis@1.37.0)(bun-types@1.3.13)(mssql@11.0.1(@azure/core-client@1.10.1))(mysql2@3.15.3)(pg@8.18.0)(postgres@3.4.9)(prisma@7.4.1(@types/react@19.2.14)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.3))(valibot@1.2.0(typescript@6.0.3))(zod@4.4.1): + drizzle-orm@1.0.0-beta.15-859cf75(@electric-sql/pglite@0.4.5)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.3))(typescript@6.0.3))(@sinclair/typebox@0.34.49)(@types/mssql@9.1.9(@azure/core-client@1.10.1))(@types/pg@8.15.6)(@upstash/redis@1.37.0)(bun-types@1.3.13)(mssql@11.0.1(@azure/core-client@1.10.1))(mysql2@3.15.3)(pg@8.18.0)(postgres@3.4.9)(prisma@7.4.1(@types/react@19.2.14)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.3))(valibot@1.2.0(typescript@6.0.3))(zod@4.4.2): dependencies: '@types/mssql': 9.1.9(@azure/core-client@1.10.1) mssql: 11.0.1(@azure/core-client@1.10.1) @@ -28859,7 +28887,7 @@ snapshots: postgres: 3.4.9 prisma: 7.4.1(@types/react@19.2.14)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.3) valibot: 1.2.0(typescript@6.0.3) - zod: 4.4.1 + zod: 4.4.2 dunder-proto@1.0.1: dependencies: @@ -29278,7 +29306,7 @@ snapshots: esbuild: 0.27.4 get-tsconfig: 4.13.7 loader-utils: 2.0.4 - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) webpack-sources: 3.3.4 esbuild-plugin-lodash@1.2.0: {} @@ -29485,13 +29513,13 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)))(typescript@5.9.3): + eslint-plugin-jest@26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)))(typescript@5.9.3): dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.3) eslint: 8.57.1 optionalDependencies: '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - jest: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)) + jest: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)) transitivePeerDependencies: - supports-color - typescript @@ -29644,7 +29672,7 @@ snapshots: file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - ignore: 5.3.1 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 @@ -30773,7 +30801,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.3.0 optionalDependencies: - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) htmlparser2@10.1.0: dependencies: @@ -30864,9 +30892,9 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.12): + icss-utils@5.1.0(postcss@8.5.13): dependencies: - postcss: 8.5.12 + postcss: 8.5.13 idb@7.1.1: {} @@ -31403,16 +31431,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)): + jest-cli@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)) + create-jest: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -31424,16 +31452,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)): + jest-cli@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)) + create-jest: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)) + jest-config: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -31445,7 +31473,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)): + jest-config@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)): dependencies: '@babel/core': 7.29.0 '@jest/test-sequencer': 29.7.0 @@ -31471,12 +31499,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 25.6.0 - ts-node: 10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3) + ts-node: 10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)): + jest-config@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)): dependencies: '@babel/core': 7.29.0 '@jest/test-sequencer': 29.7.0 @@ -31502,7 +31530,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 25.6.0 - ts-node: 10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3) + ts-node: 10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -31771,12 +31799,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)): + jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3)) + jest-cli: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3)) optionalDependencies: node-notifier: 10.0.1 transitivePeerDependencies: @@ -31785,12 +31813,12 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)): + jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)) + jest-cli: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)) optionalDependencies: node-notifier: 10.0.1 transitivePeerDependencies: @@ -32845,12 +32873,12 @@ snapshots: - bufferutil - utf-8-validate - miniflare@4.20260426.0: + miniflare@4.20260430.0: dependencies: '@cspotcode/source-map-support': 0.8.1 sharp: 0.34.5 undici: 7.24.8 - workerd: 1.20260426.1 + workerd: 1.20260430.1 ws: 8.18.0 youch: 4.1.0-beta.10 transitivePeerDependencies: @@ -32920,10 +32948,10 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.4 - mockzilla-webextension@0.15.0(@types/jest@30.0.0)(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)))(mockzilla@0.14.0(@jest/expect-utils@30.3.0)(chalk@5.6.2)(expect@30.3.0)(jest-diff@30.3.0)(jest-message-util@30.3.0)(jest-validate@29.7.0))(webextension-polyfill@0.12.0): + mockzilla-webextension@0.15.0(@types/jest@30.0.0)(jest@29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)))(mockzilla@0.14.0(@jest/expect-utils@30.3.0)(chalk@5.6.2)(expect@30.3.0)(jest-diff@30.3.0)(jest-message-util@30.3.0)(jest-validate@29.7.0))(webextension-polyfill@0.12.0): dependencies: '@types/jest': 30.0.0 - jest: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)) + jest: 29.7.0(@types/node@25.6.0)(babel-plugin-macros@3.1.0)(node-notifier@10.0.1)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)) mockzilla: 0.14.0(@jest/expect-utils@30.3.0)(chalk@5.6.2)(expect@30.3.0)(jest-diff@30.3.0)(jest-message-util@30.3.0)(jest-validate@29.7.0) webextension-polyfill: 0.12.0 @@ -33866,61 +33894,61 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-import@15.1.0(postcss@8.5.12): + postcss-import@15.1.0(postcss@8.5.13): dependencies: - postcss: 8.5.12 + postcss: 8.5.13 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.11 - postcss-js@4.0.1(postcss@8.5.12): + postcss-js@4.0.1(postcss@8.5.13): dependencies: camelcase-css: 2.0.1 - postcss: 8.5.12 + postcss: 8.5.13 - postcss-load-config@4.0.2(postcss@8.5.12)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)): + postcss-load-config@4.0.2(postcss@8.5.13)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)): dependencies: lilconfig: 3.1.3 yaml: 2.8.3 optionalDependencies: - postcss: 8.5.12 - ts-node: 10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3) + postcss: 8.5.13 + ts-node: 10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3) - postcss-loader@8.2.1(postcss@8.5.12)(typescript@6.0.3)(webpack@5.106.2): + postcss-loader@8.2.1(postcss@8.5.13)(typescript@6.0.3)(webpack@5.106.2): dependencies: cosmiconfig: 9.0.0(typescript@6.0.3) jiti: 2.6.1 - postcss: 8.5.12 + postcss: 8.5.13 semver: 7.7.4 optionalDependencies: - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) transitivePeerDependencies: - typescript - postcss-modules-extract-imports@3.1.0(postcss@8.5.12): + postcss-modules-extract-imports@3.1.0(postcss@8.5.13): dependencies: - postcss: 8.5.12 + postcss: 8.5.13 - postcss-modules-local-by-default@4.0.5(postcss@8.5.12): + postcss-modules-local-by-default@4.0.5(postcss@8.5.13): dependencies: - icss-utils: 5.1.0(postcss@8.5.12) - postcss: 8.5.12 + icss-utils: 5.1.0(postcss@8.5.13) + postcss: 8.5.13 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.0(postcss@8.5.12): + postcss-modules-scope@3.2.0(postcss@8.5.13): dependencies: - postcss: 8.5.12 + postcss: 8.5.13 postcss-selector-parser: 6.1.2 - postcss-modules-values@4.0.0(postcss@8.5.12): + postcss-modules-values@4.0.0(postcss@8.5.13): dependencies: - icss-utils: 5.1.0(postcss@8.5.12) - postcss: 8.5.12 + icss-utils: 5.1.0(postcss@8.5.13) + postcss: 8.5.13 - postcss-nested@6.2.0(postcss@8.5.12): + postcss-nested@6.2.0(postcss@8.5.13): dependencies: - postcss: 8.5.12 + postcss: 8.5.13 postcss-selector-parser: 6.1.2 postcss-selector-parser@6.1.2: @@ -33936,6 +33964,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.13: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postcss@8.5.8: dependencies: nanoid: 3.3.11 @@ -34387,7 +34421,7 @@ snapshots: dependencies: react: 19.2.4 - react-hook-form@7.74.0(react@19.2.4): + react-hook-form@7.75.0(react@19.2.4): dependencies: react: 19.2.4 @@ -35315,7 +35349,7 @@ snapshots: dependencies: neo-async: 2.6.2 optionalDependencies: - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) sax@1.2.4: {} @@ -35957,7 +35991,7 @@ snapshots: style-loader@4.0.0(webpack@5.106.2): dependencies: - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) styled-system@5.1.5: dependencies: @@ -36071,7 +36105,7 @@ snapshots: tailwind-merge@3.5.0: {} - tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)): + tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -36087,11 +36121,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.12 - postcss-import: 15.1.0(postcss@8.5.12) - postcss-js: 4.0.1(postcss@8.5.12) - postcss-load-config: 4.0.2(postcss@8.5.12)(ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3)) - postcss-nested: 6.2.0(postcss@8.5.12) + postcss: 8.5.13 + postcss-import: 15.1.0(postcss@8.5.13) + postcss-js: 4.0.1(postcss@8.5.13) + postcss-load-config: 4.0.2(postcss@8.5.13)(ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3)) + postcss-nested: 6.2.0(postcss@8.5.13) postcss-selector-parser: 6.1.2 resolve: 1.22.11 sucrase: 3.35.0 @@ -36187,15 +36221,15 @@ snapshots: mkdirp: 0.5.6 rimraf: 2.6.3 - terser-webpack-plugin@5.5.0(@swc/core@1.15.32)(esbuild@0.28.0)(webpack@5.106.2): + terser-webpack-plugin@5.5.0(@swc/core@1.15.33)(esbuild@0.28.0)(webpack@5.106.2): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.37.0 - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@4.9.2) optionalDependencies: - '@swc/core': 1.15.32 + '@swc/core': 1.15.33 esbuild: 0.28.0 terser@5.37.0: @@ -36374,7 +36408,7 @@ snapshots: ts-log@3.0.2: {} - ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@5.9.3): + ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -36392,9 +36426,9 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.15.32 + '@swc/core': 1.15.33 - ts-node@10.9.2(@swc/core@1.15.32)(@types/node@25.6.0)(typescript@6.0.3): + ts-node@10.9.2(@swc/core@1.15.33)(@types/node@25.6.0)(typescript@6.0.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -36412,7 +36446,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.15.32 + '@swc/core': 1.15.33 ts-object-utils@0.0.5: {} @@ -36459,14 +36493,14 @@ snapshots: tunnel@0.0.6: {} - turbo@2.9.6: + turbo@2.9.8: optionalDependencies: - '@turbo/darwin-64': 2.9.6 - '@turbo/darwin-arm64': 2.9.6 - '@turbo/linux-64': 2.9.6 - '@turbo/linux-arm64': 2.9.6 - '@turbo/windows-64': 2.9.6 - '@turbo/windows-arm64': 2.9.6 + '@turbo/darwin-64': 2.9.8 + '@turbo/darwin-arm64': 2.9.8 + '@turbo/linux-64': 2.9.8 + '@turbo/linux-arm64': 2.9.8 + '@turbo/windows-64': 2.9.8 + '@turbo/windows-arm64': 2.9.8 tweetnacl@0.14.5: {} @@ -36664,10 +36698,10 @@ snapshots: unpipe@1.0.0: {} - unplugin-swc@1.5.9(@swc/core@1.15.32)(rollup@4.46.4): + unplugin-swc@1.5.9(@swc/core@1.15.33)(rollup@4.46.4): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.46.4) - '@swc/core': 1.15.32 + '@swc/core': 1.15.33 load-tsconfig: 0.2.5 unplugin: 2.3.11 transitivePeerDependencies: @@ -37108,7 +37142,7 @@ snapshots: import-local: 3.1.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@4.9.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@4.9.2) webpack-merge: 5.10.0 webpack-cli@7.0.2(webpack-bundle-analyzer@5.3.0)(webpack@5.106.2): @@ -37121,7 +37155,7 @@ snapshots: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) webpack-merge: 6.0.1 optionalDependencies: webpack-bundle-analyzer: 5.3.0 @@ -37138,7 +37172,7 @@ snapshots: minimist: 1.2.8 useragent: 2.3.0 webextension-polyfill: 0.12.0 - webpack: 5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2) + webpack: 5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2) webpack-sources: 3.2.3 ws: 8.17.1 transitivePeerDependencies: @@ -37163,7 +37197,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@4.9.2): + webpack@5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@4.9.2): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -37186,7 +37220,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.5.0(@swc/core@1.15.32)(esbuild@0.28.0)(webpack@5.106.2) + terser-webpack-plugin: 5.5.0(@swc/core@1.15.33)(esbuild@0.28.0)(webpack@5.106.2) watchpack: 2.5.1 webpack-sources: 3.3.4 optionalDependencies: @@ -37196,7 +37230,7 @@ snapshots: - esbuild - uglify-js - webpack@5.106.2(@swc/core@1.15.32)(esbuild@0.28.0)(webpack-cli@7.0.2): + webpack@5.106.2(@swc/core@1.15.33)(esbuild@0.28.0)(webpack-cli@7.0.2): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -37219,7 +37253,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.5.0(@swc/core@1.15.32)(esbuild@0.28.0)(webpack@5.106.2) + terser-webpack-plugin: 5.5.0(@swc/core@1.15.33)(esbuild@0.28.0)(webpack@5.106.2) watchpack: 2.5.1 webpack-sources: 3.3.4 optionalDependencies: @@ -37374,13 +37408,13 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20260317.1 '@cloudflare/workerd-windows-64': 1.20260317.1 - workerd@1.20260426.1: + workerd@1.20260430.1: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20260426.1 - '@cloudflare/workerd-darwin-arm64': 1.20260426.1 - '@cloudflare/workerd-linux-64': 1.20260426.1 - '@cloudflare/workerd-linux-arm64': 1.20260426.1 - '@cloudflare/workerd-windows-64': 1.20260426.1 + '@cloudflare/workerd-darwin-64': 1.20260430.1 + '@cloudflare/workerd-darwin-arm64': 1.20260430.1 + '@cloudflare/workerd-linux-64': 1.20260430.1 + '@cloudflare/workerd-linux-arm64': 1.20260430.1 + '@cloudflare/workerd-windows-64': 1.20260430.1 wouter@3.9.0(react@19.2.4): dependencies: @@ -37405,16 +37439,16 @@ snapshots: - bufferutil - utf-8-validate - wrangler@4.86.0: + wrangler@4.87.0: dependencies: - '@cloudflare/kv-asset-handler': 0.4.2 - '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260426.1) + '@cloudflare/kv-asset-handler': 0.5.0 + '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260430.1) blake3-wasm: 2.1.5 esbuild: 0.27.3 - miniflare: 4.20260426.0 + miniflare: 4.20260430.0 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.24 - workerd: 1.20260426.1 + workerd: 1.20260430.1 optionalDependencies: fsevents: 2.3.3 transitivePeerDependencies: @@ -37679,9 +37713,7 @@ snapshots: async: 3.2.4 jszip: 3.10.1 - zod@4.3.6: {} - - zod@4.4.1: {} + zod@4.4.2: {} zustand@4.5.7(@types/react@19.2.14)(react@19.2.4): dependencies: diff --git a/shared/totp.ts b/shared/totp.ts new file mode 100644 index 00000000..c1d1cc88 --- /dev/null +++ b/shared/totp.ts @@ -0,0 +1,281 @@ +import { generateSync } from 'otplib' + +export type TotpOptions = { + secret: string + digits?: number + period?: number + now?: number +} + +const base32Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567' +const minHmacSecretByteLength = 16 + +export const normalizeBase32Secret = (secret: string) => + secret.toUpperCase().replace(/[\s=-]/g, '') + +export const decodeBase32Secret = (secret: string): Uint8Array | null => { + const normalizedSecret = normalizeBase32Secret(secret) + + if (!normalizedSecret) { + return null + } + + let value = 0 + let bits = 0 + const bytes: number[] = [] + + for (const character of normalizedSecret) { + const characterIndex = base32Alphabet.indexOf(character) + + if (characterIndex === -1) { + return null + } + + value = (value << 5) | characterIndex + bits += 5 + + while (bits >= 8) { + bits -= 8 + bytes.push((value >> bits) & 0xff) + value &= (1 << bits) - 1 + } + } + + return new Uint8Array(bytes) +} + +const encodeCounter = (counter: number) => { + const bytes = new Uint8Array(8) + let remaining = BigInt(counter) + + for (let index = bytes.length - 1; index >= 0; index -= 1) { + bytes[index] = Number(remaining & 0xffn) + remaining >>= 8n + } + + return bytes +} + +const normalizeLegacyHmacKey = (secretBytes: Uint8Array) => { + if (secretBytes.length >= minHmacSecretByteLength) { + return secretBytes + } + + const paddedSecretBytes = new Uint8Array(minHmacSecretByteLength) + paddedSecretBytes.set(secretBytes) + + return paddedSecretBytes +} + +const rotateLeft = (value: number, bits: number) => + (value << bits) | (value >>> (32 - bits)) + +const sha1 = (message: Uint8Array) => { + const bitLength = message.length * 8 + const paddedLength = Math.ceil((message.length + 9) / 64) * 64 + const paddedMessage = new Uint8Array(paddedLength) + paddedMessage.set(message) + paddedMessage[message.length] = 0x80 + + const view = new DataView(paddedMessage.buffer) + view.setUint32(paddedLength - 8, Math.floor(bitLength / 2 ** 32)) + view.setUint32(paddedLength - 4, bitLength) + + let h0 = 0x67452301 + let h1 = 0xefcdab89 + let h2 = 0x98badcfe + let h3 = 0x10325476 + let h4 = 0xc3d2e1f0 + const words = new Uint32Array(80) + + for (let chunkOffset = 0; chunkOffset < paddedLength; chunkOffset += 64) { + for (let index = 0; index < 16; index += 1) { + words[index] = view.getUint32(chunkOffset + index * 4) + } + + for (let index = 16; index < 80; index += 1) { + words[index] = rotateLeft( + words[index - 3] ^ + words[index - 8] ^ + words[index - 14] ^ + words[index - 16], + 1 + ) + } + + let a = h0 + let b = h1 + let c = h2 + let d = h3 + let e = h4 + + for (let index = 0; index < 80; index += 1) { + let f = 0 + let k = 0 + + if (index < 20) { + f = (b & c) | (~b & d) + k = 0x5a827999 + } else if (index < 40) { + f = b ^ c ^ d + k = 0x6ed9eba1 + } else if (index < 60) { + f = (b & c) | (b & d) | (c & d) + k = 0x8f1bbcdc + } else { + f = b ^ c ^ d + k = 0xca62c1d6 + } + + const temp = (rotateLeft(a, 5) + f + e + k + words[index]) >>> 0 + e = d + d = c + c = rotateLeft(b, 30) >>> 0 + b = a + a = temp + } + + h0 = (h0 + a) >>> 0 + h1 = (h1 + b) >>> 0 + h2 = (h2 + c) >>> 0 + h3 = (h3 + d) >>> 0 + h4 = (h4 + e) >>> 0 + } + + const hash = new Uint8Array(20) + const hashView = new DataView(hash.buffer) + hashView.setUint32(0, h0) + hashView.setUint32(4, h1) + hashView.setUint32(8, h2) + hashView.setUint32(12, h3) + hashView.setUint32(16, h4) + + return hash +} + +const hmacSha1 = (key: Uint8Array, message: Uint8Array) => { + const blockSize = 64 + const normalizedKey = new Uint8Array(blockSize) + const blockKey = key.length > blockSize ? sha1(key) : key + normalizedKey.set(blockKey) + + const outerPad = new Uint8Array(blockSize) + const innerPad = new Uint8Array(blockSize) + + for (let index = 0; index < blockSize; index += 1) { + outerPad[index] = normalizedKey[index] ^ 0x5c + innerPad[index] = normalizedKey[index] ^ 0x36 + } + + const innerMessage = new Uint8Array(innerPad.length + message.length) + innerMessage.set(innerPad) + innerMessage.set(message, innerPad.length) + + const innerHash = sha1(innerMessage) + const outerMessage = new Uint8Array(outerPad.length + innerHash.length) + outerMessage.set(outerPad) + outerMessage.set(innerHash, outerPad.length) + + return sha1(outerMessage) +} + +const generateLegacyTotpToken = ({ + secret, + digits, + period, + now +}: Required): string | null => { + const secretBytes = decodeBase32Secret(secret) + + if (secretBytes === null) { + return null + } + + const counter = Math.floor(Math.round(now / 1000.0) / period) + const signature = hmacSha1( + normalizeLegacyHmacKey(secretBytes), + encodeCounter(counter) + ) + const offset = signature[signature.length - 1] & 0x0f + const binaryCode = + ((signature[offset] & 0x7f) << 24) | + (signature[offset + 1] << 16) | + (signature[offset + 2] << 8) | + signature[offset + 3] + + return (binaryCode % 10 ** digits).toString().padStart(digits, '0') +} + +export const generateTotpToken = async ({ + secret, + digits = 6, + period = 30, + now = Date.now() +}: TotpOptions): Promise => { + if (!Number.isInteger(digits) || digits <= 0) { + return null + } + + if (!Number.isInteger(period) || period <= 0) { + return null + } + + const secretBytes = decodeBase32Secret(secret) + + if (secretBytes === null) { + return null + } + + if (secretBytes.length < minHmacSecretByteLength) { + return generateLegacyTotpToken({ + secret, + digits, + period, + now + }) + } + + return generateSync({ + secret, + digits, + period, + epoch: Math.floor(now / 1000) + }) +} + +export const generateTotpTokenSync = ({ + secret, + digits = 6, + period = 30, + now = Date.now() +}: TotpOptions) => { + if (!Number.isInteger(digits) || digits <= 0) { + return null + } + + if (!Number.isInteger(period) || period <= 0) { + return null + } + + const secretBytes = decodeBase32Secret(secret) + + if (secretBytes === null) { + return null + } + + if (secretBytes.length < minHmacSecretByteLength) { + return generateLegacyTotpToken({ + secret, + digits, + period, + now + }) + } + + return generateSync({ + secret, + digits, + period, + epoch: Math.floor(now / 1000) + }) +} diff --git a/vault-web/package.json b/vault-web/package.json index de97892c..b22d56b7 100644 --- a/vault-web/package.json +++ b/vault-web/package.json @@ -34,7 +34,7 @@ "react-hook-form": "^7.72.0", "react-router-dom": "^7.6.2", "tailwind-merge": "^3.5.0", - "zod": "^4.3.6" + "zod": "^4.4.2" }, "devDependencies": { "@tailwindcss/vite": "^4.2.2", diff --git a/vault-web/src/lib/totp.spec.ts b/vault-web/src/lib/totp.spec.ts index e013ee2b..4397cebc 100644 --- a/vault-web/src/lib/totp.spec.ts +++ b/vault-web/src/lib/totp.spec.ts @@ -1,5 +1,9 @@ import { describe, expect, it } from 'vitest' -import { formatTotpToken, generateTotpToken, getTotpRemainingSeconds } from './totp' +import { + formatTotpToken, + generateTotpToken, + getTotpRemainingSeconds +} from './totp' describe('totp helpers', () => { it('generates the expected 6-digit token for a known RFC test vector', async () => { @@ -13,6 +17,17 @@ describe('totp helpers', () => { expect(token).toBe('287082') }) + it('generates tokens for legacy short secrets', async () => { + const token = await generateTotpToken({ + secret: 'JBSWY3DPEHPK3PXP', + digits: 6, + period: 30, + now: 59_000 + }) + + expect(token).toBe('996554') + }) + it('formats tokens into readable groups', () => { expect(formatTotpToken('287082')).toBe('287 082') expect(formatTotpToken('12345678')).toBe('123 456 78') diff --git a/vault-web/src/lib/totp.ts b/vault-web/src/lib/totp.ts index 58393532..5db8b644 100644 --- a/vault-web/src/lib/totp.ts +++ b/vault-web/src/lib/totp.ts @@ -1,4 +1,4 @@ -import { generateSync } from 'otplib' +import { generateTotpToken as generateSharedTotpToken } from '@shared/totp' type TotpOptions = { secret: string @@ -7,97 +7,10 @@ type TotpOptions = { now?: number } -export const formatTotpToken = (token: string) => token.match(/.{1,3}/g)?.join(' ') ?? token +export const formatTotpToken = (token: string) => + token.match(/.{1,3}/g)?.join(' ') ?? token -const base32Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567' - -const normalizeBase32Secret = (secret: string) => - secret.toUpperCase().replace(/[\s=-]/g, '') - -const decodeBase32Secret = (secret: string): Uint8Array | null => { - const normalizedSecret = normalizeBase32Secret(secret) - - if (!normalizedSecret) { - return null - } - - let value = 0 - let bits = 0 - const bytes: number[] = [] - - for (const character of normalizedSecret) { - const characterIndex = base32Alphabet.indexOf(character) - - if (characterIndex === -1) { - return null - } - - value = (value << 5) | characterIndex - bits += 5 - - while (bits >= 8) { - bits -= 8 - bytes.push((value >> bits) & 0xff) - value &= (1 << bits) - 1 - } - } - - return new Uint8Array(bytes) -} - -const encodeCounter = (counter: number) => { - const bytes = new Uint8Array(8) - let remaining = BigInt(counter) - - for (let index = bytes.length - 1; index >= 0; index -= 1) { - bytes[index] = Number(remaining & 0xffn) - remaining >>= 8n - } - - return bytes -} - -const generateTotpTokenManually = async ({ - secret, - digits, - period, - now -}: Required): Promise => { - const secretBytes = decodeBase32Secret(secret) - - if (secretBytes === null) { - return null - } - - const counter = Math.floor(Math.floor(now / 1000) / period) - const normalizedSecretBytes = secretBytes.slice() - const key = await crypto.subtle.importKey( - 'raw', - normalizedSecretBytes, - { - name: 'HMAC', - hash: 'SHA-1' - }, - false, - ['sign'] - ) - const signature = new Uint8Array( - await crypto.subtle.sign('HMAC', key, encodeCounter(counter)) - ) - const offset = signature[signature.length - 1] & 0x0f - const binaryCode = - ((signature[offset] & 0x7f) << 24) | - (signature[offset + 1] << 16) | - (signature[offset + 2] << 8) | - signature[offset + 3] - - return (binaryCode % 10 ** digits).toString().padStart(digits, '0') -} - -export const getTotpRemainingSeconds = ( - period: number, - now = Date.now() -) => { +export const getTotpRemainingSeconds = (period: number, now = Date.now()) => { if (!Number.isInteger(period) || period <= 0) { return 0 } @@ -111,28 +24,5 @@ export const generateTotpToken = async ({ digits, period, now = Date.now() -}: TotpOptions): Promise => { - if (!Number.isInteger(digits) || digits <= 0) { - return null - } - - if (!Number.isInteger(period) || period <= 0) { - return null - } - - try { - return generateSync({ - secret, - digits, - period, - epoch: Math.floor(now / 1000) - }) - } catch { - return generateTotpTokenManually({ - secret, - digits, - period, - now - }) - } -} +}: TotpOptions): Promise => + generateSharedTotpToken({ secret, digits, period, now }) diff --git a/web-extension/lingui.config.ts b/web-extension/lingui.config.ts index cb6ad41d..80e0bdce 100755 --- a/web-extension/lingui.config.ts +++ b/web-extension/lingui.config.ts @@ -1,3 +1,5 @@ +import { formatter } from '@lingui/format-po' + export default { catalogs: [ { @@ -13,6 +15,5 @@ export default { fallbackLocales: { pseudo: 'en' }, - format: 'po', - formatOptions: { origins: true, lineNumbers: false } + format: formatter({ origins: true, lineNumbers: false }) } diff --git a/web-extension/package.json b/web-extension/package.json index 52fcea80..47200e31 100755 --- a/web-extension/package.json +++ b/web-extension/package.json @@ -42,11 +42,11 @@ ], "devDependencies": { "@babel/core": "^7.29.0", - "@babel/preset-env": "^7.29.2", + "@babel/preset-env": "^7.29.3", "@babel/preset-react": "^7.28.5", "@babel/preset-typescript": "^7.28.5", - "@lingui/react": "^6.0.0", - "@lingui/vite-plugin": "^6.0.0", + "@lingui/react": "^6.0.1", + "@lingui/vite-plugin": "^6.0.1", "@playwright/test": "^1.59.1", "@svgr/webpack": "^8.1.0", "@types/chrome": "^0.1.40", @@ -115,7 +115,7 @@ "@emotion/css": "^11.13.5", "@emotion/styled": "11.14.1", "@hookform/resolvers": "^5.2.2", - "@lingui/cli": "^6.0.0", + "@lingui/cli": "^6.0.1", "@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-tooltip": "^1.2.8", "@sentry/browser": "^10.51.0", @@ -143,7 +143,7 @@ "notyf": "^3.10.0", "otplib": "^13.4.0", "pbkdf2": "3.1.5", - "postcss": "^8.5.12", + "postcss": "^8.5.13", "postcss-loader": "^8.2.1", "preact": "^10.29.1", "query-string": "^9", @@ -152,7 +152,7 @@ "react-device-detect": "^2.2.3", "react-dom": "^19.2.4", "react-grab": "^0.1.32", - "react-hook-form": "^7.74.0", + "react-hook-form": "^7.75.0", "react-icons": "^5.6.0", "react-qr-code": "^2.0.21", "react-router-dom": "7.6.2", diff --git a/web-extension/src/components/pages/AuthsList.tsx b/web-extension/src/components/pages/AuthsList.tsx index fafaf630..d7c19932 100644 --- a/web-extension/src/components/pages/AuthsList.tsx +++ b/web-extension/src/components/pages/AuthsList.tsx @@ -2,7 +2,6 @@ import { useContext, useEffect, useState } from 'react' import { t } from '@lingui/core/macro' import browser from 'webextension-polyfill' import debug from 'debug' -import { generateSync } from 'otplib' import { TbAuth2Fa } from 'react-icons/tb' import { IoBanOutline, IoCopyOutline } from 'react-icons/io5' import { DeviceStateContext } from '@src/providers/DeviceStateProvider' @@ -19,6 +18,7 @@ import { SquareMousePointer } from './SquareMousePointerIcon' import { useRemoveWebInputMutation } from '../vault/VaultItemSettings.codegen' import { device } from '@src/background/ExtensionDevice' import { getWebInputsForUrl } from '@src/background/getWebInputsForUrl' +import { generateTotpTokenSync } from '@shared/totp' const log = debug('au:AuthsList') @@ -32,11 +32,14 @@ const OtpCode = ({ totpSecret }: { totpSecret: ITOTPSecret }) => { let otpCode = '' let otpCodeError: string | null = null - try { - otpCode = generateSync({ secret: totpSecret.totp.secret }) - } catch (err) { - otpCodeError = - err instanceof Error ? err.message : t`Failed to generate OTP code` + const generatedOtpCode = generateTotpTokenSync({ + secret: totpSecret.totp.secret + }) + + if (generatedOtpCode === null) { + otpCodeError = t`Failed to generate OTP code` + } else { + otpCode = generatedOtpCode } useEffect(() => { diff --git a/web-extension/src/components/vault/secretUtils.ts b/web-extension/src/components/vault/secretUtils.ts index 0f772277..a2b79809 100644 --- a/web-extension/src/components/vault/secretUtils.ts +++ b/web-extension/src/components/vault/secretUtils.ts @@ -1,11 +1,13 @@ -import { getDecryptedSecretProp, type SecretTypeUnion } from '@src/background/ExtensionDevice' +import { + getDecryptedSecretProp, + type SecretTypeUnion +} from '@src/background/ExtensionDevice' import { EncryptedSecretType } from '@shared/generated/graphqlBaseTypes' import type { ITOTPSecret } from '@src/util/useDeviceState' -import { generateSync } from 'otplib' +import { generateTotpTokenSync } from '@shared/totp' -export const isTotpSecret = ( - secret: SecretTypeUnion -): secret is ITOTPSecret => secret.kind === EncryptedSecretType.TOTP +export const isTotpSecret = (secret: SecretTypeUnion): secret is ITOTPSecret => + secret.kind === EncryptedSecretType.TOTP export const getSecretLabel = (secret: SecretTypeUnion) => getDecryptedSecretProp(secret, 'label') || 'Untitled' @@ -17,7 +19,9 @@ export const getSecretUsername = (secret: SecretTypeUnion) => isTotpSecret(secret) ? '' : getDecryptedSecretProp(secret, 'username') export const getSecretValue = (secret: SecretTypeUnion) => - isTotpSecret(secret) ? secret.totp.secret : getDecryptedSecretProp(secret, 'password') + isTotpSecret(secret) + ? secret.totp.secret + : getDecryptedSecretProp(secret, 'password') export const getMaskedSecretValue = (secret: SecretTypeUnion) => '*'.repeat(Math.max(getSecretValue(secret).length, 8)) @@ -27,7 +31,8 @@ export const getSecretKindLabel = (secret: SecretTypeUnion) => export const getSecretCopyValue = (secret: SecretTypeUnion) => isTotpSecret(secret) - ? generateSync({ secret: secret.totp.secret }) + ? (generateTotpTokenSync({ secret: secret.totp.secret }) ?? + secret.totp.secret) : getDecryptedSecretProp(secret, 'password') export const getNavigableSecretUrl = (secret: SecretTypeUnion) => { diff --git a/web-extension/src/content-script/autofill.ts b/web-extension/src/content-script/autofill.ts index 8d7184d5..9edb98b3 100755 --- a/web-extension/src/content-script/autofill.ts +++ b/web-extension/src/content-script/autofill.ts @@ -1,5 +1,4 @@ import { bodyInputChangeEmitter } from './domMutationObserver' -import { generateSync } from 'otplib' import debug from 'debug' import { generate } from 'generate-password' import { isElementVisibleInViewport } from './isElementInViewport' @@ -36,6 +35,7 @@ import { appendGeneratedPasswordHistoryEntry, createGeneratedPasswordHistoryEntry } from '@src/util/generatedPasswordHistory' +import { generateTotpTokenSync } from '@shared/totp' const log = debug('au:autofill') @@ -47,12 +47,13 @@ export type IDecryptedSecrets = { export const autofillEventsDispatched = new Set() function safeGenerateTotpCode(totpSecret: ITOTPSecret) { - try { - return generateSync({ secret: totpSecret.totp.secret }) - } catch (error) { - log('failed to generate totp code', error) - return null + const otpCode = generateTotpTokenSync({ secret: totpSecret.totp.secret }) + + if (otpCode === null) { + log('failed to generate totp code') } + + return otpCode } function findSegmentedTotpInputs(usefulInputs: HTMLInputElement[]) {