From 01b09da2af43e82255ce783e62638b319f8ef02f Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 07:19:51 +0000 Subject: [PATCH 01/48] Added lingui --- browser/package.json | 4 ++- pnpm-lock.yaml | 70 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/browser/package.json b/browser/package.json index 15c16ac3..0e2dead9 100644 --- a/browser/package.json +++ b/browser/package.json @@ -21,6 +21,8 @@ "@cloudflare/vite-plugin": "1.13.13", "@dpkit/library": "workspace:*", "@dpkit/service": "workspace:*", + "@lingui/core": "5.5.2", + "@lingui/react": "5.5.2", "@loglayer/transport-tslog": "3.0.4", "@mantine/core": "8.3.5", "@mantine/form": "8.3.5", @@ -29,7 +31,7 @@ "@react-router/dev": "7.9.4", "@tanstack/react-query": "5.90.3", "@types/react": "19.2.2", - "@types/react-dom": "^19.2.0", + "@types/react-dom": "19.2.0", "concurrently": "9.2.1", "es-toolkit": "1.39.10", "i18next": "25.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 04788edf..0f17044a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,6 +80,12 @@ importers: '@dpkit/service': specifier: workspace:* version: link:../service + '@lingui/core': + specifier: 5.5.2 + version: 5.5.2 + '@lingui/react': + specifier: 5.5.2 + version: 5.5.2(react@19.2.0) '@loglayer/transport-tslog': specifier: 3.0.4 version: 3.0.4(tslog@4.10.2) @@ -105,7 +111,7 @@ importers: specifier: 19.2.2 version: 19.2.2 '@types/react-dom': - specifier: ^19.2.0 + specifier: 19.2.0 version: 19.2.0(@types/react@19.2.2) concurrently: specifier: 9.2.1 @@ -1448,6 +1454,35 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@lingui/core@5.5.2': + resolution: {integrity: sha512-YhKdfXOSEr64mEsPL7DbgGhoXJhI+DSysZHA43K9ZuG322JEql+luvRZpH/NobLBMiM1SjoLVWazEsqIkGuPDQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@lingui/babel-plugin-lingui-macro': 5.5.2 + babel-plugin-macros: 2 || 3 + peerDependenciesMeta: + '@lingui/babel-plugin-lingui-macro': + optional: true + babel-plugin-macros: + optional: true + + '@lingui/message-utils@5.5.2': + resolution: {integrity: sha512-0/xu0nAzYm4ZLUHAdowkTLcP2iM+UOuFEpIsJ40iOIYgHeub1idtn8EFnliCiN83rfrcMaPK63MgGKmyTI4Umg==} + engines: {node: '>=20.0.0'} + + '@lingui/react@5.5.2': + resolution: {integrity: sha512-ZX0ubBM66m11lVErQNP3EfWbfVgfW74Lm/iOXeT1kHm+HuwIOrbulDD0v7JsbeH6TUSE+LXYImtGuEwnN9IxGQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@lingui/babel-plugin-lingui-macro': 5.5.2 + babel-plugin-macros: 2 || 3 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@lingui/babel-plugin-lingui-macro': + optional: true + babel-plugin-macros: + optional: true + '@loglayer/context-manager@1.1.6': resolution: {integrity: sha512-kntdCN9MtNctoMpDBMk9D1begChINbdYJNso5YLB0bbKNIy819rKfarSn7Xmtcq0aBxFUHPp04wj6XnvWseFOQ==} engines: {node: '>=18'} @@ -1490,6 +1525,9 @@ packages: '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + '@messageformat/parser@5.1.1': + resolution: {integrity: sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg==} + '@mjackson/node-fetch-server@0.2.0': resolution: {integrity: sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng==} @@ -3762,6 +3800,9 @@ packages: resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==} engines: {node: '>= 0.6.0'} + js-sha256@0.10.1: + resolution: {integrity: sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -4192,6 +4233,9 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + moo@0.5.2: + resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} + morgan@1.10.1: resolution: {integrity: sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==} engines: {node: '>= 0.8.0'} @@ -7112,6 +7156,22 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@lingui/core@5.5.2': + dependencies: + '@babel/runtime': 7.28.4 + '@lingui/message-utils': 5.5.2 + + '@lingui/message-utils@5.5.2': + dependencies: + '@messageformat/parser': 5.1.1 + js-sha256: 0.10.1 + + '@lingui/react@5.5.2(react@19.2.0)': + dependencies: + '@babel/runtime': 7.28.4 + '@lingui/core': 5.5.2 + react: 19.2.0 + '@loglayer/context-manager@1.1.6': dependencies: '@loglayer/shared': 2.5.3 @@ -7185,6 +7245,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@messageformat/parser@5.1.1': + dependencies: + moo: 0.5.2 + '@mjackson/node-fetch-server@0.2.0': {} '@npmcli/git@4.1.0': @@ -9830,6 +9894,8 @@ snapshots: java-properties@1.0.2: {} + js-sha256@0.10.1: {} + js-tokens@4.0.0: {} js-tokens@9.0.1: {} @@ -10520,6 +10586,8 @@ snapshots: minipass@7.1.2: {} + moo@0.5.2: {} + morgan@1.10.1: dependencies: basic-auth: 2.0.1 From fbf50844697d92eeb024ef1f477c83fa80749a27 Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 07:28:36 +0000 Subject: [PATCH 02/48] Moved logger to services --- browser/package.json | 1 + browser/{ => services}/logger.ts | 0 pnpm-lock.yaml | 636 ++++++++++++++++++++++++++++--- 3 files changed, 574 insertions(+), 63 deletions(-) rename browser/{ => services}/logger.ts (100%) diff --git a/browser/package.json b/browser/package.json index 0e2dead9..2533a1b9 100644 --- a/browser/package.json +++ b/browser/package.json @@ -21,6 +21,7 @@ "@cloudflare/vite-plugin": "1.13.13", "@dpkit/library": "workspace:*", "@dpkit/service": "workspace:*", + "@lingui/cli": "5.5.2", "@lingui/core": "5.5.2", "@lingui/react": "5.5.2", "@loglayer/transport-tslog": "3.0.4", diff --git a/browser/logger.ts b/browser/services/logger.ts similarity index 100% rename from browser/logger.ts rename to browser/services/logger.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f17044a..eed0f1f5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,10 +49,10 @@ importers: version: 5.9.2 vite: specifier: 7.1.10 - version: 7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + version: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) vitest: specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) vitest-polly: specifier: 1.3.0 version: 1.3.0(vitest@3.2.4) @@ -73,19 +73,22 @@ importers: version: 0.0.28 '@cloudflare/vite-plugin': specifier: 1.13.13 - version: 1.13.13(vite@7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20251008.0)(wrangler@4.43.0) + version: 1.13.13(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20251008.0)(wrangler@4.43.0) '@dpkit/library': specifier: workspace:* version: link:../library '@dpkit/service': specifier: workspace:* version: link:../service + '@lingui/cli': + specifier: 5.5.2 + version: 5.5.2(typescript@5.9.2) '@lingui/core': specifier: 5.5.2 - version: 5.5.2 + version: 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)) '@lingui/react': specifier: 5.5.2 - version: 5.5.2(react@19.2.0) + version: 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2))(react@19.2.0) '@loglayer/transport-tslog': specifier: 3.0.4 version: 3.0.4(tslog@4.10.2) @@ -103,7 +106,7 @@ importers: version: 1.10.0 '@react-router/dev': specifier: 7.9.4 - version: 7.9.4(@types/node@24.2.0)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1) + version: 7.9.4(@types/node@24.2.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1) '@tanstack/react-query': specifier: 5.90.3 version: 5.90.3(react@19.2.0) @@ -184,10 +187,10 @@ importers: version: 1.1.2(@types/react-dom@19.2.0(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) vite-plugin-devtools-json: specifier: 1.0.0 - version: 1.0.0(vite@7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) + version: 1.0.0(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) vite-plugin-svgr: specifier: 4.5.0 - version: 4.5.0(rollup@4.52.4)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) + version: 4.5.0(rollup@4.52.4)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) wrangler: specifier: 4.43.0 version: 4.43.0 @@ -388,25 +391,25 @@ importers: devDependencies: '@astrojs/starlight': specifier: 0.36.0 - version: 0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) + version: 0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) astro: specifier: 5.14.1 - version: 5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1) + version: 5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1) sharp: specifier: 0.34.2 version: 0.34.2 starlight-changelogs: specifier: 0.1.1 - version: 0.1.1(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)))(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) + version: 0.1.1(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)))(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) starlight-github-alerts: specifier: 0.1.0 - version: 0.1.0(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))) + version: 0.1.0(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))) starlight-scroll-to-top: specifier: 0.3.1 - version: 0.3.1(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))) + version: 0.3.1(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))) starlight-typedoc: specifier: 0.21.3 - version: 0.21.3(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)))(typedoc-plugin-markdown@4.8.0(typedoc@0.28.9(typescript@5.9.2)))(typedoc@0.28.9(typescript@5.9.2)) + version: 0.21.3(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)))(typedoc-plugin-markdown@4.8.0(typedoc@0.28.9(typescript@5.9.2)))(typedoc@0.28.9(typescript@5.9.2)) typedoc: specifier: 0.28.9 version: 0.28.9(typescript@5.9.2) @@ -1427,6 +1430,14 @@ packages: cpu: [x64] os: [win32] + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1435,6 +1446,14 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1454,6 +1473,28 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@lingui/babel-plugin-extract-messages@5.5.2': + resolution: {integrity: sha512-b28GCdzUqAUCdWUdkn99SckJV//ZTvvBSlV5r8EE1G8y1DMckUvehb0FAg2nDScMK7EfMf0WOovC7IkLu8XQuw==} + engines: {node: '>=20.0.0'} + + '@lingui/babel-plugin-lingui-macro@5.5.2': + resolution: {integrity: sha512-Lre6bsq1yOA4HqHwG0D53yThM2qOdqKSuyPHt4gi6CmbHYHvY7gt+idBAyDYqZBlPa5+HweIT6fbqMKIGcEQcA==} + engines: {node: '>=20.0.0'} + peerDependencies: + babel-plugin-macros: 2 || 3 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + '@lingui/cli@5.5.2': + resolution: {integrity: sha512-Rqq3vQHB7rbIdN6AL1Ww8SLSbU8hCoN2O0zCyI9g18RKMzr3uGokoC2pFzt4Gb0brfKVTi96vsV5y1iflAH6cQ==} + engines: {node: '>=20.0.0'} + hasBin: true + + '@lingui/conf@5.5.2': + resolution: {integrity: sha512-5VmysChghYKNVE4cbio1/v8TVYmB8Ex/0WMqPiAGMxyGufgcet31ZnmTl1YfnAv7fSnIcYIQ3MUhXnkcSSsDSQ==} + engines: {node: '>=20.0.0'} + '@lingui/core@5.5.2': resolution: {integrity: sha512-YhKdfXOSEr64mEsPL7DbgGhoXJhI+DSysZHA43K9ZuG322JEql+luvRZpH/NobLBMiM1SjoLVWazEsqIkGuPDQ==} engines: {node: '>=20.0.0'} @@ -1466,6 +1507,10 @@ packages: babel-plugin-macros: optional: true + '@lingui/format-po@5.5.2': + resolution: {integrity: sha512-xqkrCzsdFlUxxa2WPEB1kJGUsH3iyzjzcMsNjE7VTRv6rddGwt9mEKfqO+VAKIXcbmGKHWMcvQ6bqzhlqTlACA==} + engines: {node: '>=20.0.0'} + '@lingui/message-utils@5.5.2': resolution: {integrity: sha512-0/xu0nAzYm4ZLUHAdowkTLcP2iM+UOuFEpIsJ40iOIYgHeub1idtn8EFnliCiN83rfrcMaPK63MgGKmyTI4Umg==} engines: {node: '>=20.0.0'} @@ -2202,6 +2247,9 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sindresorhus/fnv1a@2.0.1': resolution: {integrity: sha512-suq9tRQ6bkpMukTG5K5z0sPWB7t0zExMzZCdmYm6xTSSIm/yCKNm7VCL36wVeyTsFr597/UhU1OAYdHGMDiHrw==} engines: {node: '>=10'} @@ -2328,6 +2376,15 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} @@ -2384,6 +2441,12 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.34': + resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==} + '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -2491,6 +2554,10 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + ansi-styles@6.2.3: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} @@ -2597,6 +2664,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + blake3-wasm@2.1.5: resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} @@ -2641,6 +2711,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + bun-types@1.3.1: resolution: {integrity: sha512-NMrcy7smratanWJ2mMXdpatalovtxVggkj11bScuWuiOoXTiKIu2eVS1/7qbyI/4yHedtsn175n4Sm4JcdHLXw==} peerDependencies: @@ -2723,6 +2796,10 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + chokidar@3.5.1: + resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==} + engines: {node: '>= 8.10.0'} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -2750,6 +2827,10 @@ packages: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + cli-cursor@4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2759,10 +2840,18 @@ packages: engines: {node: '>=8.0.0', npm: '>=5.0.0'} hasBin: true + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + cli-table3@0.6.5: resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} + cli-table@0.3.11: + resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} + engines: {node: '>= 0.2.0'} + cli-truncate@4.0.0: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} @@ -2774,6 +2863,10 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + clone@2.1.2: resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} @@ -2809,9 +2902,17 @@ packages: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} + colors@1.0.3: + resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} + engines: {node: '>=0.1.90'} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + commander@14.0.1: resolution: {integrity: sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==} engines: {node: '>=20'} @@ -2945,6 +3046,9 @@ packages: csv-sniffer@0.1.1: resolution: {integrity: sha512-HMFcKMGCaJNBtkEk1RYZxngODTx0gQnN5x494fWJizua2mdoM1h/LRooZQMkxx5RRHNP0mowlTw9xiS7QhXt/g==} + date-fns@3.6.0: + resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -2981,6 +3085,9 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} @@ -3172,6 +3279,10 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + estree-util-attach-comments@3.0.0: resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} @@ -3403,6 +3514,11 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + glob@11.0.3: + resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + engines: {node: 20 || >=22} + hasBin: true + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3589,6 +3705,9 @@ packages: resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} engines: {node: '>=0.10.0'} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore-by-default@1.0.1: resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} @@ -3728,6 +3847,10 @@ packages: engines: {node: '>=14.16'} hasBin: true + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3736,6 +3859,10 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} + is-observable@2.1.0: + resolution: {integrity: sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==} + engines: {node: '>=8'} + is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -3751,6 +3878,10 @@ packages: resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + is-unicode-supported@2.1.0: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} @@ -3796,10 +3927,26 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} + java-properties@1.0.2: resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==} engines: {node: '>= 0.6.0'} + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + js-sha256@0.10.1: resolution: {integrity: sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==} @@ -3869,6 +4016,10 @@ packages: resolution: {integrity: sha512-u/cAuTL4DRIiO2/g4vNGRgklEKNIj5Q3CG7RoUB5DV5SfEC2hMvPxKi0GWPmnzwL2ryIeud2VTcEEmqzTzEPNw==} engines: {node: '>=20.0.0'} + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -3901,12 +4052,19 @@ packages: lodash.isstring@4.0.1: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + lodash.uniqby@4.7.0: resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + loglayer@6.9.1: resolution: {integrity: sha512-NNqSGZYwFFw3x5abn1nc2OcDm8WnWdZ0Ai08rYbVbwZf5bVJNMLVeTwrT12vid0nxv3imzMgJWZShpO4TH5XKw==} engines: {node: '>=18'} @@ -4219,6 +4377,10 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -4505,6 +4667,9 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} + observable-fns@0.6.1: + resolution: {integrity: sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==} + ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} @@ -4543,6 +4708,10 @@ packages: openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + p-all@5.0.1: resolution: {integrity: sha512-LMT7WX9ZSaq3J1zjloApkIVmtz0ZdMFSIqbuiEa3txGYPLjUPOvgOPOx3nFjo+f37ZYL+1aY666I2SG7GVwLOA==} engines: {node: '>=16'} @@ -4670,6 +4839,10 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} + engines: {node: 20 || >=22} + path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} @@ -4743,6 +4916,9 @@ packages: resolution: {integrity: sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==} engines: {node: '>=4'} + pofile@1.1.4: + resolution: {integrity: sha512-r6Q21sKsY1AjTVVjOuU02VYKVNQGJNQHjTIvs4dEbeuuYfxgYk/DGD2mqqq4RDaVkwdSq0VEtmQUOPe/wH8X3g==} + postcss-js@4.1.0: resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} engines: {node: ^12 || ^14 || >= 16} @@ -4811,6 +4987,10 @@ packages: engines: {node: '>=14'} hasBin: true + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-ms@9.3.0: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} @@ -4858,6 +5038,11 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + pseudolocale@2.1.0: + resolution: {integrity: sha512-af5fsrRvVwD+MBasBJvuDChT0KDqT0nEwD9NTgbtHJ16FKomWac9ua0z6YVNB4G9x9IOaiGWym62aby6n4tFMA==} + engines: {node: '>=16.0.0'} + hasBin: true + pstree.remy@1.1.8: resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} @@ -4865,6 +5050,10 @@ packages: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} @@ -4932,6 +5121,9 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-number-format@5.4.4: resolution: {integrity: sha512-wOmoNZoOpvMminhifQYiYSTCLUDOiUbBunrMrMjA+dV52sY+vck1S4UhR6PkgnoCquvvMSeJjErXZ4qSaWCliA==} peerDependencies: @@ -5033,6 +5225,10 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readdirp@3.5.0: + resolution: {integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==} + engines: {node: '>=8.10.0'} + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -5172,6 +5368,10 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5383,6 +5583,11 @@ packages: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + deprecated: The work that was done in this beta branch won't be included in future versions + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -5572,6 +5777,9 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + threads@1.7.0: + resolution: {integrity: sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==} + through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} @@ -5585,6 +5793,9 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tiny-worker@2.3.0: + resolution: {integrity: sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -5629,6 +5840,9 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + traverse@0.6.8: resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} engines: {node: '>= 0.4'} @@ -6117,15 +6331,24 @@ packages: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + which-pm-runs@1.1.0: resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} engines: {node: '>=4'} @@ -6340,9 +6563,9 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@ascorbic/loader-utils@1.0.2(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))': + '@ascorbic/loader-utils@1.0.2(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))': dependencies: - astro: 5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1) + astro: 5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1) '@astrojs/compiler@2.13.0': {} @@ -6374,12 +6597,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.3.6(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))': + '@astrojs/mdx@4.3.6(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))': dependencies: '@astrojs/markdown-remark': 6.3.7 '@mdx-js/mdx': 3.1.1 acorn: 8.15.0 - astro: 5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1) + astro: 5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -6403,17 +6626,17 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.25.76 - '@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))': + '@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))': dependencies: '@astrojs/markdown-remark': 6.3.7 - '@astrojs/mdx': 4.3.6(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) + '@astrojs/mdx': 4.3.6(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) '@astrojs/sitemap': 3.6.0 '@pagefind/default-ui': 1.4.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1) - astro-expressive-code: 0.41.3(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) + astro: 5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1) + astro-expressive-code: 0.41.3(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -6704,7 +6927,7 @@ snapshots: optionalDependencies: workerd: 1.20251008.0 - '@cloudflare/vite-plugin@1.13.13(vite@7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20251008.0)(wrangler@4.43.0)': + '@cloudflare/vite-plugin@1.13.13(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20251008.0)(wrangler@4.43.0)': dependencies: '@cloudflare/unenv-preset': 2.7.7(unenv@2.0.0-rc.21)(workerd@1.20251008.0) '@remix-run/node-fetch-server': 0.8.1 @@ -6713,7 +6936,7 @@ snapshots: picocolors: 1.1.1 tinyglobby: 0.2.15 unenv: 2.0.0-rc.21 - vite: 7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) wrangler: 4.43.0 ws: 8.18.0 transitivePeerDependencies: @@ -7121,6 +7344,12 @@ snapshots: '@img/sharp-win32-x64@0.34.2': optional: true + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -7132,6 +7361,19 @@ snapshots: '@istanbuljs/schema@0.1.3': {} + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 24.2.0 + '@types/yargs': 17.0.34 + chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -7156,21 +7398,92 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@lingui/core@5.5.2': + '@lingui/babel-plugin-extract-messages@5.5.2': {} + + '@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)': + dependencies: + '@babel/core': 7.28.4 + '@babel/runtime': 7.28.4 + '@babel/types': 7.28.4 + '@lingui/conf': 5.5.2(typescript@5.9.2) + '@lingui/core': 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)) + '@lingui/message-utils': 5.5.2 + transitivePeerDependencies: + - supports-color + - typescript + + '@lingui/cli@5.5.2(typescript@5.9.2)': + dependencies: + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.4 + '@babel/runtime': 7.28.4 + '@babel/types': 7.28.4 + '@lingui/babel-plugin-extract-messages': 5.5.2 + '@lingui/babel-plugin-lingui-macro': 5.5.2(typescript@5.9.2) + '@lingui/conf': 5.5.2(typescript@5.9.2) + '@lingui/core': 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)) + '@lingui/format-po': 5.5.2(typescript@5.9.2) + '@lingui/message-utils': 5.5.2 + chokidar: 3.5.1 + cli-table: 0.3.11 + commander: 10.0.1 + convert-source-map: 2.0.0 + date-fns: 3.6.0 + esbuild: 0.25.10 + glob: 11.0.3 + micromatch: 4.0.8 + ms: 2.1.3 + normalize-path: 3.0.0 + ora: 5.4.1 + picocolors: 1.1.1 + pofile: 1.1.4 + pseudolocale: 2.1.0 + source-map: 0.8.0-beta.0 + threads: 1.7.0 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - typescript + + '@lingui/conf@5.5.2(typescript@5.9.2)': dependencies: '@babel/runtime': 7.28.4 + cosmiconfig: 8.3.6(typescript@5.9.2) + jest-validate: 29.7.0 + jiti: 2.6.1 + picocolors: 1.1.1 + transitivePeerDependencies: + - typescript + + '@lingui/core@5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2))': + dependencies: + '@babel/runtime': 7.28.4 + '@lingui/message-utils': 5.5.2 + optionalDependencies: + '@lingui/babel-plugin-lingui-macro': 5.5.2(typescript@5.9.2) + + '@lingui/format-po@5.5.2(typescript@5.9.2)': + dependencies: + '@lingui/conf': 5.5.2(typescript@5.9.2) '@lingui/message-utils': 5.5.2 + date-fns: 3.6.0 + pofile: 1.1.4 + transitivePeerDependencies: + - typescript '@lingui/message-utils@5.5.2': dependencies: '@messageformat/parser': 5.1.1 js-sha256: 0.10.1 - '@lingui/react@5.5.2(react@19.2.0)': + '@lingui/react@5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2))(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 - '@lingui/core': 5.5.2 + '@lingui/core': 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)) react: 19.2.0 + optionalDependencies: + '@lingui/babel-plugin-lingui-macro': 5.5.2(typescript@5.9.2) '@loglayer/context-manager@1.1.6': dependencies: @@ -7782,7 +8095,7 @@ snapshots: optionalDependencies: '@types/react': 19.2.2 - '@react-router/dev@7.9.4(@types/node@24.2.0)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1)': + '@react-router/dev@7.9.4(@types/node@24.2.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1)': dependencies: '@babel/core': 7.28.4 '@babel/generator': 7.28.3 @@ -7811,8 +8124,8 @@ snapshots: semver: 7.7.2 tinyglobby: 0.2.15 valibot: 1.1.0(typescript@5.9.2) - vite: 7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) optionalDependencies: typescript: 5.9.2 wrangler: 4.43.0 @@ -8035,6 +8348,8 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} + '@sinclair/typebox@0.27.8': {} + '@sindresorhus/fnv1a@2.0.1': {} '@sindresorhus/is@4.6.0': {} @@ -8157,6 +8472,16 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + '@types/js-yaml@4.0.9': {} '@types/json-schema@7.0.15': {} @@ -8215,6 +8540,12 @@ snapshots: '@types/unist@3.0.3': {} + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.34': + dependencies: + '@types/yargs-parser': 21.0.3 + '@ungap/structured-clone@1.3.0': {} '@vitest/coverage-v8@3.2.4(vitest@3.2.4)': @@ -8232,7 +8563,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -8244,13 +8575,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -8281,7 +8612,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) '@vitest/utils@3.2.4': dependencies: @@ -8343,6 +8674,8 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@5.2.0: {} + ansi-styles@6.2.3: {} any-promise@1.3.0: {} @@ -8380,12 +8713,12 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.41.3(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)): + astro-expressive-code@0.41.3(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)): dependencies: - astro: 5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1) + astro: 5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1) rehype-expressive-code: 0.41.3 - astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1): + astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1): dependencies: '@astrojs/compiler': 2.13.0 '@astrojs/internal-helpers': 0.7.3 @@ -8441,8 +8774,8 @@ snapshots: unist-util-visit: 5.0.0 unstorage: 1.17.1 vfile: 6.0.3 - vite: 6.3.6(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) - vitefu: 1.1.1(vite@6.3.6(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) + vite: 6.3.6(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vitefu: 1.1.1(vite@6.3.6(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.3 @@ -8528,6 +8861,12 @@ snapshots: binary-extensions@2.3.0: {} + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + blake3-wasm@2.1.5: {} blob-to-buffer@1.2.9: {} @@ -8593,6 +8932,11 @@ snapshots: node-releases: 2.0.23 update-browserslist-db: 1.1.3(browserslist@4.26.3) + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + bun-types@1.3.1(@types/react@19.2.2): dependencies: '@types/node': 24.2.0 @@ -8659,6 +9003,18 @@ snapshots: check-error@2.1.1: {} + chokidar@3.5.1: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.5.0 + optionalDependencies: + fsevents: 2.3.3 + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -8687,6 +9043,10 @@ snapshots: cli-boxes@3.0.0: {} + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 @@ -8700,12 +9060,18 @@ snapshots: parse5-htmlparser2-tree-adapter: 6.0.1 yargs: 16.2.0 + cli-spinners@2.9.2: {} + cli-table3@0.6.5: dependencies: string-width: 4.2.3 optionalDependencies: '@colors/colors': 1.5.0 + cli-table@0.3.11: + dependencies: + colors: 1.0.3 + cli-truncate@4.0.0: dependencies: slice-ansi: 5.0.0 @@ -8723,6 +9089,8 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clone@1.0.4: {} + clone@2.1.2: {} clsx@2.1.1: {} @@ -8755,8 +9123,12 @@ snapshots: color-convert: 2.0.1 color-string: 1.9.1 + colors@1.0.3: {} + comma-separated-tokens@2.0.3: {} + commander@10.0.1: {} + commander@14.0.1: {} common-ancestor-path@1.0.1: {} @@ -8881,6 +9253,8 @@ snapshots: csv-sniffer@0.1.1: {} + date-fns@3.6.0: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -8901,6 +9275,10 @@ snapshots: deep-extend@0.6.0: {} + defaults@1.0.4: + dependencies: + clone: 1.0.4 + defu@6.1.4: {} denque@2.1.0: {} @@ -9095,6 +9473,9 @@ snapshots: escape-string-regexp@5.0.0: {} + esm@3.2.25: + optional: true + estree-util-attach-comments@3.0.0: dependencies: '@types/estree': 1.0.8 @@ -9391,6 +9772,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@11.0.3: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.1.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.1 + gopd@1.2.0: {} graceful-fs@4.2.10: {} @@ -9706,6 +10096,8 @@ snapshots: dependencies: safer-buffer: 2.1.2 + ieee754@1.2.1: {} + ignore-by-default@1.0.1: {} immer@10.1.3: {} @@ -9831,10 +10223,14 @@ snapshots: dependencies: is-docker: 3.0.0 + is-interactive@1.0.0: {} + is-number@7.0.0: {} is-obj@2.0.0: {} + is-observable@2.1.0: {} + is-plain-obj@4.1.0: {} is-property@1.0.2: {} @@ -9843,6 +10239,8 @@ snapshots: is-stream@4.0.1: {} + is-unicode-supported@0.1.0: {} + is-unicode-supported@2.1.0: {} is-wsl@3.1.0: @@ -9892,8 +10290,25 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@4.1.1: + dependencies: + '@isaacs/cliui': 8.0.2 + java-properties@1.0.2: {} + jest-get-type@29.6.3: {} + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jiti@2.6.1: {} + js-sha256@0.10.1: {} js-tokens@4.0.0: {} @@ -9947,6 +10362,8 @@ snapshots: kysely@0.28.7: {} + leven@3.1.0: {} + lines-and-columns@1.2.4: {} linkify-it@5.0.0: @@ -9977,10 +10394,17 @@ snapshots: lodash.isstring@4.0.1: {} + lodash.sortby@4.7.0: {} + lodash.uniqby@4.7.0: {} lodash@4.17.21: {} + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + loglayer@6.9.1: dependencies: '@loglayer/context-manager': 1.1.6 @@ -10574,6 +10998,10 @@ snapshots: - bufferutil - utf-8-validate + minimatch@10.1.1: + dependencies: + '@isaacs/brace-expansion': 5.0.0 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -10778,6 +11206,8 @@ snapshots: object-inspect@1.13.4: {} + observable-fns@0.6.1: {} + ofetch@1.4.1: dependencies: destr: 2.0.5 @@ -10818,6 +11248,18 @@ snapshots: openapi-types@12.1.3: {} + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + p-all@5.0.1: dependencies: p-map: 6.0.0 @@ -10942,6 +11384,11 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.1: + dependencies: + lru-cache: 11.2.2 + minipass: 7.1.2 + path-to-regexp@0.1.12: {} path-to-regexp@6.3.0: {} @@ -11002,6 +11449,8 @@ snapshots: find-up: 2.1.0 load-json-file: 4.0.0 + pofile@1.1.4: {} + postcss-js@4.1.0(postcss@8.5.6): dependencies: camelcase-css: 2.0.1 @@ -11063,6 +11512,12 @@ snapshots: prettier@3.6.2: {} + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + pretty-ms@9.3.0: dependencies: parse-ms: 4.0.0 @@ -11102,10 +11557,16 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + pseudolocale@2.1.0: + dependencies: + commander: 10.0.1 + pstree.remy@1.1.8: {} punycode.js@2.3.1: {} + punycode@2.3.1: {} + qs@6.13.0: dependencies: side-channel: 1.1.0 @@ -11170,6 +11631,8 @@ snapshots: react-is@16.13.1: {} + react-is@18.3.1: {} + react-number-format@5.4.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: react: 19.2.0 @@ -11278,6 +11741,10 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 + readdirp@3.5.0: + dependencies: + picomatch: 2.3.1 + readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -11457,6 +11924,11 @@ snapshots: resolve-pkg-maps@1.0.0: optional: true + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + restore-cursor@4.0.0: dependencies: onetime: 5.1.2 @@ -11792,6 +12264,10 @@ snapshots: source-map@0.7.6: {} + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + space-separated-tokens@2.0.2: {} spawn-error-forwarder@1.0.0: {} @@ -11824,10 +12300,10 @@ snapshots: stackback@0.0.2: {} - starlight-changelogs@0.1.1(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)))(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)): + starlight-changelogs@0.1.1(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)))(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)): dependencies: - '@ascorbic/loader-utils': 1.0.2(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) - '@astrojs/starlight': 0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) + '@ascorbic/loader-utils': 1.0.2(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) + '@astrojs/starlight': 0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) github-slugger: 2.0.0 mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 @@ -11837,18 +12313,18 @@ snapshots: - astro - supports-color - starlight-github-alerts@0.1.0(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))): + starlight-github-alerts@0.1.0(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))): dependencies: - '@astrojs/starlight': 0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) + '@astrojs/starlight': 0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) unist-util-visit: 5.0.0 - starlight-scroll-to-top@0.3.1(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))): + starlight-scroll-to-top@0.3.1(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))): dependencies: - '@astrojs/starlight': 0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) + '@astrojs/starlight': 0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) - starlight-typedoc@0.21.3(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)))(typedoc-plugin-markdown@4.8.0(typedoc@0.28.9(typescript@5.9.2)))(typedoc@0.28.9(typescript@5.9.2)): + starlight-typedoc@0.21.3(@astrojs/starlight@0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)))(typedoc-plugin-markdown@4.8.0(typedoc@0.28.9(typescript@5.9.2)))(typedoc@0.28.9(typescript@5.9.2)): dependencies: - '@astrojs/starlight': 0.36.0(astro@5.14.1(@types/node@24.2.0)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) + '@astrojs/starlight': 0.36.0(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)) github-slugger: 2.0.0 typedoc: 0.28.9(typescript@5.9.2) typedoc-plugin-markdown: 4.8.0(typedoc@0.28.9(typescript@5.9.2)) @@ -11978,6 +12454,17 @@ snapshots: dependencies: any-promise: 1.3.0 + threads@1.7.0: + dependencies: + callsites: 3.1.0 + debug: 4.4.3(supports-color@5.5.0) + is-observable: 2.1.0 + observable-fns: 0.6.1 + optionalDependencies: + tiny-worker: 2.3.0 + transitivePeerDependencies: + - supports-color + through2@2.0.5: dependencies: readable-stream: 2.3.8 @@ -11991,6 +12478,11 @@ snapshots: tiny-invariant@1.3.3: {} + tiny-worker@2.3.0: + dependencies: + esm: 3.2.25 + optional: true + tinybench@2.9.0: {} tinyexec@0.3.2: {} @@ -12020,6 +12512,10 @@ snapshots: tr46@0.0.3: {} + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + traverse@0.6.8: {} tree-kill@1.2.2: {} @@ -12294,13 +12790,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@5.5.0) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -12315,23 +12811,23 @@ snapshots: - tsx - yaml - vite-plugin-devtools-json@1.0.0(vite@7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): + vite-plugin-devtools-json@1.0.0(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): dependencies: uuid: 11.1.0 - vite: 7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) - vite-plugin-svgr@4.5.0(rollup@4.52.4)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): + vite-plugin-svgr@4.5.0(rollup@4.52.4)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.52.4) '@svgr/core': 8.1.0(typescript@5.9.2) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.2)) - vite: 7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) transitivePeerDependencies: - rollup - supports-color - typescript - vite@6.3.6(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1): + vite@6.3.6(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -12342,12 +12838,13 @@ snapshots: optionalDependencies: '@types/node': 24.2.0 fsevents: 2.3.3 + jiti: 2.6.1 sass: 1.93.2 sugarss: 5.0.1(postcss@8.5.6) tsx: 4.20.3 yaml: 2.8.1 - vite@7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1): + vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -12358,29 +12855,30 @@ snapshots: optionalDependencies: '@types/node': 24.2.0 fsevents: 2.3.3 + jiti: 2.6.1 sass: 1.93.2 sugarss: 5.0.1(postcss@8.5.6) tsx: 4.20.3 yaml: 2.8.1 - vitefu@1.1.1(vite@6.3.6(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): + vitefu@1.1.1(vite@6.3.6(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): optionalDependencies: - vite: 6.3.6(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 6.3.6(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) vitest-polly@1.3.0(vitest@3.2.4): dependencies: '@pollyjs/adapter-fetch': 6.0.7 '@pollyjs/core': 6.0.6 '@pollyjs/persister-fs': 6.0.6 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) transitivePeerDependencies: - supports-color - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -12398,8 +12896,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.10(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.2.0)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 @@ -12421,15 +12919,27 @@ snapshots: void-elements@3.1.0: {} + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + web-namespaces@2.0.1: {} webidl-conversions@3.0.1: {} + webidl-conversions@4.0.2: {} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + which-pm-runs@1.1.0: {} which@2.0.2: From 0074f5720c68fffef84c212cf21f67214a3bea74 Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 07:48:02 +0000 Subject: [PATCH 03/48] Bootstrapped @translate task --- browser/@translate.ts | 10 ++++++++++ browser/components/Layout/Banner.tsx | 3 ++- browser/lingui.config.ts | 12 ++++++++++++ browser/locales/de/messages.js | 1 + browser/locales/de/messages.po | 18 ++++++++++++++++++ browser/locales/en/messages.js | 1 + browser/locales/en/messages.po | 18 ++++++++++++++++++ browser/locales/es/messages.js | 1 + browser/locales/es/messages.po | 18 ++++++++++++++++++ browser/locales/fr/messages.js | 1 + browser/locales/fr/messages.po | 18 ++++++++++++++++++ browser/locales/it/messages.js | 1 + browser/locales/it/messages.po | 18 ++++++++++++++++++ browser/locales/pt/messages.js | 1 + browser/locales/pt/messages.po | 18 ++++++++++++++++++ browser/locales/ru/messages.js | 1 + browser/locales/ru/messages.po | 18 ++++++++++++++++++ browser/locales/uk/messages.js | 1 + browser/locales/uk/messages.po | 18 ++++++++++++++++++ browser/package.json | 1 + pnpm-lock.yaml | 3 +++ 21 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 browser/@translate.ts create mode 100644 browser/lingui.config.ts create mode 100644 browser/locales/de/messages.js create mode 100644 browser/locales/de/messages.po create mode 100644 browser/locales/en/messages.js create mode 100644 browser/locales/en/messages.po create mode 100644 browser/locales/es/messages.js create mode 100644 browser/locales/es/messages.po create mode 100644 browser/locales/fr/messages.js create mode 100644 browser/locales/fr/messages.po create mode 100644 browser/locales/it/messages.js create mode 100644 browser/locales/it/messages.po create mode 100644 browser/locales/pt/messages.js create mode 100644 browser/locales/pt/messages.po create mode 100644 browser/locales/ru/messages.js create mode 100644 browser/locales/ru/messages.po create mode 100644 browser/locales/uk/messages.js create mode 100644 browser/locales/uk/messages.po diff --git a/browser/@translate.ts b/browser/@translate.ts new file mode 100644 index 00000000..b517eab0 --- /dev/null +++ b/browser/@translate.ts @@ -0,0 +1,10 @@ +import { execa } from "execa" + +const $ = execa({ + stdout: ["inherit", "pipe"], + verbose: "short", + preferLocal: true, +}) + +await $`pnpm lingui extract` +await $`pnpm lingui compile` diff --git a/browser/components/Layout/Banner.tsx b/browser/components/Layout/Banner.tsx index 812dcf3a..0e6cd266 100644 --- a/browser/components/Layout/Banner.tsx +++ b/browser/components/Layout/Banner.tsx @@ -1,3 +1,4 @@ +import { Trans } from "@lingui/react/macro" import { Anchor, Box, Text } from "@mantine/core" import { Container } from "@mantine/core" import { useTranslation } from "react-i18next" @@ -11,7 +12,7 @@ export function Banner() { - {t("Support the project by")}{" "} + Support the project by /locales/{locale}/messages", + include: ["/app", "/components"], + }, + ], +}) diff --git a/browser/locales/de/messages.js b/browser/locales/de/messages.js new file mode 100644 index 00000000..396dfb18 --- /dev/null +++ b/browser/locales/de/messages.js @@ -0,0 +1 @@ +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file diff --git a/browser/locales/de/messages.po b/browser/locales/de/messages.po new file mode 100644 index 00000000..8e77ebcd --- /dev/null +++ b/browser/locales/de/messages.po @@ -0,0 +1,18 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2025-11-10 07:34+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: de\n" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: \n" + +#: components/Layout/Banner.tsx:15 +msgid "Support the project by" +msgstr "" diff --git a/browser/locales/en/messages.js b/browser/locales/en/messages.js new file mode 100644 index 00000000..396dfb18 --- /dev/null +++ b/browser/locales/en/messages.js @@ -0,0 +1 @@ +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file diff --git a/browser/locales/en/messages.po b/browser/locales/en/messages.po new file mode 100644 index 00000000..64b6e3f1 --- /dev/null +++ b/browser/locales/en/messages.po @@ -0,0 +1,18 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2025-11-10 07:34+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: en\n" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: \n" + +#: components/Layout/Banner.tsx:15 +msgid "Support the project by" +msgstr "Support the project by" diff --git a/browser/locales/es/messages.js b/browser/locales/es/messages.js new file mode 100644 index 00000000..396dfb18 --- /dev/null +++ b/browser/locales/es/messages.js @@ -0,0 +1 @@ +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file diff --git a/browser/locales/es/messages.po b/browser/locales/es/messages.po new file mode 100644 index 00000000..e6b55f5c --- /dev/null +++ b/browser/locales/es/messages.po @@ -0,0 +1,18 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2025-11-10 07:34+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: es\n" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: \n" + +#: components/Layout/Banner.tsx:15 +msgid "Support the project by" +msgstr "" diff --git a/browser/locales/fr/messages.js b/browser/locales/fr/messages.js new file mode 100644 index 00000000..396dfb18 --- /dev/null +++ b/browser/locales/fr/messages.js @@ -0,0 +1 @@ +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file diff --git a/browser/locales/fr/messages.po b/browser/locales/fr/messages.po new file mode 100644 index 00000000..c4707818 --- /dev/null +++ b/browser/locales/fr/messages.po @@ -0,0 +1,18 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2025-11-10 07:34+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: fr\n" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: \n" + +#: components/Layout/Banner.tsx:15 +msgid "Support the project by" +msgstr "" diff --git a/browser/locales/it/messages.js b/browser/locales/it/messages.js new file mode 100644 index 00000000..396dfb18 --- /dev/null +++ b/browser/locales/it/messages.js @@ -0,0 +1 @@ +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file diff --git a/browser/locales/it/messages.po b/browser/locales/it/messages.po new file mode 100644 index 00000000..97bc18fd --- /dev/null +++ b/browser/locales/it/messages.po @@ -0,0 +1,18 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2025-11-10 07:34+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: it\n" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: \n" + +#: components/Layout/Banner.tsx:15 +msgid "Support the project by" +msgstr "" diff --git a/browser/locales/pt/messages.js b/browser/locales/pt/messages.js new file mode 100644 index 00000000..396dfb18 --- /dev/null +++ b/browser/locales/pt/messages.js @@ -0,0 +1 @@ +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file diff --git a/browser/locales/pt/messages.po b/browser/locales/pt/messages.po new file mode 100644 index 00000000..76769025 --- /dev/null +++ b/browser/locales/pt/messages.po @@ -0,0 +1,18 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2025-11-10 07:34+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: pt\n" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: \n" + +#: components/Layout/Banner.tsx:15 +msgid "Support the project by" +msgstr "" diff --git a/browser/locales/ru/messages.js b/browser/locales/ru/messages.js new file mode 100644 index 00000000..396dfb18 --- /dev/null +++ b/browser/locales/ru/messages.js @@ -0,0 +1 @@ +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file diff --git a/browser/locales/ru/messages.po b/browser/locales/ru/messages.po new file mode 100644 index 00000000..147ea528 --- /dev/null +++ b/browser/locales/ru/messages.po @@ -0,0 +1,18 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2025-11-10 07:34+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: ru\n" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: \n" + +#: components/Layout/Banner.tsx:15 +msgid "Support the project by" +msgstr "" diff --git a/browser/locales/uk/messages.js b/browser/locales/uk/messages.js new file mode 100644 index 00000000..396dfb18 --- /dev/null +++ b/browser/locales/uk/messages.js @@ -0,0 +1 @@ +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file diff --git a/browser/locales/uk/messages.po b/browser/locales/uk/messages.po new file mode 100644 index 00000000..6897dc0f --- /dev/null +++ b/browser/locales/uk/messages.po @@ -0,0 +1,18 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2025-11-10 07:34+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: uk\n" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: \n" + +#: components/Layout/Banner.tsx:15 +msgid "Support the project by" +msgstr "" diff --git a/browser/package.json b/browser/package.json index 2533a1b9..739d53f0 100644 --- a/browser/package.json +++ b/browser/package.json @@ -35,6 +35,7 @@ "@types/react-dom": "19.2.0", "concurrently": "9.2.1", "es-toolkit": "1.39.10", + "execa": "9.6.0", "i18next": "25.6.0", "immer": "10.1.3", "isbot": "5.1.31", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eed0f1f5..18deb513 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -122,6 +122,9 @@ importers: es-toolkit: specifier: 1.39.10 version: 1.39.10 + execa: + specifier: 9.6.0 + version: 9.6.0 i18next: specifier: 25.6.0 version: 25.6.0(typescript@5.9.2) From 2dc1caecc951380071b7e4e141b7fe6d2f7dab7a Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 07:49:28 +0000 Subject: [PATCH 04/48] Inogre .env.local --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 80321017..ae61cc78 100644 --- a/.gitignore +++ b/.gitignore @@ -69,3 +69,4 @@ dist/ .serena/ .mcp.json .env +.env.local From df12adecda75ad3a949fc46d34c531ee6a2bf233 Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 07:51:57 +0000 Subject: [PATCH 05/48] Added env example --- browser/.env.example | 1 + 1 file changed, 1 insertion(+) create mode 100644 browser/.env.example diff --git a/browser/.env.example b/browser/.env.example new file mode 100644 index 00000000..5da99b18 --- /dev/null +++ b/browser/.env.example @@ -0,0 +1 @@ +OPENAI_API_KEY="" From 8a93609d81bf28f1f2b20bc0492b7c441e57a3ac Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 08:22:57 +0000 Subject: [PATCH 06/48] Implemented translate script --- browser/@translate.ts | 54 ++++++++- browser/lingui.config.ts | 5 +- browser/package.json | 4 + pnpm-lock.yaml | 233 ++++++++++++++++++++++++++++----------- 4 files changed, 227 insertions(+), 69 deletions(-) diff --git a/browser/@translate.ts b/browser/@translate.ts index b517eab0..d5521f48 100644 --- a/browser/@translate.ts +++ b/browser/@translate.ts @@ -1,4 +1,15 @@ +import { readFile, writeFile } from "node:fs/promises" +import { openai } from "@ai-sdk/openai" +import { spinner } from "@clack/prompts" +import { generateText } from "ai" +import dotenv from "dotenv" import { execa } from "execa" +import { objectKeys } from "ts-extras" +import { LanguageIdDefault, Languages } from "#constants/language.ts" +import type * as types from "#types/index.ts" + +dotenv.config() +process.chdir(import.meta.dirname) const $ = execa({ stdout: ["inherit", "pipe"], @@ -6,5 +17,44 @@ const $ = execa({ preferLocal: true, }) -await $`pnpm lingui extract` -await $`pnpm lingui compile` +await $`lingui extract` +await translateLanguages() +await $`lingui compile` + +async function translateLanguages() { + for (const languageId of objectKeys(Languages)) { + if (languageId === LanguageIdDefault) continue + const task = spinner() + task.start(`Translating ${languageId}...`) + await translateLanguage(languageId) + task.stop(`Translated ${languageId}`) + } +} + +async function translateLanguage(languageId: types.LanguageId) { + const path = `locales/${languageId}/messages.po` + const content = await readFile(path) + + const { text } = await generateText({ + model: openai("gpt-5"), + prompt: ` + You are a professional translator. Here is a PO (gettext) file. + + Translate ONLY the empty msgstr entries (where msgstr "") + from **${LanguageIdDefault}** to **${languageId}**. + + - Keep all msgid values unchanged + - Preserve all placeholders like {variable}, %s, {{name}}, etc. + - Maintain the exact PO file format + - Do NOT translate entries that already have translations + - Keep all comments and metadata + + Return the complete PO file with translations filled in. + + PO file: + ${content} + `, + }) + + await writeFile(path, text) +} diff --git a/browser/lingui.config.ts b/browser/lingui.config.ts index c21e80bd..f4e14626 100644 --- a/browser/lingui.config.ts +++ b/browser/lingui.config.ts @@ -1,8 +1,9 @@ import { defineConfig } from "@lingui/cli" +import { LanguageIdDefault, Languages } from "#constants/language.ts" export default defineConfig({ - sourceLocale: "en", - locales: ["en", "de", "es", "fr", "it", "pt", "ru", "uk"], + sourceLocale: LanguageIdDefault, + locales: Object.keys(Languages), catalogs: [ { path: "/locales/{locale}/messages", diff --git a/browser/package.json b/browser/package.json index 739d53f0..6a995ee1 100644 --- a/browser/package.json +++ b/browser/package.json @@ -17,6 +17,8 @@ "type": "tsc --noEmit" }, "devDependencies": { + "@ai-sdk/openai": "2.0.64", + "@clack/prompts": "^0.11.0", "@cloudflare/containers": "0.0.28", "@cloudflare/vite-plugin": "1.13.13", "@dpkit/library": "workspace:*", @@ -33,7 +35,9 @@ "@tanstack/react-query": "5.90.3", "@types/react": "19.2.2", "@types/react-dom": "19.2.0", + "ai": "5.0.90", "concurrently": "9.2.1", + "dotenv": "17.2.3", "es-toolkit": "1.39.10", "execa": "9.6.0", "i18next": "25.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 18deb513..26476f34 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,6 +68,12 @@ importers: browser: devDependencies: + '@ai-sdk/openai': + specifier: 2.0.64 + version: 2.0.64(zod@4.1.12) + '@clack/prompts': + specifier: ^0.11.0 + version: 0.11.0 '@cloudflare/containers': specifier: 0.0.28 version: 0.0.28 @@ -103,7 +109,7 @@ importers: version: 8.3.5(react@19.2.0) '@orpc/openapi-client': specifier: 1.10.0 - version: 1.10.0 + version: 1.10.0(@opentelemetry/api@1.9.0) '@react-router/dev': specifier: 7.9.4 version: 7.9.4(@types/node@24.2.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1) @@ -116,9 +122,15 @@ importers: '@types/react-dom': specifier: 19.2.0 version: 19.2.0(@types/react@19.2.2) + ai: + specifier: 5.0.90 + version: 5.0.90(zod@4.1.12) concurrently: specifier: 9.2.1 version: 9.2.1 + dotenv: + specifier: 17.2.3 + version: 17.2.3 es-toolkit: specifier: 1.39.10 version: 1.39.10 @@ -442,22 +454,22 @@ importers: version: 3.0.4(tslog@4.10.2) '@orpc/client': specifier: ^1.10.0 - version: 1.10.0 + version: 1.10.0(@opentelemetry/api@1.9.0) '@orpc/contract': specifier: ^1.10.0 - version: 1.10.0 + version: 1.10.0(@opentelemetry/api@1.9.0) '@orpc/openapi': specifier: 1.10.0 - version: 1.10.0(crossws@0.3.5)(ws@8.18.3) + version: 1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3) '@orpc/openapi-client': specifier: 1.10.0 - version: 1.10.0 + version: 1.10.0(@opentelemetry/api@1.9.0) '@orpc/server': specifier: 1.10.0 - version: 1.10.0(crossws@0.3.5)(ws@8.18.3) + version: 1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3) '@orpc/zod': specifier: 1.10.0 - version: 1.10.0(@orpc/contract@1.10.0)(@orpc/server@1.10.0(crossws@0.3.5)(ws@8.18.3))(crossws@0.3.5)(ws@8.18.3)(zod@4.1.12) + version: 1.10.0(@opentelemetry/api@1.9.0)(@orpc/contract@1.10.0(@opentelemetry/api@1.9.0))(@orpc/server@1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3))(crossws@0.3.5)(ws@8.18.3)(zod@4.1.12) loglayer: specifier: 6.9.1 version: 6.9.1 @@ -555,6 +567,28 @@ importers: packages: + '@ai-sdk/gateway@2.0.7': + resolution: {integrity: sha512-/AI5AKi4vOK9SEb8Z1dfXkhsJ5NAfWsoJQc96B/mzn2KIrjw5occOjIwD06scuhV9xWlghCoXJT1sQD9QH/tyg==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + + '@ai-sdk/openai@2.0.64': + resolution: {integrity: sha512-+1mqxn42uB32DPZ6kurSyGAmL3MgCaDpkYU7zNDWI4NLy3Zg97RxTsI1jBCGIqkEVvRZKJlIMYtb89OvMnq3AQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + + '@ai-sdk/provider-utils@3.0.16': + resolution: {integrity: sha512-lsWQY9aDXHitw7C1QRYIbVGmgwyT98TF3MfM8alNIXKpdJdi+W782Rzd9f1RyOfgRmZ08gJ2EYNDhWNK7RqpEA==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + + '@ai-sdk/provider@2.0.0': + resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} + engines: {node: '>=18'} + '@alcalzone/ansi-tokenize@0.2.0': resolution: {integrity: sha512-qI/5TaaaCZE4yeSZ83lu0+xi1r88JSxUjnH4OP/iZF7+KKZ75u3ee5isd0LxX+6N8U0npL61YrpbthILHB6BnA==} engines: {node: '>=18'} @@ -1639,6 +1673,10 @@ packages: '@octokit/types@15.0.0': resolution: {integrity: sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==} + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + '@orpc/client@1.10.0': resolution: {integrity: sha512-5KDvC5eoZ3hCtn4lrWthXAXe+cV4UtWuAO96nRoMfJLBvGwARKbhK6mKZYq7xJuaRqpByzCAhbYAY5BNRxOK8Q==} @@ -2453,6 +2491,10 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@vercel/oidc@3.0.3': + resolution: {integrity: sha512-yNEQvPcVrK9sIe637+I0jD6leluPxzwJKx/Haw6F4H77CdDsszUn5V3o96LPziXkSNE2B83+Z3mjqGKBK/R6Gg==} + engines: {node: '>= 20'} + '@vitest/coverage-v8@3.2.4': resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} peerDependencies: @@ -2531,6 +2573,12 @@ packages: resolution: {integrity: sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==} engines: {node: '>=18'} + ai@5.0.90: + resolution: {integrity: sha512-bawNN10N2cXzFedbDdNUZo8KkcGp12VX1b+mCL5dfllh6WmLsIYYME7GVxsRJvHvPP7xRhuds5fn0jtLyxGnZw==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -3160,6 +3208,10 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} + dotenv@17.2.3: + resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} + engines: {node: '>=12'} + dset@3.1.4: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} @@ -3317,6 +3369,10 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + eventsource-parser@3.0.6: + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} + engines: {node: '>=18.0.0'} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -3981,6 +4037,9 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -6556,6 +6615,30 @@ packages: snapshots: + '@ai-sdk/gateway@2.0.7(zod@4.1.12)': + dependencies: + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) + '@vercel/oidc': 3.0.3 + zod: 4.1.12 + + '@ai-sdk/openai@2.0.64(zod@4.1.12)': + dependencies: + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) + zod: 4.1.12 + + '@ai-sdk/provider-utils@3.0.16(zod@4.1.12)': + dependencies: + '@ai-sdk/provider': 2.0.0 + '@standard-schema/spec': 1.0.0 + eventsource-parser: 3.0.6 + zod: 4.1.12 + + '@ai-sdk/provider@2.0.0': + dependencies: + json-schema: 0.4.0 + '@alcalzone/ansi-tokenize@0.2.0': dependencies: ansi-styles: 6.2.3 @@ -7655,19 +7738,21 @@ snapshots: dependencies: '@octokit/openapi-types': 26.0.0 - '@orpc/client@1.10.0': + '@opentelemetry/api@1.9.0': {} + + '@orpc/client@1.10.0(@opentelemetry/api@1.9.0)': dependencies: - '@orpc/shared': 1.10.0 - '@orpc/standard-server': 1.10.0 - '@orpc/standard-server-fetch': 1.10.0 - '@orpc/standard-server-peer': 1.10.0 + '@orpc/shared': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server-fetch': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server-peer': 1.10.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/contract@1.10.0': + '@orpc/contract@1.10.0(@opentelemetry/api@1.9.0)': dependencies: - '@orpc/client': 1.10.0 - '@orpc/shared': 1.10.0 + '@orpc/client': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/shared': 1.10.0(@opentelemetry/api@1.9.0) '@standard-schema/spec': 1.0.0 openapi-types: 12.1.3 transitivePeerDependencies: @@ -7675,53 +7760,53 @@ snapshots: '@orpc/interop@1.10.0': {} - '@orpc/json-schema@1.10.0(crossws@0.3.5)(ws@8.18.3)': + '@orpc/json-schema@1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3)': dependencies: - '@orpc/contract': 1.10.0 + '@orpc/contract': 1.10.0(@opentelemetry/api@1.9.0) '@orpc/interop': 1.10.0 - '@orpc/openapi': 1.10.0(crossws@0.3.5)(ws@8.18.3) - '@orpc/server': 1.10.0(crossws@0.3.5)(ws@8.18.3) - '@orpc/shared': 1.10.0 + '@orpc/openapi': 1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3) + '@orpc/server': 1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3) + '@orpc/shared': 1.10.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - '@opentelemetry/api' - crossws - ws - '@orpc/openapi-client@1.10.0': + '@orpc/openapi-client@1.10.0(@opentelemetry/api@1.9.0)': dependencies: - '@orpc/client': 1.10.0 - '@orpc/contract': 1.10.0 - '@orpc/shared': 1.10.0 - '@orpc/standard-server': 1.10.0 + '@orpc/client': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/contract': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/shared': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server': 1.10.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/openapi@1.10.0(crossws@0.3.5)(ws@8.18.3)': + '@orpc/openapi@1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3)': dependencies: - '@orpc/client': 1.10.0 - '@orpc/contract': 1.10.0 + '@orpc/client': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/contract': 1.10.0(@opentelemetry/api@1.9.0) '@orpc/interop': 1.10.0 - '@orpc/openapi-client': 1.10.0 - '@orpc/server': 1.10.0(crossws@0.3.5)(ws@8.18.3) - '@orpc/shared': 1.10.0 - '@orpc/standard-server': 1.10.0 + '@orpc/openapi-client': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/server': 1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3) + '@orpc/shared': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server': 1.10.0(@opentelemetry/api@1.9.0) rou3: 0.7.8 transitivePeerDependencies: - '@opentelemetry/api' - crossws - ws - '@orpc/server@1.10.0(crossws@0.3.5)(ws@8.18.3)': + '@orpc/server@1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3)': dependencies: - '@orpc/client': 1.10.0 - '@orpc/contract': 1.10.0 + '@orpc/client': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/contract': 1.10.0(@opentelemetry/api@1.9.0) '@orpc/interop': 1.10.0 - '@orpc/shared': 1.10.0 - '@orpc/standard-server': 1.10.0 - '@orpc/standard-server-aws-lambda': 1.10.0 - '@orpc/standard-server-fetch': 1.10.0 - '@orpc/standard-server-node': 1.10.0 - '@orpc/standard-server-peer': 1.10.0 + '@orpc/shared': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server-aws-lambda': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server-fetch': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server-node': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server-peer': 1.10.0(@opentelemetry/api@1.9.0) cookie: 1.0.2 optionalDependencies: crossws: 0.3.5 @@ -7729,55 +7814,57 @@ snapshots: transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/shared@1.10.0': + '@orpc/shared@1.10.0(@opentelemetry/api@1.9.0)': dependencies: radash: 12.1.1 type-fest: 5.1.0 + optionalDependencies: + '@opentelemetry/api': 1.9.0 - '@orpc/standard-server-aws-lambda@1.10.0': + '@orpc/standard-server-aws-lambda@1.10.0(@opentelemetry/api@1.9.0)': dependencies: - '@orpc/shared': 1.10.0 - '@orpc/standard-server': 1.10.0 - '@orpc/standard-server-fetch': 1.10.0 - '@orpc/standard-server-node': 1.10.0 + '@orpc/shared': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server-fetch': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server-node': 1.10.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/standard-server-fetch@1.10.0': + '@orpc/standard-server-fetch@1.10.0(@opentelemetry/api@1.9.0)': dependencies: - '@orpc/shared': 1.10.0 - '@orpc/standard-server': 1.10.0 + '@orpc/shared': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server': 1.10.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/standard-server-node@1.10.0': + '@orpc/standard-server-node@1.10.0(@opentelemetry/api@1.9.0)': dependencies: - '@orpc/shared': 1.10.0 - '@orpc/standard-server': 1.10.0 - '@orpc/standard-server-fetch': 1.10.0 + '@orpc/shared': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server-fetch': 1.10.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/standard-server-peer@1.10.0': + '@orpc/standard-server-peer@1.10.0(@opentelemetry/api@1.9.0)': dependencies: - '@orpc/shared': 1.10.0 - '@orpc/standard-server': 1.10.0 + '@orpc/shared': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/standard-server': 1.10.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/standard-server@1.10.0': + '@orpc/standard-server@1.10.0(@opentelemetry/api@1.9.0)': dependencies: - '@orpc/shared': 1.10.0 + '@orpc/shared': 1.10.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/zod@1.10.0(@orpc/contract@1.10.0)(@orpc/server@1.10.0(crossws@0.3.5)(ws@8.18.3))(crossws@0.3.5)(ws@8.18.3)(zod@4.1.12)': + '@orpc/zod@1.10.0(@opentelemetry/api@1.9.0)(@orpc/contract@1.10.0(@opentelemetry/api@1.9.0))(@orpc/server@1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3))(crossws@0.3.5)(ws@8.18.3)(zod@4.1.12)': dependencies: - '@orpc/contract': 1.10.0 - '@orpc/json-schema': 1.10.0(crossws@0.3.5)(ws@8.18.3) - '@orpc/openapi': 1.10.0(crossws@0.3.5)(ws@8.18.3) - '@orpc/server': 1.10.0(crossws@0.3.5)(ws@8.18.3) - '@orpc/shared': 1.10.0 + '@orpc/contract': 1.10.0(@opentelemetry/api@1.9.0) + '@orpc/json-schema': 1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3) + '@orpc/openapi': 1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3) + '@orpc/server': 1.10.0(@opentelemetry/api@1.9.0)(crossws@0.3.5)(ws@8.18.3) + '@orpc/shared': 1.10.0(@opentelemetry/api@1.9.0) escape-string-regexp: 5.0.0 wildcard-match: 5.1.4 zod: 4.1.12 @@ -8551,6 +8638,8 @@ snapshots: '@ungap/structured-clone@1.3.0': {} + '@vercel/oidc@3.0.3': {} + '@vitest/coverage-v8@3.2.4(vitest@3.2.4)': dependencies: '@ampproject/remapping': 2.3.0 @@ -8650,6 +8739,14 @@ snapshots: clean-stack: 5.3.0 indent-string: 5.0.0 + ai@5.0.90(zod@4.1.12): + dependencies: + '@ai-sdk/gateway': 2.0.7(zod@4.1.12) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.16(zod@4.1.12) + '@opentelemetry/api': 1.9.0 + zod: 4.1.12 + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -9332,6 +9429,8 @@ snapshots: dependencies: is-obj: 2.0.0 + dotenv@17.2.3: {} + dset@3.1.4: {} dunder-proto@1.0.1: @@ -9518,6 +9617,8 @@ snapshots: eventemitter3@5.0.1: {} + eventsource-parser@3.0.6: {} + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -10332,6 +10433,8 @@ snapshots: json-schema-traverse@1.0.0: {} + json-schema@0.4.0: {} + json5@2.2.3: {} jsonfile@6.2.0: From ff7b9fe41247f6a849106bbb5c0e7eedef54600a Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 08:41:26 +0000 Subject: [PATCH 07/48] Initial translations --- biome.jsonc | 1 + browser/@translate.ts | 4 ++-- browser/locales/de/messages.js | 2 +- browser/locales/de/messages.po | 2 +- browser/locales/es/messages.js | 2 +- browser/locales/es/messages.po | 2 +- browser/locales/fr/messages.js | 2 +- browser/locales/fr/messages.po | 2 +- browser/locales/it/messages.js | 2 +- browser/locales/it/messages.po | 2 +- browser/locales/pt/messages.js | 2 +- browser/locales/pt/messages.po | 2 +- browser/locales/ru/messages.js | 2 +- browser/locales/ru/messages.po | 2 +- browser/locales/uk/messages.js | 2 +- browser/locales/uk/messages.po | 2 +- vitest.config.ts | 1 + 17 files changed, 18 insertions(+), 16 deletions(-) diff --git a/biome.jsonc b/biome.jsonc index 943bbef4..9f5e7d4a 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -11,6 +11,7 @@ "**/*d.ts", "**/*.module.css", "**/.react-router", + "**/messages.js", "pnpm-lock.yaml" ], "ignoreUnknown": true diff --git a/browser/@translate.ts b/browser/@translate.ts index d5521f48..dc8887fa 100644 --- a/browser/@translate.ts +++ b/browser/@translate.ts @@ -8,8 +8,8 @@ import { objectKeys } from "ts-extras" import { LanguageIdDefault, Languages } from "#constants/language.ts" import type * as types from "#types/index.ts" -dotenv.config() process.chdir(import.meta.dirname) +dotenv.config() const $ = execa({ stdout: ["inherit", "pipe"], @@ -36,7 +36,7 @@ async function translateLanguage(languageId: types.LanguageId) { const content = await readFile(path) const { text } = await generateText({ - model: openai("gpt-5"), + model: openai("gpt-4.1"), prompt: ` You are a professional translator. Here is a PO (gettext) file. diff --git a/browser/locales/de/messages.js b/browser/locales/de/messages.js index 396dfb18..d8f2ef7f 100644 --- a/browser/locales/de/messages.js +++ b/browser/locales/de/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Unterstütze das Projekt durch\"]}")}; \ No newline at end of file diff --git a/browser/locales/de/messages.po b/browser/locales/de/messages.po index 8e77ebcd..29bb42f9 100644 --- a/browser/locales/de/messages.po +++ b/browser/locales/de/messages.po @@ -15,4 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "" +msgstr "Unterstütze das Projekt durch" \ No newline at end of file diff --git a/browser/locales/es/messages.js b/browser/locales/es/messages.js index 396dfb18..b841254d 100644 --- a/browser/locales/es/messages.js +++ b/browser/locales/es/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Apoya el proyecto mediante\"]}")}; \ No newline at end of file diff --git a/browser/locales/es/messages.po b/browser/locales/es/messages.po index e6b55f5c..659b7ac6 100644 --- a/browser/locales/es/messages.po +++ b/browser/locales/es/messages.po @@ -15,4 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "" +msgstr "Apoya el proyecto mediante" \ No newline at end of file diff --git a/browser/locales/fr/messages.js b/browser/locales/fr/messages.js index 396dfb18..81fcca07 100644 --- a/browser/locales/fr/messages.js +++ b/browser/locales/fr/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Soutenez le projet en\"]}")}; \ No newline at end of file diff --git a/browser/locales/fr/messages.po b/browser/locales/fr/messages.po index c4707818..74d6360e 100644 --- a/browser/locales/fr/messages.po +++ b/browser/locales/fr/messages.po @@ -15,4 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "" +msgstr "Soutenez le projet en" \ No newline at end of file diff --git a/browser/locales/it/messages.js b/browser/locales/it/messages.js index 396dfb18..c4e8dbe8 100644 --- a/browser/locales/it/messages.js +++ b/browser/locales/it/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Sostieni il progetto con\"]}")}; \ No newline at end of file diff --git a/browser/locales/it/messages.po b/browser/locales/it/messages.po index 97bc18fd..5a9058da 100644 --- a/browser/locales/it/messages.po +++ b/browser/locales/it/messages.po @@ -15,4 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "" +msgstr "Sostieni il progetto con" \ No newline at end of file diff --git a/browser/locales/pt/messages.js b/browser/locales/pt/messages.js index 396dfb18..e94e81dd 100644 --- a/browser/locales/pt/messages.js +++ b/browser/locales/pt/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Apoie o projeto por meio de\"]}")}; \ No newline at end of file diff --git a/browser/locales/pt/messages.po b/browser/locales/pt/messages.po index 76769025..ba0522d0 100644 --- a/browser/locales/pt/messages.po +++ b/browser/locales/pt/messages.po @@ -15,4 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "" +msgstr "Apoie o projeto por meio de" \ No newline at end of file diff --git a/browser/locales/ru/messages.js b/browser/locales/ru/messages.js index 396dfb18..d0f584a7 100644 --- a/browser/locales/ru/messages.js +++ b/browser/locales/ru/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Поддержите проект:\"]}")}; \ No newline at end of file diff --git a/browser/locales/ru/messages.po b/browser/locales/ru/messages.po index 147ea528..496b51f4 100644 --- a/browser/locales/ru/messages.po +++ b/browser/locales/ru/messages.po @@ -15,4 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "" +msgstr "Поддержите проект:" \ No newline at end of file diff --git a/browser/locales/uk/messages.js b/browser/locales/uk/messages.js index 396dfb18..9c1546ff 100644 --- a/browser/locales/uk/messages.js +++ b/browser/locales/uk/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Підтримайте проєкт через\"]}")}; \ No newline at end of file diff --git a/browser/locales/uk/messages.po b/browser/locales/uk/messages.po index 6897dc0f..15522108 100644 --- a/browser/locales/uk/messages.po +++ b/browser/locales/uk/messages.po @@ -15,4 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "" +msgstr "Підтримайте проєкт через" \ No newline at end of file diff --git a/vitest.config.ts b/vitest.config.ts index 9289ddde..650c880a 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -26,6 +26,7 @@ export default defineConfig({ "**/coverage/**", "**/entrypoints/**", "**/examples/**", + "**/messages.js", "**/program.ts", "**/index.ts", "**/main.ts", From 149efd75820ee4e3dc4003ac5f9d47e78f91ad52 Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 08:49:16 +0000 Subject: [PATCH 08/48] Removed messages.js files --- .gitignore | 1 + biome.jsonc | 1 - browser/locales/de/messages.js | 1 - browser/locales/de/messages.po | 2 +- browser/locales/en/messages.js | 1 - browser/locales/es/messages.js | 1 - browser/locales/es/messages.po | 4 +++- browser/locales/fr/messages.js | 1 - browser/locales/fr/messages.po | 2 +- browser/locales/it/messages.js | 1 - browser/locales/it/messages.po | 4 +++- browser/locales/pt/messages.js | 1 - browser/locales/pt/messages.po | 2 +- browser/locales/ru/messages.js | 1 - browser/locales/uk/messages.js | 1 - browser/locales/uk/messages.po | 2 +- browser/package.json | 2 ++ pnpm-lock.yaml | 38 ++++++++++++++++++++++++++++++++++ 18 files changed, 51 insertions(+), 15 deletions(-) delete mode 100644 browser/locales/de/messages.js delete mode 100644 browser/locales/en/messages.js delete mode 100644 browser/locales/es/messages.js delete mode 100644 browser/locales/fr/messages.js delete mode 100644 browser/locales/it/messages.js delete mode 100644 browser/locales/pt/messages.js delete mode 100644 browser/locales/ru/messages.js delete mode 100644 browser/locales/uk/messages.js diff --git a/.gitignore b/.gitignore index ae61cc78..b1d2ab6b 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,4 @@ dist/ .mcp.json .env .env.local +messages.js diff --git a/biome.jsonc b/biome.jsonc index 9f5e7d4a..943bbef4 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -11,7 +11,6 @@ "**/*d.ts", "**/*.module.css", "**/.react-router", - "**/messages.js", "pnpm-lock.yaml" ], "ignoreUnknown": true diff --git a/browser/locales/de/messages.js b/browser/locales/de/messages.js deleted file mode 100644 index d8f2ef7f..00000000 --- a/browser/locales/de/messages.js +++ /dev/null @@ -1 +0,0 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Unterstütze das Projekt durch\"]}")}; \ No newline at end of file diff --git a/browser/locales/de/messages.po b/browser/locales/de/messages.po index 29bb42f9..9776552e 100644 --- a/browser/locales/de/messages.po +++ b/browser/locales/de/messages.po @@ -15,4 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "Unterstütze das Projekt durch" \ No newline at end of file +msgstr "Unterstütze das Projekt durch" diff --git a/browser/locales/en/messages.js b/browser/locales/en/messages.js deleted file mode 100644 index 396dfb18..00000000 --- a/browser/locales/en/messages.js +++ /dev/null @@ -1 +0,0 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Support the project by\"]}")}; \ No newline at end of file diff --git a/browser/locales/es/messages.js b/browser/locales/es/messages.js deleted file mode 100644 index b841254d..00000000 --- a/browser/locales/es/messages.js +++ /dev/null @@ -1 +0,0 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Apoya el proyecto mediante\"]}")}; \ No newline at end of file diff --git a/browser/locales/es/messages.po b/browser/locales/es/messages.po index 659b7ac6..3ef939f1 100644 --- a/browser/locales/es/messages.po +++ b/browser/locales/es/messages.po @@ -1,3 +1,4 @@ +```po msgid "" msgstr "" "POT-Creation-Date: 2025-11-10 07:34+0000\n" @@ -15,4 +16,5 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "Apoya el proyecto mediante" \ No newline at end of file +msgstr "Apoya el proyecto mediante" +``` \ No newline at end of file diff --git a/browser/locales/fr/messages.js b/browser/locales/fr/messages.js deleted file mode 100644 index 81fcca07..00000000 --- a/browser/locales/fr/messages.js +++ /dev/null @@ -1 +0,0 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Soutenez le projet en\"]}")}; \ No newline at end of file diff --git a/browser/locales/fr/messages.po b/browser/locales/fr/messages.po index 74d6360e..4cfd15b7 100644 --- a/browser/locales/fr/messages.po +++ b/browser/locales/fr/messages.po @@ -15,4 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "Soutenez le projet en" \ No newline at end of file +msgstr "Soutenez le projet en" diff --git a/browser/locales/it/messages.js b/browser/locales/it/messages.js deleted file mode 100644 index c4e8dbe8..00000000 --- a/browser/locales/it/messages.js +++ /dev/null @@ -1 +0,0 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Sostieni il progetto con\"]}")}; \ No newline at end of file diff --git a/browser/locales/it/messages.po b/browser/locales/it/messages.po index 5a9058da..d6c648f4 100644 --- a/browser/locales/it/messages.po +++ b/browser/locales/it/messages.po @@ -1,3 +1,4 @@ +```po msgid "" msgstr "" "POT-Creation-Date: 2025-11-10 07:34+0000\n" @@ -15,4 +16,5 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "Sostieni il progetto con" \ No newline at end of file +msgstr "Sostieni il progetto con" +``` \ No newline at end of file diff --git a/browser/locales/pt/messages.js b/browser/locales/pt/messages.js deleted file mode 100644 index e94e81dd..00000000 --- a/browser/locales/pt/messages.js +++ /dev/null @@ -1 +0,0 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Apoie o projeto por meio de\"]}")}; \ No newline at end of file diff --git a/browser/locales/pt/messages.po b/browser/locales/pt/messages.po index ba0522d0..757b8e4a 100644 --- a/browser/locales/pt/messages.po +++ b/browser/locales/pt/messages.po @@ -15,4 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "Apoie o projeto por meio de" \ No newline at end of file +msgstr "Apoie o projeto por meio de" diff --git a/browser/locales/ru/messages.js b/browser/locales/ru/messages.js deleted file mode 100644 index d0f584a7..00000000 --- a/browser/locales/ru/messages.js +++ /dev/null @@ -1 +0,0 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Поддержите проект:\"]}")}; \ No newline at end of file diff --git a/browser/locales/uk/messages.js b/browser/locales/uk/messages.js deleted file mode 100644 index 9c1546ff..00000000 --- a/browser/locales/uk/messages.js +++ /dev/null @@ -1 +0,0 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{\"yFAi8k\":[\"Підтримайте проєкт через\"]}")}; \ No newline at end of file diff --git a/browser/locales/uk/messages.po b/browser/locales/uk/messages.po index 15522108..7dc0e739 100644 --- a/browser/locales/uk/messages.po +++ b/browser/locales/uk/messages.po @@ -15,4 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "Підтримайте проєкт через" \ No newline at end of file +msgstr "Підтримайте проєкт через" diff --git a/browser/package.json b/browser/package.json index 6a995ee1..b23079fc 100644 --- a/browser/package.json +++ b/browser/package.json @@ -26,6 +26,8 @@ "@lingui/cli": "5.5.2", "@lingui/core": "5.5.2", "@lingui/react": "5.5.2", + "@lingui/swc-plugin": "5.6.1", + "@lingui/vite-plugin": "5.5.2", "@loglayer/transport-tslog": "3.0.4", "@mantine/core": "8.3.5", "@mantine/form": "8.3.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26476f34..0c6294de 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -95,6 +95,12 @@ importers: '@lingui/react': specifier: 5.5.2 version: 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2))(react@19.2.0) + '@lingui/swc-plugin': + specifier: 5.6.1 + version: 5.6.1(@lingui/core@5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2))) + '@lingui/vite-plugin': + specifier: 5.5.2 + version: 5.5.2(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) '@loglayer/transport-tslog': specifier: 3.0.4 version: 3.0.4(tslog@4.10.2) @@ -1565,6 +1571,24 @@ packages: babel-plugin-macros: optional: true + '@lingui/swc-plugin@5.6.1': + resolution: {integrity: sha512-kT/ghCKMlTa+SJZU/xn2vvU1QE3/NO3m3Feg6r2OVOovAB6VHKShVElU5truBC2KXn/cPqE9Kz2Yj0+jUmO6xQ==} + peerDependencies: + '@lingui/core': '5' + '@swc/core': '*' + next: '*' + peerDependenciesMeta: + '@swc/core': + optional: true + next: + optional: true + + '@lingui/vite-plugin@5.5.2': + resolution: {integrity: sha512-xLAfNKO2UTLJ8KOQP8IZLZdOLtIJztwSYnYaWUHUHGAK+ZmzW1UcHqtNgfWprxRC/s1rvn9kxdglVeT7tzpZBw==} + engines: {node: '>=20.0.0'} + peerDependencies: + vite: ^3 || ^4 || ^5.0.9 || ^6 || ^7 + '@loglayer/context-manager@1.1.6': resolution: {integrity: sha512-kntdCN9MtNctoMpDBMk9D1begChINbdYJNso5YLB0bbKNIy819rKfarSn7Xmtcq0aBxFUHPp04wj6XnvWseFOQ==} engines: {node: '>=18'} @@ -7571,6 +7595,20 @@ snapshots: optionalDependencies: '@lingui/babel-plugin-lingui-macro': 5.5.2(typescript@5.9.2) + '@lingui/swc-plugin@5.6.1(@lingui/core@5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)))': + dependencies: + '@lingui/core': 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)) + + '@lingui/vite-plugin@5.5.2(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))': + dependencies: + '@lingui/cli': 5.5.2(typescript@5.9.2) + '@lingui/conf': 5.5.2(typescript@5.9.2) + vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - typescript + '@loglayer/context-manager@1.1.6': dependencies: '@loglayer/shared': 2.5.3 From 6f0e2f2d6c530cf9f9bf80e6e71a4bf893a93029 Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 08:57:34 +0000 Subject: [PATCH 09/48] Added vite-lingui --- browser/package.json | 1 - browser/vite.config.ts | 2 ++ pnpm-lock.yaml | 19 ------------------- 3 files changed, 2 insertions(+), 20 deletions(-) diff --git a/browser/package.json b/browser/package.json index b23079fc..64bc8c82 100644 --- a/browser/package.json +++ b/browser/package.json @@ -26,7 +26,6 @@ "@lingui/cli": "5.5.2", "@lingui/core": "5.5.2", "@lingui/react": "5.5.2", - "@lingui/swc-plugin": "5.6.1", "@lingui/vite-plugin": "5.5.2", "@loglayer/transport-tslog": "3.0.4", "@mantine/core": "8.3.5", diff --git a/browser/vite.config.ts b/browser/vite.config.ts index b03b1869..1d2d46db 100644 --- a/browser/vite.config.ts +++ b/browser/vite.config.ts @@ -1,4 +1,5 @@ import { cloudflare } from "@cloudflare/vite-plugin" +import { lingui } from "@lingui/vite-plugin" import { reactRouter } from "@react-router/dev/vite" import { defineConfig } from "vite" import devtoolsJson from "vite-plugin-devtools-json" @@ -7,6 +8,7 @@ import svgr from "vite-plugin-svgr" export default defineConfig({ assetsInclude: ["**/*.md"], plugins: [ + lingui(), cloudflare({ viteEnvironment: { name: "ssr" } }), devtoolsJson(), reactRouter(), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c6294de..38667637 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -95,9 +95,6 @@ importers: '@lingui/react': specifier: 5.5.2 version: 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2))(react@19.2.0) - '@lingui/swc-plugin': - specifier: 5.6.1 - version: 5.6.1(@lingui/core@5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2))) '@lingui/vite-plugin': specifier: 5.5.2 version: 5.5.2(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) @@ -1571,18 +1568,6 @@ packages: babel-plugin-macros: optional: true - '@lingui/swc-plugin@5.6.1': - resolution: {integrity: sha512-kT/ghCKMlTa+SJZU/xn2vvU1QE3/NO3m3Feg6r2OVOovAB6VHKShVElU5truBC2KXn/cPqE9Kz2Yj0+jUmO6xQ==} - peerDependencies: - '@lingui/core': '5' - '@swc/core': '*' - next: '*' - peerDependenciesMeta: - '@swc/core': - optional: true - next: - optional: true - '@lingui/vite-plugin@5.5.2': resolution: {integrity: sha512-xLAfNKO2UTLJ8KOQP8IZLZdOLtIJztwSYnYaWUHUHGAK+ZmzW1UcHqtNgfWprxRC/s1rvn9kxdglVeT7tzpZBw==} engines: {node: '>=20.0.0'} @@ -7595,10 +7580,6 @@ snapshots: optionalDependencies: '@lingui/babel-plugin-lingui-macro': 5.5.2(typescript@5.9.2) - '@lingui/swc-plugin@5.6.1(@lingui/core@5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)))': - dependencies: - '@lingui/core': 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)) - '@lingui/vite-plugin@5.5.2(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))': dependencies: '@lingui/cli': 5.5.2(typescript@5.9.2) From 6daaa5d9128068be34f576a84b40e0a03b80a2af Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 09:06:36 +0000 Subject: [PATCH 10/48] Addded lingui provider --- browser/components/System/System.tsx | 8 +- browser/helpers/locale.ts | 9 ++ browser/package.json | 1 + browser/vite.config.ts | 4 +- pnpm-lock.yaml | 154 +++++++++++++++++++++++---- 5 files changed, 152 insertions(+), 24 deletions(-) create mode 100644 browser/helpers/locale.ts diff --git a/browser/components/System/System.tsx b/browser/components/System/System.tsx index 1c19fc37..a26050d1 100644 --- a/browser/components/System/System.tsx +++ b/browser/components/System/System.tsx @@ -1,10 +1,12 @@ +import { i18n } from "@lingui/core" +import { I18nProvider } from "@lingui/react" import { ColorSchemeScript, MantineProvider } from "@mantine/core" import { QueryClient, QueryClientProvider } from "@tanstack/react-query" import { omit } from "es-toolkit" import { useMemo, useState } from "react" import { I18nextProvider } from "react-i18next" import { getRevisionStaleTime } from "#helpers/revision.ts" -import { i18n } from "#i18n.ts" +import { i18n as i18nLegacy } from "#i18n.ts" import { theme } from "#theme.ts" import type * as types from "#types/index.ts" import { SystemContext } from "./context.ts" @@ -17,7 +19,7 @@ export function System(props: { const [queryClient] = useState(createQueryClient) const i18nForLanguage = useMemo(() => { - return i18n.cloneInstance({ lng: payload.language.languageId }) + return i18nLegacy.cloneInstance({ lng: payload.language.languageId }) }, [payload.language.languageId]) return ( @@ -26,7 +28,7 @@ export function System(props: { - {props.children} + {props.children} diff --git a/browser/helpers/locale.ts b/browser/helpers/locale.ts new file mode 100644 index 00000000..c7472f2d --- /dev/null +++ b/browser/helpers/locale.ts @@ -0,0 +1,9 @@ +import { i18n } from "@lingui/core" +import type * as types from "#types/index.ts" + +export async function activateLocale(languageId: types.LanguageId) { + const { messages } = await import(`../../locales/${languageId}.po`) + + i18n.load(languageId, messages) + i18n.activate(languageId) +} diff --git a/browser/package.json b/browser/package.json index 64bc8c82..00dd483e 100644 --- a/browser/package.json +++ b/browser/package.json @@ -62,6 +62,7 @@ "ts-extras": "0.14.0", "tslog": "4.10.2", "vaul": "1.1.2", + "vite-plugin-babel-macros": "1.0.6", "vite-plugin-devtools-json": "1.0.0", "vite-plugin-svgr": "4.5.0", "wrangler": "4.43.0", diff --git a/browser/vite.config.ts b/browser/vite.config.ts index 1d2d46db..d05b8333 100644 --- a/browser/vite.config.ts +++ b/browser/vite.config.ts @@ -2,15 +2,17 @@ import { cloudflare } from "@cloudflare/vite-plugin" import { lingui } from "@lingui/vite-plugin" import { reactRouter } from "@react-router/dev/vite" import { defineConfig } from "vite" +import macrosPlugin from "vite-plugin-babel-macros" import devtoolsJson from "vite-plugin-devtools-json" import svgr from "vite-plugin-svgr" export default defineConfig({ assetsInclude: ["**/*.md"], plugins: [ - lingui(), cloudflare({ viteEnvironment: { name: "ssr" } }), devtoolsJson(), + macrosPlugin(), + lingui(), reactRouter(), svgr(), ], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38667637..16352168 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -88,16 +88,16 @@ importers: version: link:../service '@lingui/cli': specifier: 5.5.2 - version: 5.5.2(typescript@5.9.2) + version: 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2) '@lingui/core': specifier: 5.5.2 - version: 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)) + version: 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2))(babel-plugin-macros@3.1.0) '@lingui/react': specifier: 5.5.2 - version: 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2))(react@19.2.0) + version: 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2))(babel-plugin-macros@3.1.0)(react@19.2.0) '@lingui/vite-plugin': specifier: 5.5.2 - version: 5.5.2(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) + version: 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) '@loglayer/transport-tslog': specifier: 3.0.4 version: 3.0.4(tslog@4.10.2) @@ -115,7 +115,7 @@ importers: version: 1.10.0(@opentelemetry/api@1.9.0) '@react-router/dev': specifier: 7.9.4 - version: 7.9.4(@types/node@24.2.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1) + version: 7.9.4(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1) '@tanstack/react-query': specifier: 5.90.3 version: 5.90.3(react@19.2.0) @@ -203,6 +203,9 @@ importers: vaul: specifier: 1.1.2 version: 1.1.2(@types/react-dom@19.2.0(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + vite-plugin-babel-macros: + specifier: 1.0.6 + version: 1.0.6(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) vite-plugin-devtools-json: specifier: 1.0.0 version: 1.0.0(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) @@ -2405,6 +2408,18 @@ packages: peerDependencies: react: ^18 || ^19 + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} @@ -2465,6 +2480,9 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + '@types/pg@8.15.5': resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==} @@ -2691,6 +2709,10 @@ packages: babel-dead-code-elimination@1.0.10: resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==} + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -3056,6 +3078,10 @@ packages: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + cosmiconfig@8.3.6: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} @@ -4906,6 +4932,9 @@ packages: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -5439,6 +5468,11 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -5819,6 +5853,10 @@ packages: resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} engines: {node: '>=14.18'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + svg-parser@2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} @@ -6266,6 +6304,12 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true + vite-plugin-babel-macros@1.0.6: + resolution: {integrity: sha512-7cCT8jtu5UjpE46pH7RyVltWw5FbhDAtQliZ6QGqRNR5RUZKdAsB0CDjuF+VBoDpnl0KuESPu22SoNqXRYYWyQ==} + engines: {node: '>=16'} + peerDependencies: + vite: '>=2' + vite-plugin-devtools-json@1.0.0: resolution: {integrity: sha512-MobvwqX76Vqt/O4AbnNMNWoXWGrKUqZbphCUle/J2KXH82yKQiunOeKnz/nqEPosPsoWWPP9FtNuPBSYpiiwkw==} peerDependencies: @@ -6539,6 +6583,10 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + yaml@2.8.1: resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} engines: {node: '>= 14.6'} @@ -7495,19 +7543,21 @@ snapshots: '@lingui/babel-plugin-extract-messages@5.5.2': {} - '@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)': + '@lingui/babel-plugin-lingui-macro@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2)': dependencies: '@babel/core': 7.28.4 '@babel/runtime': 7.28.4 '@babel/types': 7.28.4 '@lingui/conf': 5.5.2(typescript@5.9.2) - '@lingui/core': 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)) + '@lingui/core': 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2))(babel-plugin-macros@3.1.0) '@lingui/message-utils': 5.5.2 + optionalDependencies: + babel-plugin-macros: 3.1.0 transitivePeerDependencies: - supports-color - typescript - '@lingui/cli@5.5.2(typescript@5.9.2)': + '@lingui/cli@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2)': dependencies: '@babel/core': 7.28.4 '@babel/generator': 7.28.3 @@ -7515,9 +7565,9 @@ snapshots: '@babel/runtime': 7.28.4 '@babel/types': 7.28.4 '@lingui/babel-plugin-extract-messages': 5.5.2 - '@lingui/babel-plugin-lingui-macro': 5.5.2(typescript@5.9.2) + '@lingui/babel-plugin-lingui-macro': 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2) '@lingui/conf': 5.5.2(typescript@5.9.2) - '@lingui/core': 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)) + '@lingui/core': 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2))(babel-plugin-macros@3.1.0) '@lingui/format-po': 5.5.2(typescript@5.9.2) '@lingui/message-utils': 5.5.2 chokidar: 3.5.1 @@ -7551,12 +7601,13 @@ snapshots: transitivePeerDependencies: - typescript - '@lingui/core@5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2))': + '@lingui/core@5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2))(babel-plugin-macros@3.1.0)': dependencies: '@babel/runtime': 7.28.4 '@lingui/message-utils': 5.5.2 optionalDependencies: - '@lingui/babel-plugin-lingui-macro': 5.5.2(typescript@5.9.2) + '@lingui/babel-plugin-lingui-macro': 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2) + babel-plugin-macros: 3.1.0 '@lingui/format-po@5.5.2(typescript@5.9.2)': dependencies: @@ -7572,17 +7623,18 @@ snapshots: '@messageformat/parser': 5.1.1 js-sha256: 0.10.1 - '@lingui/react@5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2))(react@19.2.0)': + '@lingui/react@5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2))(babel-plugin-macros@3.1.0)(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 - '@lingui/core': 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(typescript@5.9.2)) + '@lingui/core': 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2))(babel-plugin-macros@3.1.0) react: 19.2.0 optionalDependencies: - '@lingui/babel-plugin-lingui-macro': 5.5.2(typescript@5.9.2) + '@lingui/babel-plugin-lingui-macro': 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2) + babel-plugin-macros: 3.1.0 - '@lingui/vite-plugin@5.5.2(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))': + '@lingui/vite-plugin@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))': dependencies: - '@lingui/cli': 5.5.2(typescript@5.9.2) + '@lingui/cli': 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2) '@lingui/conf': 5.5.2(typescript@5.9.2) vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) transitivePeerDependencies: @@ -8204,7 +8256,7 @@ snapshots: optionalDependencies: '@types/react': 19.2.2 - '@react-router/dev@7.9.4(@types/node@24.2.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1)': + '@react-router/dev@7.9.4(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1)': dependencies: '@babel/core': 7.28.4 '@babel/generator': 7.28.3 @@ -8219,7 +8271,7 @@ snapshots: arg: 5.0.2 babel-dead-code-elimination: 1.0.10 chokidar: 4.0.3 - dedent: 1.7.0 + dedent: 1.7.0(babel-plugin-macros@3.1.0) es-module-lexer: 1.7.0 exit-hook: 2.2.1 isbot: 5.1.31 @@ -8557,6 +8609,27 @@ snapshots: '@tanstack/query-core': 5.90.3 react: 19.2.0 + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.28.4 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.28.4 + '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 @@ -8619,6 +8692,8 @@ snapshots: '@types/normalize-package-data@2.4.4': {} + '@types/parse-json@4.0.2': {} + '@types/pg@8.15.5': dependencies: '@types/node': 24.2.0 @@ -8954,6 +9029,12 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.28.4 + cosmiconfig: 7.1.0 + resolve: 1.22.11 + bail@2.0.2: {} balanced-match@1.0.2: {} @@ -9321,6 +9402,14 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + cosmiconfig@8.3.6(typescript@5.9.2): dependencies: import-fresh: 3.3.1 @@ -9388,7 +9477,9 @@ snapshots: dependencies: character-entities: 2.0.2 - dedent@1.7.0: {} + dedent@1.7.0(babel-plugin-macros@3.1.0): + optionalDependencies: + babel-plugin-macros: 3.1.0 deep-eql@5.0.2: {} @@ -11504,6 +11595,8 @@ snapshots: path-key@4.0.0: {} + path-parse@1.0.7: {} + path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 @@ -12049,6 +12142,12 @@ snapshots: resolve-pkg-maps@1.0.0: optional: true + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 @@ -12550,6 +12649,8 @@ snapshots: has-flag: 4.0.0 supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} + svg-parser@2.0.4: {} tabbable@6.2.0: {} @@ -12936,6 +13037,17 @@ snapshots: - tsx - yaml + vite-plugin-babel-macros@1.0.6(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) + '@types/babel__core': 7.20.5 + babel-plugin-macros: 3.1.0 + vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + transitivePeerDependencies: + - supports-color + vite-plugin-devtools-json@1.0.0(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): dependencies: uuid: 11.1.0 @@ -13152,6 +13264,8 @@ snapshots: yallist@3.1.1: {} + yaml@1.10.2: {} + yaml@2.8.1: {} yargs-parser@20.2.9: {} From 9f545cd435e535a98c06c3a92495984bb501261b Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 10:02:32 +0000 Subject: [PATCH 11/48] Implemented activateLocale --- browser/@translate.ts | 3 ++- browser/helpers/locale.ts | 29 +++++++++++++++++++++++++++-- browser/lingui.config.ts | 3 ++- browser/package.json | 1 + browser/routes/entry.client.tsx | 4 ++++ browser/routes/entry.server.tsx | 4 ++++ pnpm-lock.yaml | 9 +++++++++ 7 files changed, 49 insertions(+), 4 deletions(-) diff --git a/browser/@translate.ts b/browser/@translate.ts index dc8887fa..1002a574 100644 --- a/browser/@translate.ts +++ b/browser/@translate.ts @@ -19,7 +19,8 @@ const $ = execa({ await $`lingui extract` await translateLanguages() -await $`lingui compile` +// Handled by Vite +// await $`lingui compile` async function translateLanguages() { for (const languageId of objectKeys(Languages)) { diff --git a/browser/helpers/locale.ts b/browser/helpers/locale.ts index c7472f2d..3968fed2 100644 --- a/browser/helpers/locale.ts +++ b/browser/helpers/locale.ts @@ -1,8 +1,33 @@ import { i18n } from "@lingui/core" +import { detect, fromHtmlTag } from "@lingui/detect-locale" +import { LanguageIdDefault, Languages } from "#constants/language.ts" import type * as types from "#types/index.ts" -export async function activateLocale(languageId: types.LanguageId) { - const { messages } = await import(`../../locales/${languageId}.po`) +export async function detectServerLocal(request: Request) { + const { pathname } = new URL(request.url) + const [languageParam] = pathname.split("/") + + const language = + Object.values(Languages).find( + language => language.languageId === languageParam, + ) ?? Languages[LanguageIdDefault] + + return language.languageId +} + +export async function detectClientLocal() { + const langTag = detect(fromHtmlTag("lang")) + + const language = + Object.values(Languages).find( + language => language.languageId === langTag, + ) ?? Languages[LanguageIdDefault] + + return language.languageId +} + +export async function activateLocal(languageId: types.LanguageId) { + const { messages } = await import(`../locales/${languageId}.po`) i18n.load(languageId, messages) i18n.activate(languageId) diff --git a/browser/lingui.config.ts b/browser/lingui.config.ts index f4e14626..89c74187 100644 --- a/browser/lingui.config.ts +++ b/browser/lingui.config.ts @@ -7,7 +7,8 @@ export default defineConfig({ catalogs: [ { path: "/locales/{locale}/messages", - include: ["/app", "/components"], + // TODO: Remove routes + include: ["/app", "/components", "/routes"], }, ], }) diff --git a/browser/package.json b/browser/package.json index 00dd483e..19c7f1ea 100644 --- a/browser/package.json +++ b/browser/package.json @@ -25,6 +25,7 @@ "@dpkit/service": "workspace:*", "@lingui/cli": "5.5.2", "@lingui/core": "5.5.2", + "@lingui/detect-locale": "5.5.2", "@lingui/react": "5.5.2", "@lingui/vite-plugin": "5.5.2", "@loglayer/transport-tslog": "3.0.4", diff --git a/browser/routes/entry.client.tsx b/browser/routes/entry.client.tsx index 3dd1e01a..027f3dcc 100644 --- a/browser/routes/entry.client.tsx +++ b/browser/routes/entry.client.tsx @@ -1,6 +1,10 @@ import { StrictMode, startTransition } from "react" import { hydrateRoot } from "react-dom/client" import { HydratedRouter } from "react-router/dom" +import { activateLocal, detectClientLocal } from "#helpers/locale.ts" + +const languageId = await detectClientLocal() +await activateLocal(languageId) startTransition(() => { hydrateRoot( diff --git a/browser/routes/entry.server.tsx b/browser/routes/entry.server.tsx index d18dcc54..0bfb9b70 100644 --- a/browser/routes/entry.server.tsx +++ b/browser/routes/entry.server.tsx @@ -2,6 +2,7 @@ import { isbot } from "isbot" import { renderToReadableStream } from "react-dom/server" import type { AppLoadContext, EntryContext } from "react-router" import { ServerRouter } from "react-router" +import { activateLocal, detectServerLocal } from "#helpers/locale.ts" export default async function handleRequest( request: Request, @@ -13,6 +14,9 @@ export default async function handleRequest( let shellRendered = false const userAgent = request.headers.get("user-agent") + const languageId = await detectServerLocal(request) + await activateLocal(languageId) + const body = await renderToReadableStream( , { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 16352168..57a5b9dd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -92,6 +92,9 @@ importers: '@lingui/core': specifier: 5.5.2 version: 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2))(babel-plugin-macros@3.1.0) + '@lingui/detect-locale': + specifier: 5.5.2 + version: 5.5.2 '@lingui/react': specifier: 5.5.2 version: 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2))(babel-plugin-macros@3.1.0)(react@19.2.0) @@ -1550,6 +1553,10 @@ packages: babel-plugin-macros: optional: true + '@lingui/detect-locale@5.5.2': + resolution: {integrity: sha512-wupaG30CV3FVK28wAz6HlJrd0cVCorrDvJoxzHfGCpcY6oqihgHuEVjdl5oFcY1RugIQVBQIiDnCRb+nzAoMdg==} + engines: {node: '>=20.0.0'} + '@lingui/format-po@5.5.2': resolution: {integrity: sha512-xqkrCzsdFlUxxa2WPEB1kJGUsH3iyzjzcMsNjE7VTRv6rddGwt9mEKfqO+VAKIXcbmGKHWMcvQ6bqzhlqTlACA==} engines: {node: '>=20.0.0'} @@ -7609,6 +7616,8 @@ snapshots: '@lingui/babel-plugin-lingui-macro': 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2) babel-plugin-macros: 3.1.0 + '@lingui/detect-locale@5.5.2': {} + '@lingui/format-po@5.5.2(typescript@5.9.2)': dependencies: '@lingui/conf': 5.5.2(typescript@5.9.2) From 0d11dcd4a3227d99d64f43fe7fb05033f950279b Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 10:09:00 +0000 Subject: [PATCH 12/48] Upgraded vite/vitest --- browser/package.json | 2 +- dataset/plugins/ckan/package/save.spec.ts | 1 + dataset/plugins/github/package/save.spec.ts | 1 + dataset/plugins/zenodo/package/save.spec.ts | 1 + package.json | 10 +- pnpm-lock.yaml | 496 +++++++++++--------- 6 files changed, 288 insertions(+), 223 deletions(-) diff --git a/browser/package.json b/browser/package.json index 19c7f1ea..1aa5731e 100644 --- a/browser/package.json +++ b/browser/package.json @@ -20,7 +20,7 @@ "@ai-sdk/openai": "2.0.64", "@clack/prompts": "^0.11.0", "@cloudflare/containers": "0.0.28", - "@cloudflare/vite-plugin": "1.13.13", + "@cloudflare/vite-plugin": "1.14.0", "@dpkit/library": "workspace:*", "@dpkit/service": "workspace:*", "@lingui/cli": "5.5.2", diff --git a/dataset/plugins/ckan/package/save.spec.ts b/dataset/plugins/ckan/package/save.spec.ts index 19c0a483..b32abc1a 100644 --- a/dataset/plugins/ckan/package/save.spec.ts +++ b/dataset/plugins/ckan/package/save.spec.ts @@ -35,6 +35,7 @@ describe("savePackageToCkan", () => { beforeEach(() => { fetchMock = vi.fn() + // @ts-ignore globalThis.fetch = fetchMock }) diff --git a/dataset/plugins/github/package/save.spec.ts b/dataset/plugins/github/package/save.spec.ts index c3054eb7..72de7874 100644 --- a/dataset/plugins/github/package/save.spec.ts +++ b/dataset/plugins/github/package/save.spec.ts @@ -33,6 +33,7 @@ describe("savePackageToGithub", () => { beforeEach(() => { fetchMock = vi.fn() + // @ts-ignore globalThis.fetch = fetchMock }) diff --git a/dataset/plugins/zenodo/package/save.spec.ts b/dataset/plugins/zenodo/package/save.spec.ts index 019771be..94824008 100644 --- a/dataset/plugins/zenodo/package/save.spec.ts +++ b/dataset/plugins/zenodo/package/save.spec.ts @@ -33,6 +33,7 @@ describe("savePackageToZenodo", () => { beforeEach(() => { fetchMock = vi.fn() + // @ts-ignore globalThis.fetch = fetchMock }) diff --git a/package.json b/package.json index f498a548..31da55f6 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,8 @@ "@biomejs/biome": "1.9.4", "@semantic-release/exec": "7.1.0", "@types/node": "24.2.0", - "@vitest/coverage-v8": "3.2.4", - "@vitest/ui": "3.2.4", + "@vitest/coverage-v8": "4.0.8", + "@vitest/ui": "4.0.8", "conventional-changelog-conventionalcommits": "9.1.0", "execa": "9.6.0", "husky": "9.1.7", @@ -39,9 +39,9 @@ "tempy": "3.1.0", "type-fest": "4.41.0", "typescript": "5.9.2", - "vite": "7.1.10", - "vitest": "3.2.4", - "vitest-polly": "1.3.0" + "vite": "7.2.2", + "vitest": "4.0.8", + "vitest-polly": "1.3.1" }, "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 57a5b9dd..e1dd1f46 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,11 +18,11 @@ importers: specifier: 24.2.0 version: 24.2.0 '@vitest/coverage-v8': - specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4) + specifier: 4.0.8 + version: 4.0.8(vitest@4.0.8) '@vitest/ui': - specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4) + specifier: 4.0.8 + version: 4.0.8(vitest@4.0.8) conventional-changelog-conventionalcommits: specifier: 9.1.0 version: 9.1.0 @@ -48,14 +48,14 @@ importers: specifier: 5.9.2 version: 5.9.2 vite: - specifier: 7.1.10 - version: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + specifier: 7.2.2 + version: 7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) vitest: - specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + specifier: 4.0.8 + version: 4.0.8(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@4.0.8)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) vitest-polly: - specifier: 1.3.0 - version: 1.3.0(vitest@3.2.4) + specifier: 1.3.1 + version: 1.3.1(vitest@4.0.8) audio: dependencies: @@ -78,8 +78,8 @@ importers: specifier: 0.0.28 version: 0.0.28 '@cloudflare/vite-plugin': - specifier: 1.13.13 - version: 1.13.13(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20251008.0)(wrangler@4.43.0) + specifier: 1.14.0 + version: 1.14.0(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20251008.0)(wrangler@4.43.0) '@dpkit/library': specifier: workspace:* version: link:../library @@ -100,7 +100,7 @@ importers: version: 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2))(babel-plugin-macros@3.1.0)(react@19.2.0) '@lingui/vite-plugin': specifier: 5.5.2 - version: 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) + version: 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) '@loglayer/transport-tslog': specifier: 3.0.4 version: 3.0.4(tslog@4.10.2) @@ -118,7 +118,7 @@ importers: version: 1.10.0(@opentelemetry/api@1.9.0) '@react-router/dev': specifier: 7.9.4 - version: 7.9.4(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1) + version: 7.9.4(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1) '@tanstack/react-query': specifier: 5.90.3 version: 5.90.3(react@19.2.0) @@ -208,13 +208,13 @@ importers: version: 1.1.2(@types/react-dom@19.2.0(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) vite-plugin-babel-macros: specifier: 1.0.6 - version: 1.0.6(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) + version: 1.0.6(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) vite-plugin-devtools-json: specifier: 1.0.0 - version: 1.0.0(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) + version: 1.0.0(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) vite-plugin-svgr: specifier: 4.5.0 - version: 4.5.0(rollup@4.52.4)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) + version: 4.5.0(rollup@4.52.4)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) wrangler: specifier: 4.43.0 version: 4.43.0 @@ -602,10 +602,6 @@ packages: resolution: {integrity: sha512-qI/5TaaaCZE4yeSZ83lu0+xi1r88JSxUjnH4OP/iZF7+KKZ75u3ee5isd0LxX+6N8U0npL61YrpbthILHB6BnA==} engines: {node: '>=18'} - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - '@ascorbic/loader-utils@1.0.2': resolution: {integrity: sha512-pg43g83gojVtEsAkXfjWuzJhuXneJp4wM/leBftGkCPV3yxKgB92EWA+nWu735BgbBMph3P7DrVqVc3ikt+dJA==} peerDependencies: @@ -716,6 +712,10 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -729,6 +729,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-syntax-jsx@7.27.1': resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} @@ -775,6 +780,10 @@ packages: resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} @@ -857,11 +866,20 @@ packages: workerd: optional: true - '@cloudflare/vite-plugin@1.13.13': - resolution: {integrity: sha512-RgyoPy0fzqEETVmhzb2yhr2Jqz2N8dxwhL9+1bDiO0Bajdfb8cCURgBgppcRfmcYKlBTXYl9xvus+nnH5KRmRQ==} + '@cloudflare/unenv-preset@2.7.9': + resolution: {integrity: sha512-Drm7qlTKnvncEv+DANiQNEonq0H0LyIsoFZYJ6tJ8OhAoy5udIE8yp6BsVDYcIjcYLIybp4M7c/P7ly/56SoHg==} + peerDependencies: + unenv: 2.0.0-rc.24 + workerd: ^1.20250927.0 + peerDependenciesMeta: + workerd: + optional: true + + '@cloudflare/vite-plugin@1.14.0': + resolution: {integrity: sha512-awsY1p9szhwo2LyIBWnnsWagd1hhwIaKeDyh49jA3108QvaOkXgp486vEIaqPkQhZdCQZbPfDlBNEhkBBV3tdQ==} peerDependencies: vite: ^6.1.0 || ^7.0.0 - wrangler: ^4.43.0 + wrangler: ^4.46.0 '@cloudflare/workerd-darwin-64@1.20251008.0': resolution: {integrity: sha512-yph0H+8mMOK5Z9oDwjb8rI96oTVt4no5lZ43aorcbzsWG9VUIaXSXlBBoB3von6p4YCRW+J3n36fBM9XZ6TLaA==} @@ -869,30 +887,60 @@ packages: cpu: [x64] os: [darwin] + '@cloudflare/workerd-darwin-64@1.20251105.0': + resolution: {integrity: sha512-nztUP35wTtUKM+681dBWtUNSySNWELTV+LY43oWy7ZhK19/iBJPQoFY7xpvF7zy4qOOShtise259B65DS4/71Q==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + '@cloudflare/workerd-darwin-arm64@1.20251008.0': resolution: {integrity: sha512-Yc4lMGSbM4AEtYRpyDpmk77MsHb6X2BSwJgMgGsLVPmckM7ZHivZkJChfcNQjZ/MGR6nkhYc4iF6TcVS+UMEVw==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] + '@cloudflare/workerd-darwin-arm64@1.20251105.0': + resolution: {integrity: sha512-WS/dvPYTW/+gs8s0UvDqDY7wcuIAg/hUpjrMNGepr+Mo38vMU39FYhJQOly99oJCXxMluQqAnRKg09b/9Gr+Rg==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + '@cloudflare/workerd-linux-64@1.20251008.0': resolution: {integrity: sha512-AjoQnylw4/5G6SmfhZRsli7EuIK7ZMhmbxtU0jkpciTlVV8H01OsFOgS1d8zaTXMfkWamEfMouy8oH/L7B9YcQ==} engines: {node: '>=16'} cpu: [x64] os: [linux] + '@cloudflare/workerd-linux-64@1.20251105.0': + resolution: {integrity: sha512-RdHRHo/hpjR6sNw529FkmslVSz/K3Pb1+i3fIoqUrHCrZOUYzFyz3nLeZh4EYaAhcztLWiSTwBv54bcl4sG3wA==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + '@cloudflare/workerd-linux-arm64@1.20251008.0': resolution: {integrity: sha512-hRy9yyvzVq1HsqHZUmFkAr0C8JGjAD/PeeVEGCKL3jln3M9sNCKIrbDXiL+efe+EwajJNNlDxpO+s30uVWVaRg==} engines: {node: '>=16'} cpu: [arm64] os: [linux] + '@cloudflare/workerd-linux-arm64@1.20251105.0': + resolution: {integrity: sha512-5zkxQCqLjwrqZVVJh92J2Drv6xifkP8kN2ltjHdwZQlVzfDW48d7tAtCm1ZooUv204ixvZFarusCfL+IRjExZg==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + '@cloudflare/workerd-windows-64@1.20251008.0': resolution: {integrity: sha512-Gm0RR+ehfNMsScn2pUcn3N9PDUpy7FyvV9ecHEyclKttvztyFOcmsF14bxEaSVv7iM4TxWEBn1rclmYHxDM4ow==} engines: {node: '>=16'} cpu: [x64] os: [win32] + '@cloudflare/workerd-windows-64@1.20251105.0': + resolution: {integrity: sha512-6BpkfjBIbGR+4FBOcZGcWDLM0XQuoI6R9Dublj/BKf4pv0/xJ4zHdnaYUb5NIlC75L55Ouqw0CEJasoKlMjgnw==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -1488,10 +1536,6 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2529,48 +2573,48 @@ packages: resolution: {integrity: sha512-yNEQvPcVrK9sIe637+I0jD6leluPxzwJKx/Haw6F4H77CdDsszUn5V3o96LPziXkSNE2B83+Z3mjqGKBK/R6Gg==} engines: {node: '>= 20'} - '@vitest/coverage-v8@3.2.4': - resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} + '@vitest/coverage-v8@4.0.8': + resolution: {integrity: sha512-wQgmtW6FtPNn4lWUXi8ZSYLpOIb92j3QCujxX3sQ81NTfQ/ORnE0HtK7Kqf2+7J9jeveMGyGyc4NWc5qy3rC4A==} peerDependencies: - '@vitest/browser': 3.2.4 - vitest: 3.2.4 + '@vitest/browser': 4.0.8 + vitest: 4.0.8 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.2.4': - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + '@vitest/expect@4.0.8': + resolution: {integrity: sha512-Rv0eabdP/xjAHQGr8cjBm+NnLHNoL268lMDK85w2aAGLFoVKLd8QGnVon5lLtkXQCoYaNL0wg04EGnyKkkKhPA==} - '@vitest/mocker@3.2.4': - resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + '@vitest/mocker@4.0.8': + resolution: {integrity: sha512-9FRM3MZCedXH3+pIh+ME5Up2NBBHDq0wqwhOKkN4VnvCiKbVxddqH9mSGPZeawjd12pCOGnl+lo/ZGHt0/dQSg==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@3.2.4': - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@4.0.8': + resolution: {integrity: sha512-qRrjdRkINi9DaZHAimV+8ia9Gq6LeGz2CgIEmMLz3sBDYV53EsnLZbJMR1q84z1HZCMsf7s0orDgZn7ScXsZKg==} - '@vitest/runner@3.2.4': - resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + '@vitest/runner@4.0.8': + resolution: {integrity: sha512-mdY8Sf1gsM8hKJUQfiPT3pn1n8RF4QBcJYFslgWh41JTfrK1cbqY8whpGCFzBl45LN028g0njLCYm0d7XxSaQQ==} - '@vitest/snapshot@3.2.4': - resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + '@vitest/snapshot@4.0.8': + resolution: {integrity: sha512-Nar9OTU03KGiubrIOFhcfHg8FYaRaNT+bh5VUlNz8stFhCZPNrJvmZkhsr1jtaYvuefYFwK2Hwrq026u4uPWCw==} - '@vitest/spy@3.2.4': - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + '@vitest/spy@4.0.8': + resolution: {integrity: sha512-nvGVqUunyCgZH7kmo+Ord4WgZ7lN0sOULYXUOYuHr55dvg9YvMz3izfB189Pgp28w0vWFbEEfNc/c3VTrqrXeA==} - '@vitest/ui@3.2.4': - resolution: {integrity: sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==} + '@vitest/ui@4.0.8': + resolution: {integrity: sha512-F9jI5rSstNknPlTlPN2gcc4gpbaagowuRzw/OJzl368dvPun668Q182S8Q8P9PITgGCl5LAKXpzuue106eM4wA==} peerDependencies: - vitest: 3.2.4 + vitest: 4.0.8 - '@vitest/utils@3.2.4': - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vitest/utils@4.0.8': + resolution: {integrity: sha512-pdk2phO5NDvEFfUTxcTP8RFYjVj/kfLSPIN5ebP2Mu9kcIMeAQTbknqcFEyBcC4z2pJlJI9aS5UQjcYfhmKAow==} accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} @@ -2680,12 +2724,8 @@ packages: array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - ast-v8-to-istanbul@0.3.5: - resolution: {integrity: sha512-9SdXjNheSiE8bALAQCQQuT6fgQaoxJh7IRYrRGZ8/9nv8WhJeC1aXAwN8TbaOssGOukUvyvnkgD9+Yuykvl1aA==} + ast-v8-to-istanbul@0.3.8: + resolution: {integrity: sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==} astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} @@ -2846,8 +2886,8 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.3.3: - resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + chai@6.2.0: + resolution: {integrity: sha512-aUTnJc/JipRzJrNADXVvpVqi6CO0dn3nx4EVPxijri+fj3LUUDyZQOgVeW54Ob3Y1Xh9Iz8f+CgaCl8v0mn9bA==} engines: {node: '>=18'} chalk@2.4.2: @@ -2881,10 +2921,6 @@ packages: chardet@2.1.0: resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - chokidar@3.5.1: resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==} engines: {node: '>= 8.10.0'} @@ -3170,10 +3206,6 @@ packages: babel-plugin-macros: optional: true - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -4187,9 +4219,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.2.1: - resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -4222,9 +4251,15 @@ packages: magic-string@0.30.19: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + magicast@0.5.1: + resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} + make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -4481,6 +4516,11 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + miniflare@4.20251105.0: + resolution: {integrity: sha512-n+lCQbGLPjHFm5EKMohxCl+hLIki9rIlJSU9FkYKdJ62cGacetmTH5IgWUZhUFFM+NqhqZLOuWXTAsoZTm0hog==} + engines: {node: '>=18.0.0'} + hasBin: true + minimatch@10.1.1: resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} engines: {node: 20 || >=22} @@ -4966,10 +5006,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} - engines: {node: '>= 14.16'} - pg-cloudflare@1.2.7: resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} @@ -5766,8 +5802,8 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} stoppable@1.1.0: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} @@ -5821,9 +5857,6 @@ packages: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - strip-literal@3.1.0: - resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} - style-to-js@1.1.17: resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} @@ -5882,10 +5915,6 @@ packages: resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} engines: {node: '>=14.16'} - test-exclude@7.0.1: - resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} - engines: {node: '>=18'} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -5922,16 +5951,8 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@4.0.4: - resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} + tinyrainbow@3.0.3: + resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} engines: {node: '>=14.0.0'} to-arraybuffer@1.0.1: @@ -6067,6 +6088,9 @@ packages: unenv@2.0.0-rc.21: resolution: {integrity: sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==} + unenv@2.0.0-rc.24: + resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} + unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} engines: {node: '>=4'} @@ -6367,8 +6391,8 @@ packages: yaml: optional: true - vite@7.1.10: - resolution: {integrity: sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==} + vite@7.2.2: + resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -6415,22 +6439,24 @@ packages: vite: optional: true - vitest-polly@1.3.0: - resolution: {integrity: sha512-Kb4mnuKZKnpgG2pkbGAIIyz48ani2nY6Rs3jcOZn6dthyDLJDXe4QowvcgmjDT3hnJHAqojsAond+RCnUURRyg==} + vitest-polly@1.3.1: + resolution: {integrity: sha512-xKWjjUYUTbBc3I/dR9xHB9hkV66VJeeqW+7ZeyO4V0uXulJVH5HMIGcSollK9QtzNQCeWfEWXDFcoFQPFIurRQ==} engines: {node: ^24.0.0, pnpm: ^10.0.0} peerDependencies: vitest: ^3.2.4 - vitest@3.2.4: - resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vitest@4.0.8: + resolution: {integrity: sha512-urzu3NCEV0Qa0Y2PwvBtRgmNtxhj5t5ULw7cuKhIHh3OrkKTLlut0lnBOv9qe5OvbkMH2g38G7KPDCTpIytBVg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.4 - '@vitest/ui': 3.2.4 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.0.8 + '@vitest/browser-preview': 4.0.8 + '@vitest/browser-webdriverio': 4.0.8 + '@vitest/ui': 4.0.8 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -6440,7 +6466,11 @@ packages: optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': optional: true '@vitest/ui': optional: true @@ -6505,6 +6535,11 @@ packages: engines: {node: '>=16'} hasBin: true + workerd@1.20251105.0: + resolution: {integrity: sha512-8D1UmsxrRr3Go7enbYCsYoiWeGn66u1WFNojPSgtjp7z8pV2cXskjr05vQ1OOzl7+rg1hDDofnCJqVwChMym8g==} + engines: {node: '>=16'} + hasBin: true + wrangler@4.43.0: resolution: {integrity: sha512-IBNqXlYHSUSCNNWj/tQN4hFiQy94l7fTxEnJWETXyW69+cjUyjQ7MfeoId3vIV9KBgY8y5M5uf2XulU95OikJg==} engines: {node: '>=18.0.0'} @@ -6708,11 +6743,6 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@ascorbic/loader-utils@1.0.2(astro@5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1))': dependencies: astro: 5.14.1(@types/node@24.2.0)(jiti@2.6.1)(rollup@4.52.4)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1) @@ -6933,6 +6963,8 @@ snapshots: '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-option@7.27.1': {} '@babel/helpers@7.28.4': @@ -6944,6 +6976,10 @@ snapshots: dependencies: '@babel/types': 7.28.4 + '@babel/parser@7.28.5': + dependencies: + '@babel/types': 7.28.5 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 @@ -7009,6 +7045,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.5': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@bcoe/v8-coverage@1.0.2': {} '@biomejs/biome@1.9.4': @@ -7077,16 +7118,22 @@ snapshots: optionalDependencies: workerd: 1.20251008.0 - '@cloudflare/vite-plugin@1.13.13(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20251008.0)(wrangler@4.43.0)': + '@cloudflare/unenv-preset@2.7.9(unenv@2.0.0-rc.24)(workerd@1.20251008.0)': dependencies: - '@cloudflare/unenv-preset': 2.7.7(unenv@2.0.0-rc.21)(workerd@1.20251008.0) + unenv: 2.0.0-rc.24 + optionalDependencies: + workerd: 1.20251008.0 + + '@cloudflare/vite-plugin@1.14.0(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20251008.0)(wrangler@4.43.0)': + dependencies: + '@cloudflare/unenv-preset': 2.7.9(unenv@2.0.0-rc.24)(workerd@1.20251008.0) '@remix-run/node-fetch-server': 0.8.1 get-port: 7.1.0 - miniflare: 4.20251008.0 + miniflare: 4.20251105.0 picocolors: 1.1.1 tinyglobby: 0.2.15 - unenv: 2.0.0-rc.21 - vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + unenv: 2.0.0-rc.24 + vite: 7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) wrangler: 4.43.0 ws: 8.18.0 transitivePeerDependencies: @@ -7097,18 +7144,33 @@ snapshots: '@cloudflare/workerd-darwin-64@1.20251008.0': optional: true + '@cloudflare/workerd-darwin-64@1.20251105.0': + optional: true + '@cloudflare/workerd-darwin-arm64@1.20251008.0': optional: true + '@cloudflare/workerd-darwin-arm64@1.20251105.0': + optional: true + '@cloudflare/workerd-linux-64@1.20251008.0': optional: true + '@cloudflare/workerd-linux-64@1.20251105.0': + optional: true + '@cloudflare/workerd-linux-arm64@1.20251008.0': optional: true + '@cloudflare/workerd-linux-arm64@1.20251105.0': + optional: true + '@cloudflare/workerd-windows-64@1.20251008.0': optional: true + '@cloudflare/workerd-windows-64@1.20251105.0': + optional: true + '@colors/colors@1.5.0': optional: true @@ -7509,8 +7571,6 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@istanbuljs/schema@0.1.3': {} - '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 @@ -7641,11 +7701,11 @@ snapshots: '@lingui/babel-plugin-lingui-macro': 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2) babel-plugin-macros: 3.1.0 - '@lingui/vite-plugin@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))': + '@lingui/vite-plugin@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))': dependencies: '@lingui/cli': 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2) '@lingui/conf': 5.5.2(typescript@5.9.2) - vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -8265,7 +8325,7 @@ snapshots: optionalDependencies: '@types/react': 19.2.2 - '@react-router/dev@7.9.4(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1)': + '@react-router/dev@7.9.4(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1)': dependencies: '@babel/core': 7.28.4 '@babel/generator': 7.28.3 @@ -8294,7 +8354,7 @@ snapshots: semver: 7.7.2 tinyglobby: 0.2.15 valibot: 1.1.0(typescript@5.9.2) - vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) vite-node: 3.2.4(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) optionalDependencies: typescript: 5.9.2 @@ -8743,77 +8803,72 @@ snapshots: '@vercel/oidc@3.0.3': {} - '@vitest/coverage-v8@3.2.4(vitest@3.2.4)': + '@vitest/coverage-v8@4.0.8(vitest@4.0.8)': dependencies: - '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - ast-v8-to-istanbul: 0.3.5 + '@vitest/utils': 4.0.8 + ast-v8-to-istanbul: 0.3.8 debug: 4.4.3(supports-color@5.5.0) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 - magic-string: 0.30.19 - magicast: 0.3.5 - std-env: 3.9.0 - test-exclude: 7.0.1 - tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + magicast: 0.5.1 + std-env: 3.10.0 + tinyrainbow: 3.0.3 + vitest: 4.0.8(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@4.0.8)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@3.2.4': + '@vitest/expect@4.0.8': dependencies: + '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.2 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - tinyrainbow: 2.0.0 + '@vitest/spy': 4.0.8 + '@vitest/utils': 4.0.8 + chai: 6.2.0 + tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))': + '@vitest/mocker@4.0.8(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))': dependencies: - '@vitest/spy': 3.2.4 + '@vitest/spy': 4.0.8 estree-walker: 3.0.3 - magic-string: 0.30.19 + magic-string: 0.30.21 optionalDependencies: - vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) - '@vitest/pretty-format@3.2.4': + '@vitest/pretty-format@4.0.8': dependencies: - tinyrainbow: 2.0.0 + tinyrainbow: 3.0.3 - '@vitest/runner@3.2.4': + '@vitest/runner@4.0.8': dependencies: - '@vitest/utils': 3.2.4 + '@vitest/utils': 4.0.8 pathe: 2.0.3 - strip-literal: 3.1.0 - '@vitest/snapshot@3.2.4': + '@vitest/snapshot@4.0.8': dependencies: - '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.19 + '@vitest/pretty-format': 4.0.8 + magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@3.2.4': - dependencies: - tinyspy: 4.0.4 + '@vitest/spy@4.0.8': {} - '@vitest/ui@3.2.4(vitest@3.2.4)': + '@vitest/ui@4.0.8(vitest@4.0.8)': dependencies: - '@vitest/utils': 3.2.4 + '@vitest/utils': 4.0.8 fflate: 0.8.2 flatted: 3.3.3 pathe: 2.0.3 sirv: 3.0.2 tinyglobby: 0.2.15 - tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + tinyrainbow: 3.0.3 + vitest: 4.0.8(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@4.0.8)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) - '@vitest/utils@3.2.4': + '@vitest/utils@4.0.8': dependencies: - '@vitest/pretty-format': 3.2.4 - loupe: 3.2.1 - tinyrainbow: 2.0.0 + '@vitest/pretty-format': 4.0.8 + tinyrainbow: 3.0.3 accepts@1.3.8: dependencies: @@ -8906,9 +8961,7 @@ snapshots: array-iterate@2.0.1: {} - assertion-error@2.0.1: {} - - ast-v8-to-istanbul@0.3.5: + ast-v8-to-istanbul@0.3.8: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -9177,13 +9230,7 @@ snapshots: ccount@2.0.1: {} - chai@5.3.3: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.2.1 - pathval: 2.0.1 + chai@6.2.0: {} chalk@2.4.2: dependencies: @@ -9210,8 +9257,6 @@ snapshots: chardet@2.1.0: {} - check-error@2.1.1: {} - chokidar@3.5.1: dependencies: anymatch: 3.1.3 @@ -9490,8 +9535,6 @@ snapshots: optionalDependencies: babel-plugin-macros: 3.1.0 - deep-eql@5.0.2: {} - deep-extend@0.6.0: {} defaults@1.0.4: @@ -10647,8 +10690,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.2.1: {} - lower-case@2.0.2: dependencies: tslib: 2.8.1 @@ -10675,12 +10716,22 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + magicast@0.3.5: dependencies: '@babel/parser': 7.28.4 '@babel/types': 7.28.4 source-map-js: 1.2.1 + magicast@0.5.1: + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + source-map-js: 1.2.1 + make-dir@4.0.0: dependencies: semver: 7.7.2 @@ -11223,6 +11274,24 @@ snapshots: - bufferutil - utf-8-validate + miniflare@4.20251105.0: + dependencies: + '@cspotcode/source-map-support': 0.8.1 + acorn: 8.14.0 + acorn-walk: 8.3.2 + exit-hook: 2.2.1 + glob-to-regexp: 0.4.1 + sharp: 0.33.5 + stoppable: 1.1.0 + undici: 7.14.0 + workerd: 1.20251105.0 + ws: 8.18.0 + youch: 4.1.0-beta.10 + zod: 3.22.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + minimatch@10.1.1: dependencies: '@isaacs/brace-expansion': 5.0.0 @@ -11626,8 +11695,6 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.1: {} - pg-cloudflare@1.2.7: optional: true @@ -12564,7 +12631,7 @@ snapshots: statuses@2.0.1: {} - std-env@3.9.0: {} + std-env@3.10.0: {} stoppable@1.1.0: {} @@ -12618,10 +12685,6 @@ snapshots: strip-json-comments@2.0.1: {} - strip-literal@3.1.0: - dependencies: - js-tokens: 9.0.1 - style-to-js@1.1.17: dependencies: style-to-object: 1.0.9 @@ -12675,12 +12738,6 @@ snapshots: type-fest: 2.19.0 unique-string: 3.0.0 - test-exclude@7.0.1: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 - minimatch: 9.0.5 - thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -12727,11 +12784,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - tinypool@1.1.1: {} - - tinyrainbow@2.0.0: {} - - tinyspy@4.0.4: {} + tinyrainbow@3.0.3: {} to-arraybuffer@1.0.1: {} @@ -12834,6 +12887,10 @@ snapshots: pathe: 2.0.3 ufo: 1.6.1 + unenv@2.0.0-rc.24: + dependencies: + pathe: 2.0.3 + unicode-emoji-modifier-base@1.0.0: {} unicode-properties@1.4.1: @@ -13031,7 +13088,7 @@ snapshots: debug: 4.4.3(supports-color@5.5.0) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -13046,28 +13103,28 @@ snapshots: - tsx - yaml - vite-plugin-babel-macros@1.0.6(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): + vite-plugin-babel-macros@1.0.6(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): dependencies: '@babel/core': 7.28.4 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) '@types/babel__core': 7.20.5 babel-plugin-macros: 3.1.0 - vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) transitivePeerDependencies: - supports-color - vite-plugin-devtools-json@1.0.0(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): + vite-plugin-devtools-json@1.0.0(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): dependencies: uuid: 11.1.0 - vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) - vite-plugin-svgr@4.5.0(rollup@4.52.4)(typescript@5.9.2)(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): + vite-plugin-svgr@4.5.0(rollup@4.52.4)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.52.4) '@svgr/core': 8.1.0(typescript@5.9.2) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.2)) - vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) transitivePeerDependencies: - rollup - supports-color @@ -13090,7 +13147,7 @@ snapshots: tsx: 4.20.3 yaml: 2.8.1 - vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1): + vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -13111,44 +13168,41 @@ snapshots: optionalDependencies: vite: 6.3.6(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) - vitest-polly@1.3.0(vitest@3.2.4): + vitest-polly@1.3.1(vitest@4.0.8): dependencies: '@pollyjs/adapter-fetch': 6.0.7 '@pollyjs/core': 6.0.6 '@pollyjs/persister-fs': 6.0.6 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + vitest: 4.0.8(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@4.0.8)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) transitivePeerDependencies: - supports-color - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1): + vitest@4.0.8(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@4.0.8)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1): dependencies: - '@types/chai': 5.2.2 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 + '@vitest/expect': 4.0.8 + '@vitest/mocker': 4.0.8(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.8 + '@vitest/runner': 4.0.8 + '@vitest/snapshot': 4.0.8 + '@vitest/spy': 4.0.8 + '@vitest/utils': 4.0.8 debug: 4.4.3(supports-color@5.5.0) + es-module-lexer: 1.7.0 expect-type: 1.2.2 - magic-string: 0.30.19 + magic-string: 0.30.21 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 3.9.0 + std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinyglobby: 0.2.15 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.1.10(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) + tinyrainbow: 3.0.3 + vite: 7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 '@types/node': 24.2.0 - '@vitest/ui': 3.2.4(vitest@3.2.4) + '@vitest/ui': 4.0.8(vitest@4.0.8) transitivePeerDependencies: - jiti - less @@ -13217,6 +13271,14 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20251008.0 '@cloudflare/workerd-windows-64': 1.20251008.0 + workerd@1.20251105.0: + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20251105.0 + '@cloudflare/workerd-darwin-arm64': 1.20251105.0 + '@cloudflare/workerd-linux-64': 1.20251105.0 + '@cloudflare/workerd-linux-arm64': 1.20251105.0 + '@cloudflare/workerd-windows-64': 1.20251105.0 + wrangler@4.43.0: dependencies: '@cloudflare/kv-asset-handler': 0.4.0 From 46d9258525a98fde9c279683db0d6f4980669ef1 Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 10:15:39 +0000 Subject: [PATCH 13/48] Updated cloudflare/wrangler --- browser/package.json | 4 +- pnpm-lock.yaml | 164 +++++++------------------------------------ portal/package.json | 2 +- 3 files changed, 29 insertions(+), 141 deletions(-) diff --git a/browser/package.json b/browser/package.json index 1aa5731e..e7681427 100644 --- a/browser/package.json +++ b/browser/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@ai-sdk/openai": "2.0.64", "@clack/prompts": "^0.11.0", - "@cloudflare/containers": "0.0.28", + "@cloudflare/containers": "0.0.30", "@cloudflare/vite-plugin": "1.14.0", "@dpkit/library": "workspace:*", "@dpkit/service": "workspace:*", @@ -66,7 +66,7 @@ "vite-plugin-babel-macros": "1.0.6", "vite-plugin-devtools-json": "1.0.0", "vite-plugin-svgr": "4.5.0", - "wrangler": "4.43.0", + "wrangler": "4.46.0", "xml-js": "1.6.11", "zustand": "5.0.8" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e1dd1f46..bf77558d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,11 +75,11 @@ importers: specifier: ^0.11.0 version: 0.11.0 '@cloudflare/containers': - specifier: 0.0.28 - version: 0.0.28 + specifier: 0.0.30 + version: 0.0.30 '@cloudflare/vite-plugin': specifier: 1.14.0 - version: 1.14.0(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20251008.0)(wrangler@4.43.0) + version: 1.14.0(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20251105.0)(wrangler@4.46.0) '@dpkit/library': specifier: workspace:* version: link:../library @@ -118,7 +118,7 @@ importers: version: 1.10.0(@opentelemetry/api@1.9.0) '@react-router/dev': specifier: 7.9.4 - version: 7.9.4(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1) + version: 7.9.4(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.46.0)(yaml@2.8.1) '@tanstack/react-query': specifier: 5.90.3 version: 5.90.3(react@19.2.0) @@ -216,8 +216,8 @@ importers: specifier: 4.5.0 version: 4.5.0(rollup@4.52.4)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) wrangler: - specifier: 4.43.0 - version: 4.43.0 + specifier: 4.46.0 + version: 4.46.0 xml-js: specifier: 1.6.11 version: 1.6.11 @@ -441,8 +441,8 @@ importers: specifier: 4.8.0 version: 4.8.0(typedoc@0.28.9(typescript@5.9.2)) wrangler: - specifier: 4.43.0 - version: 4.43.0 + specifier: 4.46.0 + version: 4.46.0 scanner: dependencies: @@ -850,22 +850,13 @@ packages: '@clack/prompts@0.11.0': resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} - '@cloudflare/containers@0.0.28': - resolution: {integrity: sha512-wzR9UWcGvZ9znd4elkXklilPcHX6srncsjSkx696SZRZyTygNbWsLlHegvc1C+e9gn28HRZU3dLiAzXiC9IY1w==} + '@cloudflare/containers@0.0.30': + resolution: {integrity: sha512-i148xBgmyn/pje82ZIyuTr/Ae0BT/YWwa1/GTJcw6DxEjUHAzZLaBCiX446U9OeuJ2rBh/L/9FIzxX5iYNt1AQ==} '@cloudflare/kv-asset-handler@0.4.0': resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} engines: {node: '>=18.0.0'} - '@cloudflare/unenv-preset@2.7.7': - resolution: {integrity: sha512-HtZuh166y0Olbj9bqqySckz0Rw9uHjggJeoGbDx5x+sgezBXlxO6tQSig2RZw5tgObF8mWI8zaPvQMkQZtAODw==} - peerDependencies: - unenv: 2.0.0-rc.21 - workerd: ^1.20250927.0 - peerDependenciesMeta: - workerd: - optional: true - '@cloudflare/unenv-preset@2.7.9': resolution: {integrity: sha512-Drm7qlTKnvncEv+DANiQNEonq0H0LyIsoFZYJ6tJ8OhAoy5udIE8yp6BsVDYcIjcYLIybp4M7c/P7ly/56SoHg==} peerDependencies: @@ -881,60 +872,30 @@ packages: vite: ^6.1.0 || ^7.0.0 wrangler: ^4.46.0 - '@cloudflare/workerd-darwin-64@1.20251008.0': - resolution: {integrity: sha512-yph0H+8mMOK5Z9oDwjb8rI96oTVt4no5lZ43aorcbzsWG9VUIaXSXlBBoB3von6p4YCRW+J3n36fBM9XZ6TLaA==} - engines: {node: '>=16'} - cpu: [x64] - os: [darwin] - '@cloudflare/workerd-darwin-64@1.20251105.0': resolution: {integrity: sha512-nztUP35wTtUKM+681dBWtUNSySNWELTV+LY43oWy7ZhK19/iBJPQoFY7xpvF7zy4qOOShtise259B65DS4/71Q==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20251008.0': - resolution: {integrity: sha512-Yc4lMGSbM4AEtYRpyDpmk77MsHb6X2BSwJgMgGsLVPmckM7ZHivZkJChfcNQjZ/MGR6nkhYc4iF6TcVS+UMEVw==} - engines: {node: '>=16'} - cpu: [arm64] - os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20251105.0': resolution: {integrity: sha512-WS/dvPYTW/+gs8s0UvDqDY7wcuIAg/hUpjrMNGepr+Mo38vMU39FYhJQOly99oJCXxMluQqAnRKg09b/9Gr+Rg==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20251008.0': - resolution: {integrity: sha512-AjoQnylw4/5G6SmfhZRsli7EuIK7ZMhmbxtU0jkpciTlVV8H01OsFOgS1d8zaTXMfkWamEfMouy8oH/L7B9YcQ==} - engines: {node: '>=16'} - cpu: [x64] - os: [linux] - '@cloudflare/workerd-linux-64@1.20251105.0': resolution: {integrity: sha512-RdHRHo/hpjR6sNw529FkmslVSz/K3Pb1+i3fIoqUrHCrZOUYzFyz3nLeZh4EYaAhcztLWiSTwBv54bcl4sG3wA==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20251008.0': - resolution: {integrity: sha512-hRy9yyvzVq1HsqHZUmFkAr0C8JGjAD/PeeVEGCKL3jln3M9sNCKIrbDXiL+efe+EwajJNNlDxpO+s30uVWVaRg==} - engines: {node: '>=16'} - cpu: [arm64] - os: [linux] - '@cloudflare/workerd-linux-arm64@1.20251105.0': resolution: {integrity: sha512-5zkxQCqLjwrqZVVJh92J2Drv6xifkP8kN2ltjHdwZQlVzfDW48d7tAtCm1ZooUv204ixvZFarusCfL+IRjExZg==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20251008.0': - resolution: {integrity: sha512-Gm0RR+ehfNMsScn2pUcn3N9PDUpy7FyvV9ecHEyclKttvztyFOcmsF14bxEaSVv7iM4TxWEBn1rclmYHxDM4ow==} - engines: {node: '>=16'} - cpu: [x64] - os: [win32] - '@cloudflare/workerd-windows-64@1.20251105.0': resolution: {integrity: sha512-6BpkfjBIbGR+4FBOcZGcWDLM0XQuoI6R9Dublj/BKf4pv0/xJ4zHdnaYUb5NIlC75L55Ouqw0CEJasoKlMjgnw==} engines: {node: '>=16'} @@ -3474,9 +3435,6 @@ packages: expressive-code@0.41.3: resolution: {integrity: sha512-YLnD62jfgBZYrXIPQcJ0a51Afv9h8VlWqEGK9uU2T5nL/5rb8SnA86+7+mgCZe5D34Tff5RNEA5hjNVJYHzrFg==} - exsolve@1.0.7: - resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -4511,11 +4469,6 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - miniflare@4.20251008.0: - resolution: {integrity: sha512-sKCNYNzXG6l8qg0Oo7y8WcDKcpbgw0qwZsxNpdZilFTR4EavRow2TlcwuPSVN99jqAjhz0M4VXvTdSGdtJ2VfQ==} - engines: {node: '>=18.0.0'} - hasBin: true - miniflare@4.20251105.0: resolution: {integrity: sha512-n+lCQbGLPjHFm5EKMohxCl+hLIki9rIlJSU9FkYKdJ62cGacetmTH5IgWUZhUFFM+NqhqZLOuWXTAsoZTm0hog==} engines: {node: '>=18.0.0'} @@ -6085,9 +6038,6 @@ packages: resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==} engines: {node: '>=20.18.1'} - unenv@2.0.0-rc.21: - resolution: {integrity: sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==} - unenv@2.0.0-rc.24: resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} @@ -6530,22 +6480,17 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - workerd@1.20251008.0: - resolution: {integrity: sha512-HwaJmXO3M1r4S8x2ea2vy8Rw/y/38HRQuK/gNDRQ7w9cJXn6xSl1sIIqKCffULSUjul3wV3I3Nd/GfbmsRReEA==} - engines: {node: '>=16'} - hasBin: true - workerd@1.20251105.0: resolution: {integrity: sha512-8D1UmsxrRr3Go7enbYCsYoiWeGn66u1WFNojPSgtjp7z8pV2cXskjr05vQ1OOzl7+rg1hDDofnCJqVwChMym8g==} engines: {node: '>=16'} hasBin: true - wrangler@4.43.0: - resolution: {integrity: sha512-IBNqXlYHSUSCNNWj/tQN4hFiQy94l7fTxEnJWETXyW69+cjUyjQ7MfeoId3vIV9KBgY8y5M5uf2XulU95OikJg==} + wrangler@4.46.0: + resolution: {integrity: sha512-WRROO7CL+MW/E44RMT4X7w32qPjufiPpGdey5D6H7iKzzVqfUkTRULxYBfWANiU1yGnsiCXQtu3Ap0G2TmohtA==} engines: {node: '>=18.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20251008.0 + '@cloudflare/workers-types': ^4.20251014.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -7106,27 +7051,21 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 - '@cloudflare/containers@0.0.28': {} + '@cloudflare/containers@0.0.30': {} '@cloudflare/kv-asset-handler@0.4.0': dependencies: mime: 3.0.0 - '@cloudflare/unenv-preset@2.7.7(unenv@2.0.0-rc.21)(workerd@1.20251008.0)': - dependencies: - unenv: 2.0.0-rc.21 - optionalDependencies: - workerd: 1.20251008.0 - - '@cloudflare/unenv-preset@2.7.9(unenv@2.0.0-rc.24)(workerd@1.20251008.0)': + '@cloudflare/unenv-preset@2.7.9(unenv@2.0.0-rc.24)(workerd@1.20251105.0)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: - workerd: 1.20251008.0 + workerd: 1.20251105.0 - '@cloudflare/vite-plugin@1.14.0(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20251008.0)(wrangler@4.43.0)': + '@cloudflare/vite-plugin@1.14.0(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20251105.0)(wrangler@4.46.0)': dependencies: - '@cloudflare/unenv-preset': 2.7.9(unenv@2.0.0-rc.24)(workerd@1.20251008.0) + '@cloudflare/unenv-preset': 2.7.9(unenv@2.0.0-rc.24)(workerd@1.20251105.0) '@remix-run/node-fetch-server': 0.8.1 get-port: 7.1.0 miniflare: 4.20251105.0 @@ -7134,40 +7073,25 @@ snapshots: tinyglobby: 0.2.15 unenv: 2.0.0-rc.24 vite: 7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) - wrangler: 4.43.0 + wrangler: 4.46.0 ws: 8.18.0 transitivePeerDependencies: - bufferutil - utf-8-validate - workerd - '@cloudflare/workerd-darwin-64@1.20251008.0': - optional: true - '@cloudflare/workerd-darwin-64@1.20251105.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20251008.0': - optional: true - '@cloudflare/workerd-darwin-arm64@1.20251105.0': optional: true - '@cloudflare/workerd-linux-64@1.20251008.0': - optional: true - '@cloudflare/workerd-linux-64@1.20251105.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20251008.0': - optional: true - '@cloudflare/workerd-linux-arm64@1.20251105.0': optional: true - '@cloudflare/workerd-windows-64@1.20251008.0': - optional: true - '@cloudflare/workerd-windows-64@1.20251105.0': optional: true @@ -8325,7 +8249,7 @@ snapshots: optionalDependencies: '@types/react': 19.2.2 - '@react-router/dev@7.9.4(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.43.0)(yaml@2.8.1)': + '@react-router/dev@7.9.4(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.46.0)(yaml@2.8.1)': dependencies: '@babel/core': 7.28.4 '@babel/generator': 7.28.3 @@ -8358,7 +8282,7 @@ snapshots: vite-node: 3.2.4(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) optionalDependencies: typescript: 5.9.2 - wrangler: 4.43.0 + wrangler: 4.46.0 transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -9857,8 +9781,6 @@ snapshots: '@expressive-code/plugin-shiki': 0.41.3 '@expressive-code/plugin-text-markers': 0.41.3 - exsolve@1.0.7: {} - extend@3.0.2: {} fast-content-type-parse@3.0.0: {} @@ -11256,24 +11178,6 @@ snapshots: mimic-fn@4.0.0: {} - miniflare@4.20251008.0: - dependencies: - '@cspotcode/source-map-support': 0.8.1 - acorn: 8.14.0 - acorn-walk: 8.3.2 - exit-hook: 2.2.1 - glob-to-regexp: 0.4.1 - sharp: 0.33.5 - stoppable: 1.1.0 - undici: 7.14.0 - workerd: 1.20251008.0 - ws: 8.18.0 - youch: 4.1.0-beta.10 - zod: 3.22.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - miniflare@4.20251105.0: dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -12879,14 +12783,6 @@ snapshots: undici@7.14.0: {} - unenv@2.0.0-rc.21: - dependencies: - defu: 6.1.4 - exsolve: 1.0.7 - ohash: 2.0.11 - pathe: 2.0.3 - ufo: 1.6.1 - unenv@2.0.0-rc.24: dependencies: pathe: 2.0.3 @@ -13263,14 +13159,6 @@ snapshots: wordwrap@1.0.0: {} - workerd@1.20251008.0: - optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20251008.0 - '@cloudflare/workerd-darwin-arm64': 1.20251008.0 - '@cloudflare/workerd-linux-64': 1.20251008.0 - '@cloudflare/workerd-linux-arm64': 1.20251008.0 - '@cloudflare/workerd-windows-64': 1.20251008.0 - workerd@1.20251105.0: optionalDependencies: '@cloudflare/workerd-darwin-64': 1.20251105.0 @@ -13279,16 +13167,16 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20251105.0 '@cloudflare/workerd-windows-64': 1.20251105.0 - wrangler@4.43.0: + wrangler@4.46.0: dependencies: '@cloudflare/kv-asset-handler': 0.4.0 - '@cloudflare/unenv-preset': 2.7.7(unenv@2.0.0-rc.21)(workerd@1.20251008.0) + '@cloudflare/unenv-preset': 2.7.9(unenv@2.0.0-rc.24)(workerd@1.20251105.0) blake3-wasm: 2.1.5 esbuild: 0.25.4 - miniflare: 4.20251008.0 + miniflare: 4.20251105.0 path-to-regexp: 6.3.0 - unenv: 2.0.0-rc.21 - workerd: 1.20251008.0 + unenv: 2.0.0-rc.24 + workerd: 1.20251105.0 optionalDependencies: fsevents: 2.3.3 transitivePeerDependencies: diff --git a/portal/package.json b/portal/package.json index 27187f88..e267583b 100644 --- a/portal/package.json +++ b/portal/package.json @@ -24,6 +24,6 @@ "starlight-typedoc": "0.21.3", "typedoc": "0.28.9", "typedoc-plugin-markdown": "4.8.0", - "wrangler": "4.43.0" + "wrangler": "4.46.0" } } From 08c2f9ed258389b4bd9de85f5702731bfca3162c Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 10:16:34 +0000 Subject: [PATCH 14/48] Upgraded vitest-polly --- package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 31da55f6..31903429 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "typescript": "5.9.2", "vite": "7.2.2", "vitest": "4.0.8", - "vitest-polly": "1.3.1" + "vitest-polly": "1.4.0" }, "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bf77558d..cb232a88 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,8 +54,8 @@ importers: specifier: 4.0.8 version: 4.0.8(@types/debug@4.1.12)(@types/node@24.2.0)(@vitest/ui@4.0.8)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) vitest-polly: - specifier: 1.3.1 - version: 1.3.1(vitest@4.0.8) + specifier: 1.4.0 + version: 1.4.0(vitest@4.0.8) audio: dependencies: @@ -6389,11 +6389,11 @@ packages: vite: optional: true - vitest-polly@1.3.1: - resolution: {integrity: sha512-xKWjjUYUTbBc3I/dR9xHB9hkV66VJeeqW+7ZeyO4V0uXulJVH5HMIGcSollK9QtzNQCeWfEWXDFcoFQPFIurRQ==} + vitest-polly@1.4.0: + resolution: {integrity: sha512-7BAx7oG6Mf4HuJyJYadjaFBk0QhgF67QQJrzpOxLjXFLcusSVjdrUDn6AKjrKE2AW4ZmpNJQ+69gOzK2q0hpSA==} engines: {node: ^24.0.0, pnpm: ^10.0.0} peerDependencies: - vitest: ^3.2.4 + vitest: '>=3.0.0' vitest@4.0.8: resolution: {integrity: sha512-urzu3NCEV0Qa0Y2PwvBtRgmNtxhj5t5ULw7cuKhIHh3OrkKTLlut0lnBOv9qe5OvbkMH2g38G7KPDCTpIytBVg==} @@ -13064,7 +13064,7 @@ snapshots: optionalDependencies: vite: 6.3.6(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) - vitest-polly@1.3.1(vitest@4.0.8): + vitest-polly@1.4.0(vitest@4.0.8): dependencies: '@pollyjs/adapter-fetch': 6.0.7 '@pollyjs/core': 6.0.6 From 726593e382df90bce773eedc2d11b2de5e18d5b7 Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 10:19:34 +0000 Subject: [PATCH 15/48] Upgraded pnpm --- browser/vite.config.ts | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/browser/vite.config.ts b/browser/vite.config.ts index d05b8333..bb058db1 100644 --- a/browser/vite.config.ts +++ b/browser/vite.config.ts @@ -9,6 +9,7 @@ import svgr from "vite-plugin-svgr" export default defineConfig({ assetsInclude: ["**/*.md"], plugins: [ + // @ts-ignore cloudflare({ viteEnvironment: { name: "ssr" } }), devtoolsJson(), macrosPlugin(), diff --git a/package.json b/package.json index 31903429..5ad3263f 100644 --- a/package.json +++ b/package.json @@ -43,5 +43,5 @@ "vitest": "4.0.8", "vitest-polly": "1.4.0" }, - "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" + "packageManager": "pnpm@10.21.0+sha512.da3337267e400fdd3d479a6c68079ac6db01d8ca4f67572083e722775a796788a7a9956613749e000fac20d424b594f7a791a5f4e2e13581c5ef947f26968a40" } From 216c39543d0c9a368483f0642e7504ac4d7754f3 Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 10:45:56 +0000 Subject: [PATCH 16/48] Upgraded react-router --- browser/package.json | 8 ++- browser/vite.config.ts | 14 ++++- pnpm-lock.yaml | 134 ++++++++++++++++------------------------- 3 files changed, 68 insertions(+), 88 deletions(-) diff --git a/browser/package.json b/browser/package.json index e7681427..42fbc9a5 100644 --- a/browser/package.json +++ b/browser/package.json @@ -23,6 +23,7 @@ "@cloudflare/vite-plugin": "1.14.0", "@dpkit/library": "workspace:*", "@dpkit/service": "workspace:*", + "@lingui/babel-plugin-lingui-macro": "5.5.2", "@lingui/cli": "5.5.2", "@lingui/core": "5.5.2", "@lingui/detect-locale": "5.5.2", @@ -33,11 +34,12 @@ "@mantine/form": "8.3.5", "@mantine/hooks": "8.3.5", "@orpc/openapi-client": "1.10.0", - "@react-router/dev": "7.9.4", + "@react-router/dev": "7.9.5", "@tanstack/react-query": "5.90.3", "@types/react": "19.2.2", "@types/react-dom": "19.2.0", "ai": "5.0.90", + "babel-plugin-macros": "3.1.0", "concurrently": "9.2.1", "dotenv": "17.2.3", "es-toolkit": "1.39.10", @@ -55,7 +57,7 @@ "react-dom": "19.2.0", "react-flags-select": "2.5.0", "react-i18next": "16.0.1", - "react-router": "7.9.4", + "react-router": "7.9.5", "react-schemaorg": "2.0.0", "react-share": "5.2.2", "react-type-animation": "3.2.0", @@ -63,7 +65,7 @@ "ts-extras": "0.14.0", "tslog": "4.10.2", "vaul": "1.1.2", - "vite-plugin-babel-macros": "1.0.6", + "vite-plugin-babel": "1.3.2", "vite-plugin-devtools-json": "1.0.0", "vite-plugin-svgr": "4.5.0", "wrangler": "4.46.0", diff --git a/browser/vite.config.ts b/browser/vite.config.ts index bb058db1..bf65d32a 100644 --- a/browser/vite.config.ts +++ b/browser/vite.config.ts @@ -2,7 +2,7 @@ import { cloudflare } from "@cloudflare/vite-plugin" import { lingui } from "@lingui/vite-plugin" import { reactRouter } from "@react-router/dev/vite" import { defineConfig } from "vite" -import macrosPlugin from "vite-plugin-babel-macros" +import babel from "vite-plugin-babel" import devtoolsJson from "vite-plugin-devtools-json" import svgr from "vite-plugin-svgr" @@ -12,7 +12,17 @@ export default defineConfig({ // @ts-ignore cloudflare({ viteEnvironment: { name: "ssr" } }), devtoolsJson(), - macrosPlugin(), + { + // @ts-ignore + ...babel({ + filter: /\.(ts|tsx)$/, + babelConfig: { + presets: ["@babel/preset-typescript"], + plugins: ["babel-plugin-macros", "@lingui/babel-plugin-lingui-macro"], + }, + }), + apply: "build", + }, lingui(), reactRouter(), svgr(), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb232a88..67f395b9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -86,6 +86,9 @@ importers: '@dpkit/service': specifier: workspace:* version: link:../service + '@lingui/babel-plugin-lingui-macro': + specifier: 5.5.2 + version: 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2) '@lingui/cli': specifier: 5.5.2 version: 5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2) @@ -117,8 +120,8 @@ importers: specifier: 1.10.0 version: 1.10.0(@opentelemetry/api@1.9.0) '@react-router/dev': - specifier: 7.9.4 - version: 7.9.4(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.46.0)(yaml@2.8.1) + specifier: 7.9.5 + version: 7.9.5(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.46.0)(yaml@2.8.1) '@tanstack/react-query': specifier: 5.90.3 version: 5.90.3(react@19.2.0) @@ -131,6 +134,9 @@ importers: ai: specifier: 5.0.90 version: 5.0.90(zod@4.1.12) + babel-plugin-macros: + specifier: 3.1.0 + version: 3.1.0 concurrently: specifier: 9.2.1 version: 9.2.1 @@ -183,8 +189,8 @@ importers: specifier: 16.0.1 version: 16.0.1(i18next@25.6.0(typescript@5.9.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.2) react-router: - specifier: 7.9.4 - version: 7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: 7.9.5 + version: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react-schemaorg: specifier: 2.0.0 version: 2.0.0(react@19.2.0)(schema-dts@1.1.5)(typescript@5.9.2) @@ -196,7 +202,7 @@ importers: version: 3.2.0(prop-types@15.8.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) remix-utils: specifier: 9.0.0 - version: 9.0.0(@oslojs/encoding@1.1.0)(@standard-schema/spec@1.0.0)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) + version: 9.0.0(@oslojs/encoding@1.1.0)(@standard-schema/spec@1.0.0)(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) ts-extras: specifier: 0.14.0 version: 0.14.0 @@ -206,9 +212,9 @@ importers: vaul: specifier: 1.1.2 version: 1.1.2(@types/react-dom@19.2.0(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - vite-plugin-babel-macros: - specifier: 1.0.6 - version: 1.0.6(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) + vite-plugin-babel: + specifier: 1.3.2 + version: 1.3.2(@babel/core@7.28.4)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) vite-plugin-devtools-json: specifier: 1.0.0 version: 1.0.0(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)) @@ -2098,14 +2104,14 @@ packages: '@types/react': optional: true - '@react-router/dev@7.9.4': - resolution: {integrity: sha512-bLs6DjKMJExT7Y57EBx25hkeGGUla3pURxvOn15IN8Mmaw2+euDtBUX9+OFrAPsAzD1xIj6+2HNLXlFH/LB86Q==} + '@react-router/dev@7.9.5': + resolution: {integrity: sha512-MkWI4zN7VbQ0tteuJtX5hmDINNS26IW236a8lM8+o1344xdnT/ZsBvcUh8AkzDdCRYEz1blgzgirpj0Wc1gmXg==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - '@react-router/serve': ^7.9.4 + '@react-router/serve': ^7.9.5 '@vitejs/plugin-rsc': '*' - react-router: ^7.9.4 + react-router: ^7.9.5 typescript: ^5.1.0 vite: ^5.1.0 || ^6.0.0 || ^7.0.0 wrangler: ^3.28.2 || ^4.0.0 @@ -2119,11 +2125,11 @@ packages: wrangler: optional: true - '@react-router/node@7.9.4': - resolution: {integrity: sha512-sdeDNRaqAB71BR2hPlhcQbPbrXh8uGJUjLVc+NpRiPsQbv6B8UvIucN4IX9YGVJkw3UxVQBn2vPSwxACAck32Q==} + '@react-router/node@7.9.5': + resolution: {integrity: sha512-3mDd32mXh3gEkG0cLPnUaoLkY1pApsTPqn7O1j+P8aLf997uYz5lYDjt33vtMhaotlRM0x+5JziAKtz/76YBpQ==} engines: {node: '>=20.0.0'} peerDependencies: - react-router: 7.9.4 + react-router: 7.9.5 typescript: ^5.1.0 peerDependenciesMeta: typescript: @@ -2420,18 +2426,6 @@ packages: peerDependencies: react: ^18 || ^19 - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.28.0': - resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} @@ -5256,8 +5250,8 @@ packages: '@types/react': optional: true - react-router@7.9.4: - resolution: {integrity: sha512-SD3G8HKviFHg9xj7dNODUKDFgpG4xqD5nhyd0mYoB5iISepuZAvzSr8ywxgxKJ52yRzf/HWtVHc9AWwoTbljvA==} + react-router@7.9.5: + resolution: {integrity: sha512-JmxqrnBZ6E9hWmf02jzNn9Jm3UqyeimyiwzD69NjxGySG6lIz/1LVPsoTCwN7NBX2XjCEa1LIX5EMz1j2b6u6A==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -6285,11 +6279,11 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite-plugin-babel-macros@1.0.6: - resolution: {integrity: sha512-7cCT8jtu5UjpE46pH7RyVltWw5FbhDAtQliZ6QGqRNR5RUZKdAsB0CDjuF+VBoDpnl0KuESPu22SoNqXRYYWyQ==} - engines: {node: '>=16'} + vite-plugin-babel@1.3.2: + resolution: {integrity: sha512-mEld4OVyuNs5+ISN+U5XyTnNcDwln/s2oER2m0PQ32YYPqPR25E3mfnhAA/RkZJxPuwFkprKWV405aZArE6kzA==} peerDependencies: - vite: '>=2' + '@babel/core': ^7.0.0 + vite: ^2.7.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 vite-plugin-devtools-json@1.0.0: resolution: {integrity: sha512-MobvwqX76Vqt/O4AbnNMNWoXWGrKUqZbphCUle/J2KXH82yKQiunOeKnz/nqEPosPsoWWPP9FtNuPBSYpiiwkw==} @@ -6834,7 +6828,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/helper-compilation-targets@7.27.2': dependencies: @@ -6862,14 +6856,14 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -6884,7 +6878,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/helper-plugin-utils@7.27.1': {} @@ -6900,7 +6894,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -6915,7 +6909,7 @@ snapshots: '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/parser@7.28.4': dependencies: @@ -6971,7 +6965,7 @@ snapshots: dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/traverse@7.28.4': dependencies: @@ -7538,7 +7532,7 @@ snapshots: dependencies: '@babel/core': 7.28.4 '@babel/runtime': 7.28.4 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@lingui/conf': 5.5.2(typescript@5.9.2) '@lingui/core': 5.5.2(@lingui/babel-plugin-lingui-macro@5.5.2(babel-plugin-macros@3.1.0)(typescript@5.9.2))(babel-plugin-macros@3.1.0) '@lingui/message-utils': 5.5.2 @@ -8249,17 +8243,17 @@ snapshots: optionalDependencies: '@types/react': 19.2.2 - '@react-router/dev@7.9.4(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.46.0)(yaml@2.8.1)': + '@react-router/dev@7.9.5(@types/node@24.2.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(typescript@5.9.2)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1))(wrangler@4.46.0)(yaml@2.8.1)': dependencies: '@babel/core': 7.28.4 '@babel/generator': 7.28.3 - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@npmcli/package-json': 4.0.1 - '@react-router/node': 7.9.4(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.2) + '@react-router/node': 7.9.5(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.2) '@remix-run/node-fetch-server': 0.9.0 arg: 5.0.2 babel-dead-code-elimination: 1.0.10 @@ -8270,11 +8264,12 @@ snapshots: isbot: 5.1.31 jsesc: 3.0.2 lodash: 4.17.21 + p-map: 7.0.3 pathe: 1.1.2 picocolors: 1.1.1 prettier: 3.6.2 react-refresh: 0.14.2 - react-router: 7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react-router: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) semver: 7.7.2 tinyglobby: 0.2.15 valibot: 1.1.0(typescript@5.9.2) @@ -8299,10 +8294,10 @@ snapshots: - tsx - yaml - '@react-router/node@7.9.4(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.2)': + '@react-router/node@7.9.5(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.2)': dependencies: '@mjackson/node-fetch-server': 0.2.0 - react-router: 7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react-router: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) optionalDependencies: typescript: 5.9.2 @@ -8578,7 +8573,7 @@ snapshots: '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 entities: 4.5.0 '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.9.2))': @@ -8602,27 +8597,6 @@ snapshots: '@tanstack/query-core': 5.90.3 react: 19.2.0 - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.28.0 - - '@types/babel__generator@7.27.0': - dependencies: - '@babel/types': 7.28.4 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 - - '@types/babel__traverse@7.28.0': - dependencies: - '@babel/types': 7.28.4 - '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 @@ -9009,9 +8983,9 @@ snapshots: babel-dead-code-elimination@1.0.10: dependencies: '@babel/core': 7.28.4 - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -10645,7 +10619,7 @@ snapshots: magicast@0.3.5: dependencies: '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 source-map-js: 1.2.1 magicast@0.5.1: @@ -11862,7 +11836,7 @@ snapshots: optionalDependencies: '@types/react': 19.2.2 - react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: cookie: 1.0.2 react: 19.2.0 @@ -12100,14 +12074,14 @@ snapshots: transitivePeerDependencies: - supports-color - remix-utils@9.0.0(@oslojs/encoding@1.1.0)(@standard-schema/spec@1.0.0)(react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0): + remix-utils@9.0.0(@oslojs/encoding@1.1.0)(@standard-schema/spec@1.0.0)(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0): dependencies: type-fest: 4.41.0 optionalDependencies: '@oslojs/encoding': 1.1.0 '@standard-schema/spec': 1.0.0 react: 19.2.0 - react-router: 7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react-router: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) require-directory@2.1.1: {} @@ -12999,16 +12973,10 @@ snapshots: - tsx - yaml - vite-plugin-babel-macros@1.0.6(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): + vite-plugin-babel@1.3.2(@babel/core@7.28.4)(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): dependencies: '@babel/core': 7.28.4 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) - '@types/babel__core': 7.20.5 - babel-plugin-macros: 3.1.0 vite: 7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1) - transitivePeerDependencies: - - supports-color vite-plugin-devtools-json@1.0.0(vite@7.2.2(@types/node@24.2.0)(jiti@2.6.1)(sass@1.93.2)(sugarss@5.0.1(postcss@8.5.6))(tsx@4.20.3)(yaml@2.8.1)): dependencies: From fae190a9867f13e9cf98ffbb32fc03945be45e9b Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 11:10:59 +0000 Subject: [PATCH 17/48] Made lingui work --- browser/components/Layout/Banner.tsx | 2 +- browser/helpers/locale.ts | 4 +- browser/package.json | 1 + browser/vite.config.ts | 21 ++++---- pnpm-lock.yaml | 71 ++++++++++++++++++++-------- 5 files changed, 64 insertions(+), 35 deletions(-) diff --git a/browser/components/Layout/Banner.tsx b/browser/components/Layout/Banner.tsx index 0e6cd266..fe3f3dbd 100644 --- a/browser/components/Layout/Banner.tsx +++ b/browser/components/Layout/Banner.tsx @@ -12,7 +12,7 @@ export function Banner() { - Support the project by + Support the project by{" "} =6.9.0'} + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} @@ -668,8 +675,8 @@ packages: resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.28.3': - resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} + '@babel/helper-create-class-features-plugin@7.28.5': + resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -678,8 +685,8 @@ packages: resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.27.1': @@ -758,14 +765,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.28.0': - resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} + '@babel/plugin-transform-typescript@7.28.5': + resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-typescript@7.27.1': - resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} + '@babel/preset-typescript@7.28.5': + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -782,6 +789,10 @@ packages: resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + engines: {node: '>=6.9.0'} + '@babel/types@7.28.4': resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} @@ -6826,6 +6837,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.0.2 + '@babel/generator@7.28.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.0.2 + '@babel/helper-annotate-as-pure@7.27.3': dependencies: '@babel/types': 7.28.5 @@ -6838,24 +6857,24 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)': + '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 semver: 6.3.1 transitivePeerDependencies: - supports-color '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.27.1': + '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -6885,9 +6904,9 @@ snapshots: '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 - '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color @@ -6937,25 +6956,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.4)': + '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.27.1(@babel/core@7.28.4)': + '@babel/preset-typescript@7.28.5(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.4) transitivePeerDependencies: - supports-color @@ -6979,6 +6998,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.28.5': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + debug: 4.4.3(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -8249,7 +8280,7 @@ snapshots: '@babel/generator': 7.28.3 '@babel/parser': 7.28.5 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) - '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/preset-typescript': 7.28.5(@babel/core@7.28.4) '@babel/traverse': 7.28.4 '@babel/types': 7.28.5 '@npmcli/package-json': 4.0.1 From 3c3316850ca55d452e90dab8b387fc0f1fe891d9 Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 11:58:25 +0000 Subject: [PATCH 18/48] Fixed translations --- browser/@translate.ts | 2 ++ browser/locales/es/messages.po | 4 +--- browser/locales/it/messages.po | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/browser/@translate.ts b/browser/@translate.ts index 1002a574..01fb3841 100644 --- a/browser/@translate.ts +++ b/browser/@translate.ts @@ -32,6 +32,7 @@ async function translateLanguages() { } } +// TODO: extract empty messages and translate using JSON/JSONSchema async function translateLanguage(languageId: types.LanguageId) { const path = `locales/${languageId}/messages.po` const content = await readFile(path) @@ -51,6 +52,7 @@ async function translateLanguage(languageId: types.LanguageId) { - Keep all comments and metadata Return the complete PO file with translations filled in. + Do not wrap the PO file in a code block. It whould be a valid PO file. PO file: ${content} diff --git a/browser/locales/es/messages.po b/browser/locales/es/messages.po index 3ef939f1..659b7ac6 100644 --- a/browser/locales/es/messages.po +++ b/browser/locales/es/messages.po @@ -1,4 +1,3 @@ -```po msgid "" msgstr "" "POT-Creation-Date: 2025-11-10 07:34+0000\n" @@ -16,5 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "Apoya el proyecto mediante" -``` \ No newline at end of file +msgstr "Apoya el proyecto mediante" \ No newline at end of file diff --git a/browser/locales/it/messages.po b/browser/locales/it/messages.po index d6c648f4..5a9058da 100644 --- a/browser/locales/it/messages.po +++ b/browser/locales/it/messages.po @@ -1,4 +1,3 @@ -```po msgid "" msgstr "" "POT-Creation-Date: 2025-11-10 07:34+0000\n" @@ -16,5 +15,4 @@ msgstr "" #: components/Layout/Banner.tsx:15 msgid "Support the project by" -msgstr "Sostieni il progetto con" -``` \ No newline at end of file +msgstr "Sostieni il progetto con" \ No newline at end of file From 3d938651c0856d222f63e09a6d3628aa42e783a9 Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 12:06:25 +0000 Subject: [PATCH 19/48] Migrated Layout to lingui --- browser/components/Layout/Banner.tsx | 11 ++-- browser/components/Layout/Breadcrumbs.tsx | 16 ++--- browser/components/Layout/Credits.tsx | 12 ++-- browser/components/Layout/Language.tsx | 6 +- browser/components/Layout/Repository.tsx | 5 +- browser/components/Layout/Share.tsx | 7 +- browser/components/Layout/Theme.tsx | 10 ++- browser/locales/de/messages.po | 78 +++++++++++++++++++++- browser/locales/en/messages.po | 78 +++++++++++++++++++++- browser/locales/es/messages.po | 80 ++++++++++++++++++++++- browser/locales/fr/messages.po | 78 +++++++++++++++++++++- browser/locales/it/messages.po | 80 ++++++++++++++++++++++- browser/locales/pt/messages.po | 78 +++++++++++++++++++++- browser/locales/ru/messages.po | 80 ++++++++++++++++++++++- browser/locales/uk/messages.po | 78 +++++++++++++++++++++- 15 files changed, 647 insertions(+), 50 deletions(-) diff --git a/browser/components/Layout/Banner.tsx b/browser/components/Layout/Banner.tsx index fe3f3dbd..dbe7bfed 100644 --- a/browser/components/Layout/Banner.tsx +++ b/browser/components/Layout/Banner.tsx @@ -1,13 +1,10 @@ import { Trans } from "@lingui/react/macro" import { Anchor, Box, Text } from "@mantine/core" import { Container } from "@mantine/core" -import { useTranslation } from "react-i18next" import { Link } from "#components/Link/index.ts" import classes from "./Banner.module.css" export function Banner() { - const { t } = useTranslation() - return ( @@ -21,9 +18,9 @@ export function Banner() { fw="bold" td="underline" > - {t("becoming a sponsor")} + becoming a sponsor {" "} - {t("or")}{" "} + or{" "} - {t("adding a star")} + adding a star {" "} - {t("on GitHub!")} + on GitHub! diff --git a/browser/components/Layout/Breadcrumbs.tsx b/browser/components/Layout/Breadcrumbs.tsx index b6455eae..14f9ee9f 100644 --- a/browser/components/Layout/Breadcrumbs.tsx +++ b/browser/components/Layout/Breadcrumbs.tsx @@ -1,34 +1,34 @@ +import { Trans, useLingui } from "@lingui/react/macro" import { Anchor, Breadcrumbs as MantineBreadcrumbs } from "@mantine/core" import { Text } from "@mantine/core" -import { useTranslation } from "react-i18next" import { TypeAnimation } from "react-type-animation" import { Link } from "#components/Link/index.ts" import { usePayload } from "#components/System/index.ts" import { useMakeLink } from "#components/System/index.ts" export function Breadcrumbs() { - const { t } = useTranslation() + const { t } = useLingui() const payload = usePayload() const makeLink = useMakeLink() return ( - {t("Tools")} + Tools {payload.page.pageId === "home" ? ( diff --git a/browser/components/Layout/Credits.tsx b/browser/components/Layout/Credits.tsx index 33a57ff5..e152bfd2 100644 --- a/browser/components/Layout/Credits.tsx +++ b/browser/components/Layout/Credits.tsx @@ -1,13 +1,11 @@ +import { Trans } from "@lingui/react/macro" import { Anchor, Box, Container, Image, Stack, Text } from "@mantine/core" -import { useTranslation } from "react-i18next" import datistLogoTextDark from "#assets/datist-logo-text-dark.svg" import datistLogoTextLight from "#assets/datist-logo-text-light.svg" import { Link } from "#components/Link/index.ts" import classes from "./Credits.module.css" export function Credits() { - const { t } = useTranslation() - return ( - {t("Brought to you by")} + Brought to you by - {t( - "We are bringing technological innovation and consultancy services to the open data field", - )} + + We are bringing technological innovation and consultancy services to the open data field + diff --git a/browser/components/Layout/Language.tsx b/browser/components/Layout/Language.tsx index b9533102..b4a577cc 100644 --- a/browser/components/Layout/Language.tsx +++ b/browser/components/Layout/Language.tsx @@ -1,7 +1,7 @@ +import { Trans } from "@lingui/react/macro" import { Box, Group, Menu, Tooltip, UnstyledButton } from "@mantine/core" import { useState } from "react" import { De, Es, Fr, Gb, It, Pt, Ru, Ua } from "react-flags-select" -import { useTranslation } from "react-i18next" import { usePayload } from "#components/System/index.ts" import { useMakeLink } from "#components/System/index.ts" import { Languages } from "#constants/language.ts" @@ -22,7 +22,6 @@ const LANGUAGE_FLAGS = { } as const export function Language(props: { fullWidth?: boolean }) { - const { t } = useTranslation() const payload = usePayload() const makeLink = useMakeLink() @@ -49,7 +48,6 @@ export function Language(props: { fullWidth?: boolean }) { const onLanguageChange = (languageId: LanguageId) => { const location = globalThis.location if (location) { - // We intentionally do not use client-side routing here location.href = makeLink({ languageId, pageId: payload.page.pageId }) } } @@ -63,7 +61,7 @@ export function Language(props: { fullWidth?: boolean }) { shadow="sm" > - + Change Language} position="left"> + View Repository} position="left"> diff --git a/browser/locales/de/messages.po b/browser/locales/de/messages.po index 9776552e..77bb3cd6 100644 --- a/browser/locales/de/messages.po +++ b/browser/locales/de/messages.po @@ -13,6 +13,82 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: components/Layout/Banner.tsx:15 +#: components/Layout/Banner.tsx:32 +msgid "adding a star" +msgstr "einen Stern vergeben" + +#: components/Layout/Banner.tsx:21 +msgid "becoming a sponsor" +msgstr "Sponsor werden" + +#: components/Layout/Credits.tsx:20 +msgid "Brought to you by" +msgstr "Präsentiert von" + +#: components/Layout/Language.tsx:64 +msgid "Change Language" +msgstr "Sprache ändern" + +#: components/Layout/Theme.tsx:21 +msgid "Change Theme" +msgstr "Design ändern" + +#: components/Layout/Breadcrumbs.tsx:29 +msgid "Convert table format" +msgstr "Tabellenformat umwandeln" + +#: components/Layout/Theme.tsx:47 +msgid "Dark" +msgstr "Dunkel" + +#: components/Layout/Breadcrumbs.tsx:25 +msgid "Infer table dialect" +msgstr "Tabellendialekt erkennen" + +#: components/Layout/Breadcrumbs.tsx:27 +msgid "Infer table schema" +msgstr "Tabellenschema erkennen" + +#: components/Layout/Theme.tsx:38 +msgid "Light" +msgstr "Hell" + +#: components/Layout/Banner.tsx:34 +msgid "on GitHub!" +msgstr "auf GitHub!" + +#: components/Layout/Banner.tsx:23 +msgid "or" +msgstr "oder" + +#: components/Layout/Breadcrumbs.tsx:31 +msgid "Select a tool below" +msgstr "Wähle unten ein Tool aus" + +#: components/Layout/Share.tsx:41 +msgid "Share" +msgstr "Teilen" + +#: components/Layout/Share.tsx:32 +msgid "Share Page" +msgstr "Seite teilen" + +#: components/Layout/Banner.tsx:12 msgid "Support the project by" msgstr "Unterstütze das Projekt durch" + +#: components/Layout/Breadcrumbs.tsx:17 +msgid "Tools" +msgstr "Werkzeuge" + +#: components/Layout/Breadcrumbs.tsx:23 +msgid "Validate data package" +msgstr "Datenpaket validieren" + +#: components/Layout/Repository.tsx:13 +msgid "View Repository" +msgstr "Repository anzeigen" + +#: components/Layout/Credits.tsx:50 +msgid "We are bringing technological innovation and consultancy services to the open data field" +msgstr "Wir bringen technologische Innovation und Beratungsdienstleistungen in den Bereich offene Daten" \ No newline at end of file diff --git a/browser/locales/en/messages.po b/browser/locales/en/messages.po index 64b6e3f1..3e61c4b8 100644 --- a/browser/locales/en/messages.po +++ b/browser/locales/en/messages.po @@ -13,6 +13,82 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: components/Layout/Banner.tsx:15 +#: components/Layout/Banner.tsx:32 +msgid "adding a star" +msgstr "adding a star" + +#: components/Layout/Banner.tsx:21 +msgid "becoming a sponsor" +msgstr "becoming a sponsor" + +#: components/Layout/Credits.tsx:20 +msgid "Brought to you by" +msgstr "Brought to you by" + +#: components/Layout/Language.tsx:64 +msgid "Change Language" +msgstr "Change Language" + +#: components/Layout/Theme.tsx:21 +msgid "Change Theme" +msgstr "Change Theme" + +#: components/Layout/Breadcrumbs.tsx:29 +msgid "Convert table format" +msgstr "Convert table format" + +#: components/Layout/Theme.tsx:47 +msgid "Dark" +msgstr "Dark" + +#: components/Layout/Breadcrumbs.tsx:25 +msgid "Infer table dialect" +msgstr "Infer table dialect" + +#: components/Layout/Breadcrumbs.tsx:27 +msgid "Infer table schema" +msgstr "Infer table schema" + +#: components/Layout/Theme.tsx:38 +msgid "Light" +msgstr "Light" + +#: components/Layout/Banner.tsx:34 +msgid "on GitHub!" +msgstr "on GitHub!" + +#: components/Layout/Banner.tsx:23 +msgid "or" +msgstr "or" + +#: components/Layout/Breadcrumbs.tsx:31 +msgid "Select a tool below" +msgstr "Select a tool below" + +#: components/Layout/Share.tsx:41 +msgid "Share" +msgstr "Share" + +#: components/Layout/Share.tsx:32 +msgid "Share Page" +msgstr "Share Page" + +#: components/Layout/Banner.tsx:12 msgid "Support the project by" msgstr "Support the project by" + +#: components/Layout/Breadcrumbs.tsx:17 +msgid "Tools" +msgstr "Tools" + +#: components/Layout/Breadcrumbs.tsx:23 +msgid "Validate data package" +msgstr "Validate data package" + +#: components/Layout/Repository.tsx:13 +msgid "View Repository" +msgstr "View Repository" + +#: components/Layout/Credits.tsx:50 +msgid "We are bringing technological innovation and consultancy services to the open data field" +msgstr "We are bringing technological innovation and consultancy services to the open data field" diff --git a/browser/locales/es/messages.po b/browser/locales/es/messages.po index 659b7ac6..e0a13905 100644 --- a/browser/locales/es/messages.po +++ b/browser/locales/es/messages.po @@ -13,6 +13,82 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: components/Layout/Banner.tsx:15 +#: components/Layout/Banner.tsx:32 +msgid "adding a star" +msgstr "añadiendo una estrella" + +#: components/Layout/Banner.tsx:21 +msgid "becoming a sponsor" +msgstr "convirtiéndose en patrocinador" + +#: components/Layout/Credits.tsx:20 +msgid "Brought to you by" +msgstr "Presentado por" + +#: components/Layout/Language.tsx:64 +msgid "Change Language" +msgstr "Cambiar idioma" + +#: components/Layout/Theme.tsx:21 +msgid "Change Theme" +msgstr "Cambiar tema" + +#: components/Layout/Breadcrumbs.tsx:29 +msgid "Convert table format" +msgstr "Convertir formato de tabla" + +#: components/Layout/Theme.tsx:47 +msgid "Dark" +msgstr "Oscuro" + +#: components/Layout/Breadcrumbs.tsx:25 +msgid "Infer table dialect" +msgstr "Inferir dialecto de tabla" + +#: components/Layout/Breadcrumbs.tsx:27 +msgid "Infer table schema" +msgstr "Inferir esquema de tabla" + +#: components/Layout/Theme.tsx:38 +msgid "Light" +msgstr "Claro" + +#: components/Layout/Banner.tsx:34 +msgid "on GitHub!" +msgstr "¡en GitHub!" + +#: components/Layout/Banner.tsx:23 +msgid "or" +msgstr "o" + +#: components/Layout/Breadcrumbs.tsx:31 +msgid "Select a tool below" +msgstr "Selecciona una herramienta abajo" + +#: components/Layout/Share.tsx:41 +msgid "Share" +msgstr "Compartir" + +#: components/Layout/Share.tsx:32 +msgid "Share Page" +msgstr "Compartir página" + +#: components/Layout/Banner.tsx:12 msgid "Support the project by" -msgstr "Apoya el proyecto mediante" \ No newline at end of file +msgstr "Apoya el proyecto mediante" + +#: components/Layout/Breadcrumbs.tsx:17 +msgid "Tools" +msgstr "Herramientas" + +#: components/Layout/Breadcrumbs.tsx:23 +msgid "Validate data package" +msgstr "Validar paquete de datos" + +#: components/Layout/Repository.tsx:13 +msgid "View Repository" +msgstr "Ver repositorio" + +#: components/Layout/Credits.tsx:50 +msgid "We are bringing technological innovation and consultancy services to the open data field" +msgstr "Estamos llevando innovación tecnológica y servicios de consultoría al campo de los datos abiertos" diff --git a/browser/locales/fr/messages.po b/browser/locales/fr/messages.po index 4cfd15b7..4c2ae4ed 100644 --- a/browser/locales/fr/messages.po +++ b/browser/locales/fr/messages.po @@ -13,6 +13,82 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: components/Layout/Banner.tsx:15 +#: components/Layout/Banner.tsx:32 +msgid "adding a star" +msgstr "en ajoutant une étoile" + +#: components/Layout/Banner.tsx:21 +msgid "becoming a sponsor" +msgstr "en devenant sponsor" + +#: components/Layout/Credits.tsx:20 +msgid "Brought to you by" +msgstr "Présenté par" + +#: components/Layout/Language.tsx:64 +msgid "Change Language" +msgstr "Changer de langue" + +#: components/Layout/Theme.tsx:21 +msgid "Change Theme" +msgstr "Changer de thème" + +#: components/Layout/Breadcrumbs.tsx:29 +msgid "Convert table format" +msgstr "Convertir le format du tableau" + +#: components/Layout/Theme.tsx:47 +msgid "Dark" +msgstr "Sombre" + +#: components/Layout/Breadcrumbs.tsx:25 +msgid "Infer table dialect" +msgstr "Déduire le dialecte du tableau" + +#: components/Layout/Breadcrumbs.tsx:27 +msgid "Infer table schema" +msgstr "Déduire le schéma du tableau" + +#: components/Layout/Theme.tsx:38 +msgid "Light" +msgstr "Clair" + +#: components/Layout/Banner.tsx:34 +msgid "on GitHub!" +msgstr "sur GitHub !" + +#: components/Layout/Banner.tsx:23 +msgid "or" +msgstr "ou" + +#: components/Layout/Breadcrumbs.tsx:31 +msgid "Select a tool below" +msgstr "Sélectionnez un outil ci-dessous" + +#: components/Layout/Share.tsx:41 +msgid "Share" +msgstr "Partager" + +#: components/Layout/Share.tsx:32 +msgid "Share Page" +msgstr "Partager la page" + +#: components/Layout/Banner.tsx:12 msgid "Support the project by" msgstr "Soutenez le projet en" + +#: components/Layout/Breadcrumbs.tsx:17 +msgid "Tools" +msgstr "Outils" + +#: components/Layout/Breadcrumbs.tsx:23 +msgid "Validate data package" +msgstr "Valider le paquet de données" + +#: components/Layout/Repository.tsx:13 +msgid "View Repository" +msgstr "Voir le dépôt" + +#: components/Layout/Credits.tsx:50 +msgid "We are bringing technological innovation and consultancy services to the open data field" +msgstr "Nous apportons l'innovation technologique et des services de conseil au domaine des données ouvertes" diff --git a/browser/locales/it/messages.po b/browser/locales/it/messages.po index 5a9058da..9d02dc96 100644 --- a/browser/locales/it/messages.po +++ b/browser/locales/it/messages.po @@ -13,6 +13,82 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: components/Layout/Banner.tsx:15 +#: components/Layout/Banner.tsx:32 +msgid "adding a star" +msgstr "aggiungendo una stella" + +#: components/Layout/Banner.tsx:21 +msgid "becoming a sponsor" +msgstr "diventando sponsor" + +#: components/Layout/Credits.tsx:20 +msgid "Brought to you by" +msgstr "Offerto da" + +#: components/Layout/Language.tsx:64 +msgid "Change Language" +msgstr "Cambia lingua" + +#: components/Layout/Theme.tsx:21 +msgid "Change Theme" +msgstr "Cambia tema" + +#: components/Layout/Breadcrumbs.tsx:29 +msgid "Convert table format" +msgstr "Converti formato tabella" + +#: components/Layout/Theme.tsx:47 +msgid "Dark" +msgstr "Scuro" + +#: components/Layout/Breadcrumbs.tsx:25 +msgid "Infer table dialect" +msgstr "Individua dialetto tabella" + +#: components/Layout/Breadcrumbs.tsx:27 +msgid "Infer table schema" +msgstr "Individua schema tabella" + +#: components/Layout/Theme.tsx:38 +msgid "Light" +msgstr "Chiaro" + +#: components/Layout/Banner.tsx:34 +msgid "on GitHub!" +msgstr "su GitHub!" + +#: components/Layout/Banner.tsx:23 +msgid "or" +msgstr "oppure" + +#: components/Layout/Breadcrumbs.tsx:31 +msgid "Select a tool below" +msgstr "Seleziona uno strumento qui sotto" + +#: components/Layout/Share.tsx:41 +msgid "Share" +msgstr "Condividi" + +#: components/Layout/Share.tsx:32 +msgid "Share Page" +msgstr "Condividi pagina" + +#: components/Layout/Banner.tsx:12 msgid "Support the project by" -msgstr "Sostieni il progetto con" \ No newline at end of file +msgstr "Sostieni il progetto con" + +#: components/Layout/Breadcrumbs.tsx:17 +msgid "Tools" +msgstr "Strumenti" + +#: components/Layout/Breadcrumbs.tsx:23 +msgid "Validate data package" +msgstr "Valida pacchetto dati" + +#: components/Layout/Repository.tsx:13 +msgid "View Repository" +msgstr "Visualizza repository" + +#: components/Layout/Credits.tsx:50 +msgid "We are bringing technological innovation and consultancy services to the open data field" +msgstr "Stiamo portando innovazione tecnologica e servizi di consulenza nel campo degli open data" diff --git a/browser/locales/pt/messages.po b/browser/locales/pt/messages.po index 757b8e4a..b64594c3 100644 --- a/browser/locales/pt/messages.po +++ b/browser/locales/pt/messages.po @@ -13,6 +13,82 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: components/Layout/Banner.tsx:15 +#: components/Layout/Banner.tsx:32 +msgid "adding a star" +msgstr "adicionando uma estrela" + +#: components/Layout/Banner.tsx:21 +msgid "becoming a sponsor" +msgstr "tornando-se um patrocinador" + +#: components/Layout/Credits.tsx:20 +msgid "Brought to you by" +msgstr "Apresentado por" + +#: components/Layout/Language.tsx:64 +msgid "Change Language" +msgstr "Mudar idioma" + +#: components/Layout/Theme.tsx:21 +msgid "Change Theme" +msgstr "Alterar tema" + +#: components/Layout/Breadcrumbs.tsx:29 +msgid "Convert table format" +msgstr "Converter formato da tabela" + +#: components/Layout/Theme.tsx:47 +msgid "Dark" +msgstr "Escuro" + +#: components/Layout/Breadcrumbs.tsx:25 +msgid "Infer table dialect" +msgstr "Inferir dialeto da tabela" + +#: components/Layout/Breadcrumbs.tsx:27 +msgid "Infer table schema" +msgstr "Inferir esquema da tabela" + +#: components/Layout/Theme.tsx:38 +msgid "Light" +msgstr "Claro" + +#: components/Layout/Banner.tsx:34 +msgid "on GitHub!" +msgstr "no GitHub!" + +#: components/Layout/Banner.tsx:23 +msgid "or" +msgstr "ou" + +#: components/Layout/Breadcrumbs.tsx:31 +msgid "Select a tool below" +msgstr "Selecione uma ferramenta abaixo" + +#: components/Layout/Share.tsx:41 +msgid "Share" +msgstr "Compartilhar" + +#: components/Layout/Share.tsx:32 +msgid "Share Page" +msgstr "Compartilhar página" + +#: components/Layout/Banner.tsx:12 msgid "Support the project by" msgstr "Apoie o projeto por meio de" + +#: components/Layout/Breadcrumbs.tsx:17 +msgid "Tools" +msgstr "Ferramentas" + +#: components/Layout/Breadcrumbs.tsx:23 +msgid "Validate data package" +msgstr "Validar pacote de dados" + +#: components/Layout/Repository.tsx:13 +msgid "View Repository" +msgstr "Ver Repositório" + +#: components/Layout/Credits.tsx:50 +msgid "We are bringing technological innovation and consultancy services to the open data field" +msgstr "Estamos trazendo inovação tecnológica e serviços de consultoria para o campo de dados abertos" diff --git a/browser/locales/ru/messages.po b/browser/locales/ru/messages.po index 496b51f4..95114efc 100644 --- a/browser/locales/ru/messages.po +++ b/browser/locales/ru/messages.po @@ -13,6 +13,82 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: components/Layout/Banner.tsx:15 +#: components/Layout/Banner.tsx:32 +msgid "adding a star" +msgstr "поставив звезду" + +#: components/Layout/Banner.tsx:21 +msgid "becoming a sponsor" +msgstr "став спонсором" + +#: components/Layout/Credits.tsx:20 +msgid "Brought to you by" +msgstr "Предоставлено" + +#: components/Layout/Language.tsx:64 +msgid "Change Language" +msgstr "Изменить язык" + +#: components/Layout/Theme.tsx:21 +msgid "Change Theme" +msgstr "Изменить тему" + +#: components/Layout/Breadcrumbs.tsx:29 +msgid "Convert table format" +msgstr "Преобразовать формат таблицы" + +#: components/Layout/Theme.tsx:47 +msgid "Dark" +msgstr "Тёмная" + +#: components/Layout/Breadcrumbs.tsx:25 +msgid "Infer table dialect" +msgstr "Определить диалект таблицы" + +#: components/Layout/Breadcrumbs.tsx:27 +msgid "Infer table schema" +msgstr "Определить схему таблицы" + +#: components/Layout/Theme.tsx:38 +msgid "Light" +msgstr "Светлая" + +#: components/Layout/Banner.tsx:34 +msgid "on GitHub!" +msgstr "на GitHub!" + +#: components/Layout/Banner.tsx:23 +msgid "or" +msgstr "или" + +#: components/Layout/Breadcrumbs.tsx:31 +msgid "Select a tool below" +msgstr "Выберите инструмент ниже" + +#: components/Layout/Share.tsx:41 +msgid "Share" +msgstr "Поделиться" + +#: components/Layout/Share.tsx:32 +msgid "Share Page" +msgstr "Поделиться страницей" + +#: components/Layout/Banner.tsx:12 msgid "Support the project by" -msgstr "Поддержите проект:" \ No newline at end of file +msgstr "Поддержите проект:" + +#: components/Layout/Breadcrumbs.tsx:17 +msgid "Tools" +msgstr "Инструменты" + +#: components/Layout/Breadcrumbs.tsx:23 +msgid "Validate data package" +msgstr "Проверить пакет данных" + +#: components/Layout/Repository.tsx:13 +msgid "View Repository" +msgstr "Посмотреть репозиторий" + +#: components/Layout/Credits.tsx:50 +msgid "We are bringing technological innovation and consultancy services to the open data field" +msgstr "Мы привносим технологические инновации и консалтинговые услуги в сферу открытых данных" diff --git a/browser/locales/uk/messages.po b/browser/locales/uk/messages.po index 7dc0e739..585e09d5 100644 --- a/browser/locales/uk/messages.po +++ b/browser/locales/uk/messages.po @@ -13,6 +13,82 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: components/Layout/Banner.tsx:15 +#: components/Layout/Banner.tsx:32 +msgid "adding a star" +msgstr "додаванням зірки" + +#: components/Layout/Banner.tsx:21 +msgid "becoming a sponsor" +msgstr "ставши спонсором" + +#: components/Layout/Credits.tsx:20 +msgid "Brought to you by" +msgstr "Від" + +#: components/Layout/Language.tsx:64 +msgid "Change Language" +msgstr "Змінити мову" + +#: components/Layout/Theme.tsx:21 +msgid "Change Theme" +msgstr "Змінити тему" + +#: components/Layout/Breadcrumbs.tsx:29 +msgid "Convert table format" +msgstr "Конвертувати формат таблиці" + +#: components/Layout/Theme.tsx:47 +msgid "Dark" +msgstr "Темна" + +#: components/Layout/Breadcrumbs.tsx:25 +msgid "Infer table dialect" +msgstr "Визначити діалект таблиці" + +#: components/Layout/Breadcrumbs.tsx:27 +msgid "Infer table schema" +msgstr "Визначити схему таблиці" + +#: components/Layout/Theme.tsx:38 +msgid "Light" +msgstr "Світла" + +#: components/Layout/Banner.tsx:34 +msgid "on GitHub!" +msgstr "на GitHub!" + +#: components/Layout/Banner.tsx:23 +msgid "or" +msgstr "або" + +#: components/Layout/Breadcrumbs.tsx:31 +msgid "Select a tool below" +msgstr "Виберіть інструмент нижче" + +#: components/Layout/Share.tsx:41 +msgid "Share" +msgstr "Поділитися" + +#: components/Layout/Share.tsx:32 +msgid "Share Page" +msgstr "Поділитися сторінкою" + +#: components/Layout/Banner.tsx:12 msgid "Support the project by" msgstr "Підтримайте проєкт через" + +#: components/Layout/Breadcrumbs.tsx:17 +msgid "Tools" +msgstr "Інструменти" + +#: components/Layout/Breadcrumbs.tsx:23 +msgid "Validate data package" +msgstr "Валідувати пакет даних" + +#: components/Layout/Repository.tsx:13 +msgid "View Repository" +msgstr "Переглянути репозиторій" + +#: components/Layout/Credits.tsx:50 +msgid "We are bringing technological innovation and consultancy services to the open data field" +msgstr "Ми впроваджуємо технологічні інновації та консалтингові послуги у сферу відкритих даних" From 71af4332b3441aa165dc1782684c92397b289f6f Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 12:22:01 +0000 Subject: [PATCH 20/48] Migrated Dialog to lingui --- browser/components/Dialog/Dialog.tsx | 8 +++----- browser/locales/de/messages.po | 8 ++++++++ browser/locales/en/messages.po | 8 ++++++++ browser/locales/es/messages.po | 8 ++++++++ browser/locales/fr/messages.po | 10 +++++++++- browser/locales/it/messages.po | 10 +++++++++- browser/locales/pt/messages.po | 10 +++++++++- browser/locales/ru/messages.po | 10 +++++++++- browser/locales/uk/messages.po | 10 +++++++++- 9 files changed, 72 insertions(+), 10 deletions(-) diff --git a/browser/components/Dialog/Dialog.tsx b/browser/components/Dialog/Dialog.tsx index f46ceb31..c66b495b 100644 --- a/browser/components/Dialog/Dialog.tsx +++ b/browser/components/Dialog/Dialog.tsx @@ -1,7 +1,7 @@ +import { Trans } from "@lingui/react/macro" import { Box, Button, Container, Flex, ScrollArea } from "@mantine/core" import { useEffect, useState } from "react" import type { ReactNode } from "react" -import { useTranslation } from "react-i18next" import { Drawer as VaulDrawer } from "vaul" import classes from "./Dialog.module.css" @@ -11,8 +11,6 @@ export function Dialog(props: { fullScreen?: boolean onOpenChange: (open: boolean) => void }) { - const { t } = useTranslation() - const snapPoints = [0.5, 1] as const const [snap, setSnap] = useState(snapPoints[0]) @@ -36,7 +34,7 @@ export function Dialog(props: { - {t("Dialog")} + Dialog - {t("Close")} + Close diff --git a/browser/locales/de/messages.po b/browser/locales/de/messages.po index 77bb3cd6..05266488 100644 --- a/browser/locales/de/messages.po +++ b/browser/locales/de/messages.po @@ -33,6 +33,10 @@ msgstr "Sprache ändern" msgid "Change Theme" msgstr "Design ändern" +#: components/Dialog/Dialog.tsx:52 +msgid "Close" +msgstr "Schließen" + #: components/Layout/Breadcrumbs.tsx:29 msgid "Convert table format" msgstr "Tabellenformat umwandeln" @@ -41,6 +45,10 @@ msgstr "Tabellenformat umwandeln" msgid "Dark" msgstr "Dunkel" +#: components/Dialog/Dialog.tsx:37 +msgid "Dialog" +msgstr "Dialog" + #: components/Layout/Breadcrumbs.tsx:25 msgid "Infer table dialect" msgstr "Tabellendialekt erkennen" diff --git a/browser/locales/en/messages.po b/browser/locales/en/messages.po index 3e61c4b8..eb151c6c 100644 --- a/browser/locales/en/messages.po +++ b/browser/locales/en/messages.po @@ -33,6 +33,10 @@ msgstr "Change Language" msgid "Change Theme" msgstr "Change Theme" +#: components/Dialog/Dialog.tsx:52 +msgid "Close" +msgstr "Close" + #: components/Layout/Breadcrumbs.tsx:29 msgid "Convert table format" msgstr "Convert table format" @@ -41,6 +45,10 @@ msgstr "Convert table format" msgid "Dark" msgstr "Dark" +#: components/Dialog/Dialog.tsx:37 +msgid "Dialog" +msgstr "Dialog" + #: components/Layout/Breadcrumbs.tsx:25 msgid "Infer table dialect" msgstr "Infer table dialect" diff --git a/browser/locales/es/messages.po b/browser/locales/es/messages.po index e0a13905..9ea58113 100644 --- a/browser/locales/es/messages.po +++ b/browser/locales/es/messages.po @@ -33,6 +33,10 @@ msgstr "Cambiar idioma" msgid "Change Theme" msgstr "Cambiar tema" +#: components/Dialog/Dialog.tsx:52 +msgid "Close" +msgstr "Cerrar" + #: components/Layout/Breadcrumbs.tsx:29 msgid "Convert table format" msgstr "Convertir formato de tabla" @@ -41,6 +45,10 @@ msgstr "Convertir formato de tabla" msgid "Dark" msgstr "Oscuro" +#: components/Dialog/Dialog.tsx:37 +msgid "Dialog" +msgstr "Diálogo" + #: components/Layout/Breadcrumbs.tsx:25 msgid "Infer table dialect" msgstr "Inferir dialecto de tabla" diff --git a/browser/locales/fr/messages.po b/browser/locales/fr/messages.po index 4c2ae4ed..c05716a2 100644 --- a/browser/locales/fr/messages.po +++ b/browser/locales/fr/messages.po @@ -33,6 +33,10 @@ msgstr "Changer de langue" msgid "Change Theme" msgstr "Changer de thème" +#: components/Dialog/Dialog.tsx:52 +msgid "Close" +msgstr "Fermer" + #: components/Layout/Breadcrumbs.tsx:29 msgid "Convert table format" msgstr "Convertir le format du tableau" @@ -41,6 +45,10 @@ msgstr "Convertir le format du tableau" msgid "Dark" msgstr "Sombre" +#: components/Dialog/Dialog.tsx:37 +msgid "Dialog" +msgstr "Dialogue" + #: components/Layout/Breadcrumbs.tsx:25 msgid "Infer table dialect" msgstr "Déduire le dialecte du tableau" @@ -91,4 +99,4 @@ msgstr "Voir le dépôt" #: components/Layout/Credits.tsx:50 msgid "We are bringing technological innovation and consultancy services to the open data field" -msgstr "Nous apportons l'innovation technologique et des services de conseil au domaine des données ouvertes" +msgstr "Nous apportons l'innovation technologique et des services de conseil au domaine des données ouvertes" \ No newline at end of file diff --git a/browser/locales/it/messages.po b/browser/locales/it/messages.po index 9d02dc96..227090b7 100644 --- a/browser/locales/it/messages.po +++ b/browser/locales/it/messages.po @@ -33,6 +33,10 @@ msgstr "Cambia lingua" msgid "Change Theme" msgstr "Cambia tema" +#: components/Dialog/Dialog.tsx:52 +msgid "Close" +msgstr "Chiudi" + #: components/Layout/Breadcrumbs.tsx:29 msgid "Convert table format" msgstr "Converti formato tabella" @@ -41,6 +45,10 @@ msgstr "Converti formato tabella" msgid "Dark" msgstr "Scuro" +#: components/Dialog/Dialog.tsx:37 +msgid "Dialog" +msgstr "Finestra di dialogo" + #: components/Layout/Breadcrumbs.tsx:25 msgid "Infer table dialect" msgstr "Individua dialetto tabella" @@ -91,4 +99,4 @@ msgstr "Visualizza repository" #: components/Layout/Credits.tsx:50 msgid "We are bringing technological innovation and consultancy services to the open data field" -msgstr "Stiamo portando innovazione tecnologica e servizi di consulenza nel campo degli open data" +msgstr "Stiamo portando innovazione tecnologica e servizi di consulenza nel campo degli open data" \ No newline at end of file diff --git a/browser/locales/pt/messages.po b/browser/locales/pt/messages.po index b64594c3..8626925d 100644 --- a/browser/locales/pt/messages.po +++ b/browser/locales/pt/messages.po @@ -33,6 +33,10 @@ msgstr "Mudar idioma" msgid "Change Theme" msgstr "Alterar tema" +#: components/Dialog/Dialog.tsx:52 +msgid "Close" +msgstr "Fechar" + #: components/Layout/Breadcrumbs.tsx:29 msgid "Convert table format" msgstr "Converter formato da tabela" @@ -41,6 +45,10 @@ msgstr "Converter formato da tabela" msgid "Dark" msgstr "Escuro" +#: components/Dialog/Dialog.tsx:37 +msgid "Dialog" +msgstr "Diálogo" + #: components/Layout/Breadcrumbs.tsx:25 msgid "Infer table dialect" msgstr "Inferir dialeto da tabela" @@ -91,4 +99,4 @@ msgstr "Ver Repositório" #: components/Layout/Credits.tsx:50 msgid "We are bringing technological innovation and consultancy services to the open data field" -msgstr "Estamos trazendo inovação tecnológica e serviços de consultoria para o campo de dados abertos" +msgstr "Estamos trazendo inovação tecnológica e serviços de consultoria para o campo de dados abertos" \ No newline at end of file diff --git a/browser/locales/ru/messages.po b/browser/locales/ru/messages.po index 95114efc..6f3e7680 100644 --- a/browser/locales/ru/messages.po +++ b/browser/locales/ru/messages.po @@ -33,6 +33,10 @@ msgstr "Изменить язык" msgid "Change Theme" msgstr "Изменить тему" +#: components/Dialog/Dialog.tsx:52 +msgid "Close" +msgstr "Закрыть" + #: components/Layout/Breadcrumbs.tsx:29 msgid "Convert table format" msgstr "Преобразовать формат таблицы" @@ -41,6 +45,10 @@ msgstr "Преобразовать формат таблицы" msgid "Dark" msgstr "Тёмная" +#: components/Dialog/Dialog.tsx:37 +msgid "Dialog" +msgstr "Диалог" + #: components/Layout/Breadcrumbs.tsx:25 msgid "Infer table dialect" msgstr "Определить диалект таблицы" @@ -91,4 +99,4 @@ msgstr "Посмотреть репозиторий" #: components/Layout/Credits.tsx:50 msgid "We are bringing technological innovation and consultancy services to the open data field" -msgstr "Мы привносим технологические инновации и консалтинговые услуги в сферу открытых данных" +msgstr "Мы привносим технологические инновации и консалтинговые услуги в сферу открытых данных" \ No newline at end of file diff --git a/browser/locales/uk/messages.po b/browser/locales/uk/messages.po index 585e09d5..2daafa2d 100644 --- a/browser/locales/uk/messages.po +++ b/browser/locales/uk/messages.po @@ -33,6 +33,10 @@ msgstr "Змінити мову" msgid "Change Theme" msgstr "Змінити тему" +#: components/Dialog/Dialog.tsx:52 +msgid "Close" +msgstr "Закрити" + #: components/Layout/Breadcrumbs.tsx:29 msgid "Convert table format" msgstr "Конвертувати формат таблиці" @@ -41,6 +45,10 @@ msgstr "Конвертувати формат таблиці" msgid "Dark" msgstr "Темна" +#: components/Dialog/Dialog.tsx:37 +msgid "Dialog" +msgstr "Діалог" + #: components/Layout/Breadcrumbs.tsx:25 msgid "Infer table dialect" msgstr "Визначити діалект таблиці" @@ -91,4 +99,4 @@ msgstr "Переглянути репозиторій" #: components/Layout/Credits.tsx:50 msgid "We are bringing technological innovation and consultancy services to the open data field" -msgstr "Ми впроваджуємо технологічні інновації та консалтингові послуги у сферу відкритих даних" +msgstr "Ми впроваджуємо технологічні інновації та консалтингові послуги у сферу відкритих даних" \ No newline at end of file From 8b16477bc3058355cb8af6a2f2b011eff1bdc4c0 Mon Sep 17 00:00:00 2001 From: roll Date: Mon, 10 Nov 2025 12:26:01 +0000 Subject: [PATCH 21/48] Migrated Form to lingui --- browser/components/Form/Form.tsx | 43 ++++++++++----------- browser/locales/de/messages.po | 64 +++++++++++++++++++++++++++++++ browser/locales/en/messages.po | 64 +++++++++++++++++++++++++++++++ browser/locales/es/messages.po | 64 +++++++++++++++++++++++++++++++ browser/locales/fr/messages.po | 66 +++++++++++++++++++++++++++++++- browser/locales/it/messages.po | 64 +++++++++++++++++++++++++++++++ browser/locales/pt/messages.po | 64 +++++++++++++++++++++++++++++++ browser/locales/ru/messages.po | 66 +++++++++++++++++++++++++++++++- browser/locales/uk/messages.po | 66 +++++++++++++++++++++++++++++++- 9 files changed, 535 insertions(+), 26 deletions(-) diff --git a/browser/components/Form/Form.tsx b/browser/components/Form/Form.tsx index a7cb4d9a..cb9b689e 100644 --- a/browser/components/Form/Form.tsx +++ b/browser/components/Form/Form.tsx @@ -1,8 +1,8 @@ +import { Trans, useLingui } from "@lingui/react/macro" import { Box, Button, CloseButton, Stack, Tabs } from "@mantine/core" import { FileInput, TextInput, Textarea } from "@mantine/core" import { isJSONString, isNotEmpty, useForm } from "@mantine/form" import { useState } from "react" -import { useTranslation } from "react-i18next" import * as icons from "#icons.ts" import * as settings from "#settings.ts" @@ -11,7 +11,6 @@ export interface FormProps { } export function Form(props: FormProps) { - const { t } = useTranslation() const [activeTab, setActiveTab] = useState("url") return ( @@ -26,7 +25,7 @@ export function Form(props: FormProps) { /> } > - {t("URL")} + URL } > - {t("File")} + File } > - {t("Text")} + Text @@ -68,20 +67,20 @@ export function Form(props: FormProps) { } function UrlForm(props: { onSubmit: (value: string) => void }) { - const { t } = useTranslation() + const { t } = useLingui() const form = useForm({ initialValues: { url: "", }, validate: { url: value => { - const notEmpty = isNotEmpty(t("URL is required"))(value) + const notEmpty = isNotEmpty(t`URL is required`)(value) if (notEmpty) return notEmpty try { new URL(value) return null } catch { - return t("Invalid URL format") + return t`Invalid URL format` } }, }, @@ -95,9 +94,9 @@ function UrlForm(props: { onSubmit: (value: string) => void }) {
form.setFieldValue("url", "")} @@ -113,13 +112,13 @@ function UrlForm(props: { onSubmit: (value: string) => void }) { } function FileForm(props: { onSubmit: (value: File) => void }) { - const { t } = useTranslation() + const { t } = useLingui() const form = useForm({ initialValues: { file: null as File | null, }, validate: { - file: isNotEmpty(t("File is required")), + file: isNotEmpty(t`File is required`), }, }) @@ -132,7 +131,7 @@ function FileForm(props: { onSubmit: (value: File) => void }) { const json = JSON.parse(text) props.onSubmit(json) } catch (err) { - form.setErrors({ file: t("Invalid JSON file") }) + form.setErrors({ file: t`Invalid JSON file` }) } }) @@ -140,9 +139,9 @@ function FileForm(props: { onSubmit: (value: File) => void }) { form.setFieldValue("file", null)} @@ -158,16 +157,16 @@ function FileForm(props: { onSubmit: (value: File) => void }) { } function JsonForm(props: { onSubmit: (value: Record) => void }) { - const { t } = useTranslation() + const { t } = useLingui() const form = useForm({ initialValues: { text: "", }, validate: { text: value => { - const notEmpty = isNotEmpty(t("Text is required"))(value) + const notEmpty = isNotEmpty(t`Text is required`)(value) if (notEmpty) return notEmpty - return isJSONString(t("Invalid JSON format"))(value) + return isJSONString(t`Invalid JSON format`)(value) }, }, }) @@ -181,9 +180,9 @@ function JsonForm(props: { onSubmit: (value: Record) => void }) {