mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-24 12:09:51 +02:00
Compare commits
62
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
960279bf00 | ||
|
|
4247004b13 | ||
|
|
960ca4b0f4 | ||
|
|
a75c47865b | ||
|
|
c2714c4d6b | ||
|
|
1c505818a4 | ||
|
|
444705347f | ||
|
|
19556b5fc9 | ||
|
|
e52f003c1b | ||
|
|
4fc57d7fc1 | ||
|
|
1619ee1e00 | ||
|
|
a38239a6f9 | ||
|
|
9e26da3205 | ||
|
|
750bdd236a | ||
|
|
33bb8ead3c | ||
|
|
79e282e70e | ||
|
|
e911f36ea3 | ||
|
|
4e470599e8 | ||
|
|
5f24887535 | ||
|
|
99317c2075 | ||
|
|
99965118b3 | ||
|
|
7592381b12 | ||
|
|
7d02f6311f | ||
|
|
6c9ce58af5 | ||
|
|
402b6d5113 | ||
|
|
1733180f2c | ||
|
|
11c2c9749c | ||
|
|
267bb271c9 | ||
|
|
3c01056f4e | ||
|
|
66f9c9d106 | ||
|
|
3be91469aa | ||
|
|
491b03ad00 | ||
|
|
054f33a649 | ||
|
|
5b4ad95a14 | ||
|
|
fe7282aae7 | ||
|
|
8842283f0e | ||
|
|
b6f9ae9187 | ||
|
|
b5a10fcc73 | ||
|
|
4015c103cf | ||
|
|
8c08a00d64 | ||
|
|
5c89bcea99 | ||
|
|
5f737d940d | ||
|
|
ec161addab | ||
|
|
8d7575815b | ||
|
|
4a0fccc526 | ||
|
|
5477616917 | ||
|
|
ba1f530de7 | ||
|
|
1f1c9f26f1 | ||
|
|
b400ff6d07 | ||
|
|
edc3aba545 | ||
|
|
1e1040816b | ||
|
|
d477a3a7a4 | ||
|
|
37efc2b4a4 | ||
|
|
5285d081e4 | ||
|
|
de8b3959b3 | ||
|
|
cfc0ebb8e5 | ||
|
|
9839d4eef5 | ||
|
|
c637343593 | ||
|
|
f3c362dfce | ||
|
|
20cc6d32a4 | ||
|
|
35ed716659 | ||
|
|
bea55f1b6c |
No files matched your search
@@ -1,3 +1,5 @@
|
|||||||
|
packages/protos/src/*/*.ts
|
||||||
|
|
||||||
node_modules
|
node_modules
|
||||||
_node_modules
|
_node_modules
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
|||||||
Vendored
+4
-1
@@ -254,5 +254,8 @@
|
|||||||
"youtubers",
|
"youtubers",
|
||||||
"zoomable"
|
"zoomable"
|
||||||
],
|
],
|
||||||
"typescript.tsdk": "node_modules\\typescript\\lib"
|
"typescript.tsdk": "node_modules\\typescript\\lib",
|
||||||
|
"cSpell.enabledFileTypes": {
|
||||||
|
"proto": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -26,6 +26,7 @@
|
|||||||
"name": "@blitzkit/core",
|
"name": "@blitzkit/core",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@blitzkit/i18n": "workspace:*",
|
"@blitzkit/i18n": "workspace:*",
|
||||||
|
"@blitzkit/protos": "workspace:*",
|
||||||
"@bufbuild/protobuf": "^2.9.0",
|
"@bufbuild/protobuf": "^2.9.0",
|
||||||
"@octokit/plugin-throttling": "^11.0.1",
|
"@octokit/plugin-throttling": "^11.0.1",
|
||||||
"@octokit/rest": "^22.0.0",
|
"@octokit/rest": "^22.0.0",
|
||||||
@@ -52,6 +53,9 @@
|
|||||||
"ts-deepmerge": "^7.0.3",
|
"ts-deepmerge": "^7.0.3",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"packages/protos": {
|
||||||
|
"name": "@blitzkit/protos",
|
||||||
|
},
|
||||||
"packages/scripts": {
|
"packages/scripts": {
|
||||||
"name": "@blitzkit/scripts",
|
"name": "@blitzkit/scripts",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -107,12 +111,13 @@
|
|||||||
"@astrolib/seo": "^1.0.0-beta.8",
|
"@astrolib/seo": "^1.0.0-beta.8",
|
||||||
"@blitzkit/core": "workspace:*",
|
"@blitzkit/core": "workspace:*",
|
||||||
"@blitzkit/i18n": "workspace:*",
|
"@blitzkit/i18n": "workspace:*",
|
||||||
|
"@fontsource-variable/jetbrains-mono": "^5.3.0",
|
||||||
|
"@fontsource-variable/roboto-flex": "^5.3.0",
|
||||||
"@fontsource/inter": "^5.2.8",
|
"@fontsource/inter": "^5.2.8",
|
||||||
"@gltf-transform/core": "^4.4.2",
|
"@gltf-transform/core": "^4.4.2",
|
||||||
"@gltf-transform/functions": "^4.4.2",
|
"@gltf-transform/functions": "^4.4.2",
|
||||||
"@radix-ui/colors": "^3.0.0",
|
"@radix-ui/colors": "^3.0.0",
|
||||||
"@radix-ui/react-icons": "^1.3.2",
|
"@radix-ui/react-icons": "^1.3.2",
|
||||||
"@radix-ui/themes": "^3.2.1",
|
|
||||||
"@react-three/drei": "^10.7.6",
|
"@react-three/drei": "^10.7.6",
|
||||||
"@react-three/fiber": "^9.4.0",
|
"@react-three/fiber": "^9.4.0",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
@@ -131,8 +136,10 @@
|
|||||||
"markdown-to-jsx": "^7.7.13",
|
"markdown-to-jsx": "^7.7.13",
|
||||||
"pwa-install-handler": "^2.6.3",
|
"pwa-install-handler": "^2.6.3",
|
||||||
"quicklime": "^1.2.0",
|
"quicklime": "^1.2.0",
|
||||||
|
"radix-ui": "^1.6.7",
|
||||||
"react": "^19.2.4",
|
"react": "^19.2.4",
|
||||||
"react-dom": "^19.2.4",
|
"react-dom": "^19.2.4",
|
||||||
|
"react-error-boundary": "^6.1.3",
|
||||||
"react-promise-suspense": "^0.3.4",
|
"react-promise-suspense": "^0.3.4",
|
||||||
"three": "^0.180.0",
|
"three": "^0.180.0",
|
||||||
"three-stdlib": "^2.36.0",
|
"three-stdlib": "^2.36.0",
|
||||||
@@ -397,6 +404,8 @@
|
|||||||
|
|
||||||
"@blitzkit/i18n": ["@blitzkit/i18n@workspace:packages/i18n"],
|
"@blitzkit/i18n": ["@blitzkit/i18n@workspace:packages/i18n"],
|
||||||
|
|
||||||
|
"@blitzkit/protos": ["@blitzkit/protos@workspace:packages/protos"],
|
||||||
|
|
||||||
"@blitzkit/scripts": ["@blitzkit/scripts@workspace:packages/scripts"],
|
"@blitzkit/scripts": ["@blitzkit/scripts@workspace:packages/scripts"],
|
||||||
|
|
||||||
"@blitzkit/website": ["@blitzkit/website@workspace:packages/website"],
|
"@blitzkit/website": ["@blitzkit/website@workspace:packages/website"],
|
||||||
@@ -481,13 +490,17 @@
|
|||||||
|
|
||||||
"@esbuild/win32-x64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw=="],
|
"@esbuild/win32-x64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw=="],
|
||||||
|
|
||||||
"@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="],
|
"@floating-ui/core": ["@floating-ui/core@1.8.0", "", { "dependencies": { "@floating-ui/utils": "^0.2.12" } }, "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ=="],
|
||||||
|
|
||||||
"@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="],
|
"@floating-ui/dom": ["@floating-ui/dom@1.8.0", "", { "dependencies": { "@floating-ui/core": "^1.8.0", "@floating-ui/utils": "^0.2.12" } }, "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg=="],
|
||||||
|
|
||||||
"@floating-ui/react-dom": ["@floating-ui/[email protected].6", "", { "dependencies": { "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw=="],
|
"@floating-ui/react-dom": ["@floating-ui/[email protected].9", "", { "dependencies": { "@floating-ui/dom": "^1.8.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg=="],
|
||||||
|
|
||||||
"@floating-ui/utils": ["@floating-ui/[email protected]0", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="],
|
"@floating-ui/utils": ["@floating-ui/[email protected]2", "", {}, "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww=="],
|
||||||
|
|
||||||
|
"@fontsource-variable/jetbrains-mono": ["@fontsource-variable/[email protected]", "", {}, "sha512-F32xpS2NsGYoQi2ADSkKTgpJj7ozajsGgDJ8woTnqjmIB+dxDIqImjl4pXZVEExu8UFZ2ndhmX18EBS/hdz3Lw=="],
|
||||||
|
|
||||||
|
"@fontsource-variable/roboto-flex": ["@fontsource-variable/[email protected]", "", {}, "sha512-bOxckUy0qXNRjhV6e4pcHGSvptix4ZRD1uaj5Za8h+p3qrb2GL4U4TQdpVmPSy0SmqwldfD+JJqEKdF68EyiAw=="],
|
||||||
|
|
||||||
"@fontsource/inter": ["@fontsource/[email protected]", "", {}, "sha512-P6r5WnJoKiNVV+zvW2xM13gNdFhAEpQ9dQJHt3naLvfg+LkF2ldgSLiF4T41lf1SQCM9QmkqPTn4TH568IRagg=="],
|
"@fontsource/inter": ["@fontsource/[email protected]", "", {}, "sha512-P6r5WnJoKiNVV+zvW2xM13gNdFhAEpQ9dQJHt3naLvfg+LkF2ldgSLiF4T41lf1SQCM9QmkqPTn4TH568IRagg=="],
|
||||||
|
|
||||||
@@ -677,129 +690,127 @@
|
|||||||
|
|
||||||
"@radix-ui/colors": ["@radix-ui/[email protected]", "", {}, "sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg=="],
|
"@radix-ui/colors": ["@radix-ui/[email protected]", "", {}, "sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg=="],
|
||||||
|
|
||||||
"@radix-ui/number": ["@radix-ui/[email protected].1", "", {}, "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g=="],
|
"@radix-ui/number": ["@radix-ui/[email protected].3", "", {}, "sha512-Road2bidD0uu/1BGDOWNdPI06g0lIRy6IF9GZcIrDK2KGItfor8IQwQa+yM2ERgHM1MmHxaxpTzk0/Jp42lNfA=="],
|
||||||
|
|
||||||
"@radix-ui/primitive": ["@radix-ui/[email protected].3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="],
|
"@radix-ui/primitive": ["@radix-ui/[email protected].7", "", {}, "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q=="],
|
||||||
|
|
||||||
"@radix-ui/react-accessible-icon": ["@radix-ui/[email protected].7", "", { "dependencies": { "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-XM+E4WXl0OqUJFovy6GjmxxFyx9opfCAIUku4dlKRd5YEPqt4kALOkQOp0Of6reHuUkJuiPBEc5k0o4z4lTC8A=="],
|
"@radix-ui/react-accessible-icon": ["@radix-ui/[email protected].15", "", { "dependencies": { "@radix-ui/react-visually-hidden": "1.2.11" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-WTQwcAvQf5sOcuUyi90lKPbhwcvQ+j55cjrSmeaN+L2vKU3DooOvlKw2MDeiJ5IkV5N905KW0/fGojKOBhD11A=="],
|
||||||
|
|
||||||
"@radix-ui/react-accordion": ["@radix-ui/[email protected].12", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collapsible": "1.1.12", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA=="],
|
"@radix-ui/react-accordion": ["@radix-ui/[email protected]0", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collapsible": "1.1.20", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-jDhG9FvAEnlhnjrsINbNXcUa4G+L1KqSkJSunkbKEzFRcAb52jvM0PjPxPRvhe1HNc5F5yc0yzzWeeqlH4yBIg=="],
|
||||||
|
|
||||||
"@radix-ui/react-alert-dialog": ["@radix-ui/[email protected].15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw=="],
|
"@radix-ui/react-alert-dialog": ["@radix-ui/[email protected].23", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dialog": "1.1.23", "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-VAYOiQRqj3GPpYJE0I9J+X8Ip05cyVlNdKOFeiGS2Ou1HHGfpl0BxOyZm6nmVDyU+W+NF3/XLzmjHmVGydhwgA=="],
|
||||||
|
|
||||||
"@radix-ui/react-arrow": ["@radix-ui/[email protected].7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w=="],
|
"@radix-ui/react-arrow": ["@radix-ui/[email protected].15", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-v4zggRcjadnI+ClKDuijlQEW4tw3NoaeHc/PwpKnLoLLKNUG4InLegkstooLcRIUWCs+8L22dGURCVuFfOKfnA=="],
|
||||||
|
|
||||||
"@radix-ui/react-aspect-ratio": ["@radix-ui/[email protected].7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g=="],
|
"@radix-ui/react-aspect-ratio": ["@radix-ui/[email protected].15", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-fy+dyVR+90nelK8rqIznFlxzx7uPcGbhxH8Nfr2bHb4UfSe+e3hklOC0luK0hDwVwnRX7xTRySpsrQVeW+/oNQ=="],
|
||||||
|
|
||||||
"@radix-ui/react-avatar": ["@radix-ui/react-avatar@1.1.10", "", { "dependencies": { "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-is-hydrated": "0.1.0", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog=="],
|
"@radix-ui/react-avatar": ["@radix-ui/react-avatar@1.2.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-is-hydrated": "0.1.3", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-4ULOTJ/mqy2hT9GlWa/MFHxHSvH3nJzHnZM1waNsc5Bonv7i70aNenghXmD97S6OJ81ekXONGGt4nT1r0PfEdA=="],
|
||||||
|
|
||||||
"@radix-ui/react-checkbox": ["@radix-ui/[email protected].3", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw=="],
|
"@radix-ui/react-checkbox": ["@radix-ui/[email protected].11", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-size": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Gnptr9pDDQxD3hgq2dtPbtrp/c2qH1mBwIzw3X/ivrMb2e1t0jMTi606fVEqFPaQR1ggXIVQWKj3P2WW9v7zGQ=="],
|
||||||
|
|
||||||
"@radix-ui/react-collapsible": ["@radix-ui/[email protected].12", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA=="],
|
"@radix-ui/react-collapsible": ["@radix-ui/[email protected]0", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-mcGesGplBnzN2sbvJETzpCNfSMyPnb29q1GRLU+Ib7bJrpIG2ywmRoh2V5VbA2uNvKikKUlVbAPks7JDjz4A8Q=="],
|
||||||
|
|
||||||
"@radix-ui/react-collection": ["@radix-ui/[email protected].7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw=="],
|
"@radix-ui/react-collection": ["@radix-ui/[email protected].15", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9W+B9NPF0NaaPh/1NJd3+KqsnlLqU9H7T2rvww+fp+T/evVXdNAyYcnfRQZFOjkR1ajQp3yORlqnI8soawLvNA=="],
|
||||||
|
|
||||||
"@radix-ui/react-compose-refs": ["@radix-ui/[email protected].2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="],
|
"@radix-ui/react-compose-refs": ["@radix-ui/[email protected].5", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA=="],
|
||||||
|
|
||||||
"@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="],
|
"@radix-ui/react-context": ["@radix-ui/react-context@1.2.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA=="],
|
||||||
|
|
||||||
"@radix-ui/react-context-menu": ["@radix-ui/react-context-menu@2.2.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww=="],
|
"@radix-ui/react-context-menu": ["@radix-ui/react-context-menu@2.3.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-menu": "2.1.24", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-CtXP35dxaB5T3zXSd+E3uHe/QpXcpYnZmxp6OaIbfthtfW4wyb77M23BG+bwIJDtsMwEP/YssdsmNyZu7jhWew=="],
|
||||||
|
|
||||||
"@radix-ui/react-dialog": ["@radix-ui/[email protected].15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw=="],
|
"@radix-ui/react-dialog": ["@radix-ui/[email protected].23", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Ksw4WeROkO4rC9k/onilX/Ao2Cr1ku1unMNH+XSCcP4jSXYu7HDsg9n4ojMjVb22XpYjAQ9qfrFlVbru1vXDUA=="],
|
||||||
|
|
||||||
"@radix-ui/react-direction": ["@radix-ui/[email protected].1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw=="],
|
"@radix-ui/react-direction": ["@radix-ui/[email protected].4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-5pzg4FGQNpExhnhT2zlrP1wZFaYCd1K0nYWoFAdcYoYK868IEigqMX3B3f8yIoRlAhAeDWciLI6ZdCKHF9P4Vg=="],
|
||||||
|
|
||||||
"@radix-ui/react-dismissable-layer": ["@radix-ui/[email protected]1", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg=="],
|
"@radix-ui/react-dismissable-layer": ["@radix-ui/[email protected]9", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-effect-event": "0.0.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w=="],
|
||||||
|
|
||||||
"@radix-ui/react-dropdown-menu": ["@radix-ui/[email protected].16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw=="],
|
"@radix-ui/react-dropdown-menu": ["@radix-ui/[email protected].24", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-menu": "2.1.24", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-geq8l2rJkxvkXsT9RMgtUE3P8pITFpTsvYpbySi1IH4fZEABD/Gp85myayFgxk0ktljGMJnCbeFkyTusvSvv7g=="],
|
||||||
|
|
||||||
"@radix-ui/react-focus-guards": ["@radix-ui/[email protected].3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw=="],
|
"@radix-ui/react-focus-guards": ["@radix-ui/[email protected].6", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ=="],
|
||||||
|
|
||||||
"@radix-ui/react-focus-scope": ["@radix-ui/[email protected].7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw=="],
|
"@radix-ui/react-focus-scope": ["@radix-ui/[email protected].16", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ=="],
|
||||||
|
|
||||||
"@radix-ui/react-form": ["@radix-ui/[email protected].8", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-label": "2.1.7", "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-QM70k4Zwjttifr5a4sZFts9fn8FzHYvQ5PiB19O2HsYibaHSVt9fH9rzB0XZo/YcM+b7t/p7lYCT/F5eOeF5yQ=="],
|
"@radix-ui/react-form": ["@radix-ui/[email protected].16", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-label": "2.1.15", "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Q4TLEn2A7TAypxwmd6R9EwrlXDvkfYSDMrq9/887AXAGh+G1rH+kYJKSTv+Si9Y0JPKTwKYv6PviAJosysNimA=="],
|
||||||
|
|
||||||
"@radix-ui/react-hover-card": ["@radix-ui/[email protected].15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg=="],
|
"@radix-ui/react-hover-card": ["@radix-ui/[email protected].23", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-H8qONfZd3ltrU3+jHCIgITbWo6e1iTKvP9DHdrvYbX48ooRM5FjEDTn16AMwdfuOGkWdZEhpl3PLL/Wk/AnHDQ=="],
|
||||||
|
|
||||||
"@radix-ui/react-icons": ["@radix-ui/[email protected]", "", { "peerDependencies": { "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" } }, "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g=="],
|
"@radix-ui/react-icons": ["@radix-ui/[email protected]", "", { "peerDependencies": { "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" } }, "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g=="],
|
||||||
|
|
||||||
"@radix-ui/react-id": ["@radix-ui/[email protected].1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="],
|
"@radix-ui/react-id": ["@radix-ui/[email protected].4", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA=="],
|
||||||
|
|
||||||
"@radix-ui/react-label": ["@radix-ui/[email protected].7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ=="],
|
"@radix-ui/react-label": ["@radix-ui/[email protected].15", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-o/rdYEwZTTo5tjknnPeyQFU45kUC4i/XyeDPP+HGyi6XqpOP6Zf5Ya5vh/Yfe9Id5JiuWnnAx2XqIeD3UYZt0g=="],
|
||||||
|
|
||||||
"@radix-ui/react-menu": ["@radix-ui/[email protected].16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg=="],
|
"@radix-ui/react-menu": ["@radix-ui/[email protected].24", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-callback-ref": "1.1.4", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-uW7RVuU6Lp/ZtfeY4b3kL32zccgEWvPv1+cf17ubYzHa9cL8AHokmk36cG/XEiH/smbQvumnieXX9j/e9RqJWA=="],
|
||||||
|
|
||||||
"@radix-ui/react-menubar": ["@radix-ui/[email protected].16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA=="],
|
"@radix-ui/react-menubar": ["@radix-ui/[email protected].24", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-menu": "2.1.24", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-eeVs0vf7cuqXaM0qLQCPcufImiJNVBXdJDLu7ZGYl2732UH23Qat/foNGrr6vYV3/DdTsBqASoggUFgH14OcZA=="],
|
||||||
|
|
||||||
"@radix-ui/react-navigation-menu": ["@radix-ui/[email protected].14", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w=="],
|
"@radix-ui/react-navigation-menu": ["@radix-ui/[email protected].22", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-previous": "1.1.4", "@radix-ui/react-visually-hidden": "1.2.11" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ou7iLEJ+yrhQndkkA4U21XIdS/CS45F4iXIkTZcb6/Ne9EMsOuDudVmCwmDnfFZZ+y1FZqXRNSIgBy+YMvZVZg=="],
|
||||||
|
|
||||||
"@radix-ui/react-one-time-password-field": ["@radix-ui/[email protected].8", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-is-hydrated": "0.1.0", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ycS4rbwURavDPVjCb5iS3aG4lURFDILi6sKI/WITUMZ13gMmn/xGjpLoqBAalhJaDk8I3UbCM5GzKHrnzwHbvg=="],
|
"@radix-ui/react-one-time-password-field": ["@radix-ui/[email protected].16", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-effect-event": "0.0.5", "@radix-ui/react-use-is-hydrated": "0.1.3", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Tj9P6ntAJEw52oq/F0AGknXR4XncxEt7XU47O3xJQOiWfLzEy3d9gtgKfvjSzGxzHkfL+VzvxGu2KTFsloJqXw=="],
|
||||||
|
|
||||||
"@radix-ui/react-password-toggle-field": ["@radix-ui/[email protected].3", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-is-hydrated": "0.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/UuCrDBWravcaMix4TdT+qlNdVwOM1Nck9kWx/vafXsdfj1ChfhOdfi3cy9SGBpWgTXwYCuboT/oYpJy3clqfw=="],
|
"@radix-ui/react-password-toggle-field": ["@radix-ui/[email protected].11", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-effect-event": "0.0.5", "@radix-ui/react-use-is-hydrated": "0.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-4gvFnmDXu3dgj21CqsufzIameRvlRd4SBqaWhcrlrNhRo0Y5i/49AmRJYe1fdAM3G2VNBbmin4b0D6cdQocwgw=="],
|
||||||
|
|
||||||
"@radix-ui/react-popover": ["@radix-ui/[email protected].15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA=="],
|
"@radix-ui/react-popover": ["@radix-ui/[email protected].23", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-controllable-state": "1.2.6", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-mw58MrBlyHWFisTOYignD0vf/3gdcgAR+9of1s9G/38CbFiUwH1nCDkc0AUM9IrXFgN5Ue8n45j9WCgyM1sbiQ=="],
|
||||||
|
|
||||||
"@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.8", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="],
|
"@radix-ui/react-popper": ["@radix-ui/react-popper@1.3.7", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-rect": "1.1.4", "@radix-ui/react-use-size": "1.1.4", "@radix-ui/rect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-UsJrrd7w4wuKKTdvd/DNERVlwSlUcyXzjhyDwBk+3aPOsCjOY6ZSbxuw8E6lZTjjfP8Cpd0J8VVkrYUWyGYXyg=="],
|
||||||
|
|
||||||
"@radix-ui/react-portal": ["@radix-ui/[email protected].9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="],
|
"@radix-ui/react-portal": ["@radix-ui/[email protected].17", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ=="],
|
||||||
|
|
||||||
"@radix-ui/react-presence": ["@radix-ui/[email protected].5", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ=="],
|
"@radix-ui/react-presence": ["@radix-ui/[email protected].10", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw=="],
|
||||||
|
|
||||||
"@radix-ui/react-primitive": ["@radix-ui/[email protected].3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="],
|
"@radix-ui/react-primitive": ["@radix-ui/[email protected].10", "", { "dependencies": { "@radix-ui/react-slot": "1.3.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg=="],
|
||||||
|
|
||||||
"@radix-ui/react-progress": ["@radix-ui/[email protected].7", "", { "dependencies": { "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg=="],
|
"@radix-ui/react-progress": ["@radix-ui/[email protected].16", "", { "dependencies": { "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-5XnomAsoZZCY+KNTxbIghpGqPruZvKFNlvcAljVAOdDRDsH4/OZQxhtwo5wdtoDM5R6MhJBb2sPnDuRFep3lzg=="],
|
||||||
|
|
||||||
"@radix-ui/react-radio-group": ["@radix-ui/react-radio-group@1.3.8", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ=="],
|
"@radix-ui/react-radio-group": ["@radix-ui/react-radio-group@1.4.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-size": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-cgYFEkntCxppHZgtSZ+7vh0wbZQ+IC7PPMw8DSnRG27B6kDd32/Zw0OJt7dGDigCoprMuWHjg2PvUn3PYvPFoQ=="],
|
||||||
|
|
||||||
"@radix-ui/react-roving-focus": ["@radix-ui/[email protected]1", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA=="],
|
"@radix-ui/react-roving-focus": ["@radix-ui/[email protected]9", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-is-hydrated": "0.1.3", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-V9jI6hDjT7l3jsCQD9bLNvDLM3tH/gdbOTp7Tefp3hbbgCGQoK7tUvrWiRlcoBHIZ809ElXwNQwVo0B98LuTXQ=="],
|
||||||
|
|
||||||
"@radix-ui/react-scroll-area": ["@radix-ui/[email protected]0", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A=="],
|
"@radix-ui/react-scroll-area": ["@radix-ui/[email protected]8", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Zn5Cd171wxsO3Dfg8HaW6RifTb9CYTKQJHs/G4+LN1GfmJpaQMZQyQxMprVPHpaz7QY4l9BxK2JwQuzHsXC8nA=="],
|
||||||
|
|
||||||
"@radix-ui/react-select": ["@radix-ui/react-select@2.2.6", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ=="],
|
"@radix-ui/react-select": ["@radix-ui/react-select@2.3.7", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-previous": "1.1.4", "@radix-ui/react-visually-hidden": "1.2.11", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-WFGImkmbzcfxeIwq/+4HvRN0pizBwbwQUED4I13ezQsDdfl38ZntN6TmR8XaSzPBqoCToe8rF75j6NPNDSzhbg=="],
|
||||||
|
|
||||||
"@radix-ui/react-separator": ["@radix-ui/[email protected].7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA=="],
|
"@radix-ui/react-separator": ["@radix-ui/[email protected].15", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-jOLO4lssEzWpoDu7G+Ze4VjwMRUBt291pnZD0gmalREZipnTX3wadQo7Fy48GCTfe14/YRN6rw/rOJqrE85Wxw=="],
|
||||||
|
|
||||||
"@radix-ui/react-slider": ["@radix-ui/react-slider@1.3.6", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw=="],
|
"@radix-ui/react-slider": ["@radix-ui/react-slider@1.4.7", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-previous": "1.1.4", "@radix-ui/react-use-size": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-mTSLf1GC/C0moWjTbvCM6Qn/gBjvlFt1azuWF2v7MN5C3Zq2U2J2lN3ZEYkpujuOU5Ro7A28wkviSxaKnG0BYg=="],
|
||||||
|
|
||||||
"@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
|
"@radix-ui/react-slot": ["@radix-ui/react-slot@1.3.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.5" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q=="],
|
||||||
|
|
||||||
"@radix-ui/react-switch": ["@radix-ui/react-switch@1.2.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ=="],
|
"@radix-ui/react-switch": ["@radix-ui/react-switch@1.3.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-size": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-48tB/4dn2UVLBCYhTu9AuR63IHl73l/qLbLgxd86noTUor4/K4LFDAcYjK+isP5313qxaFpjPVogE7+Y0/V3Kw=="],
|
||||||
|
|
||||||
"@radix-ui/react-tabs": ["@radix-ui/[email protected]3", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A=="],
|
"@radix-ui/react-tabs": ["@radix-ui/[email protected].21", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-UKxJlZid7FVtsk/WTxj4i4uSEgj2Au+KBbS7SQyTlzMhhn+86Cz3tISZdTa87bfEfcuvZezf2ZsxD4xuEKtkog=="],
|
||||||
|
|
||||||
"@radix-ui/react-toast": ["@radix-ui/[email protected].15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g=="],
|
"@radix-ui/react-toast": ["@radix-ui/[email protected].23", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-visually-hidden": "1.2.11" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ofhyAsYaocRGOs/n0XWdUOSVzEAG6BfrMVM8z0c0kLEWY38w/0WuMFPTJP/HVaZPYkMvHZoKIIhNcjbTCBILPg=="],
|
||||||
|
|
||||||
"@radix-ui/react-toggle": ["@radix-ui/[email protected]0", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ=="],
|
"@radix-ui/react-toggle": ["@radix-ui/[email protected]8", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7lonPlKfSacd20GlOBx2ltuVKz9oqWYZz+oMQyOltw6t1y2nyftj2ZmwwUHYn49kqfDWcp8dNZm5NgV+5Z+mug=="],
|
||||||
|
|
||||||
"@radix-ui/react-toggle-group": ["@radix-ui/[email protected]1", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-toggle": "1.1.10", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q=="],
|
"@radix-ui/react-toggle-group": ["@radix-ui/[email protected]9", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-toggle": "1.1.18", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-OtnwuSVjd1Ofi+AdnvhsjQdyuhCDwYs1w9RyB5BN/OavXOVQo42SYqQjwUnbPnaiPFBpQ9aX70dWeee+v2oBLA=="],
|
||||||
|
|
||||||
"@radix-ui/react-toolbar": ["@radix-ui/[email protected]1", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-separator": "1.1.7", "@radix-ui/react-toggle-group": "1.1.11" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg=="],
|
"@radix-ui/react-toolbar": ["@radix-ui/[email protected]9", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-separator": "1.1.15", "@radix-ui/react-toggle-group": "1.1.19" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Ph0IvtYw4VB12ZnZg+YtrGs8yJQsnizwo/zu0R4Y/nWugtJzA7Pg1eWeuDR9+LSqn+xjamss+UOSOJJJ4gx8jw=="],
|
||||||
|
|
||||||
"@radix-ui/react-tooltip": ["@radix-ui/[email protected].8", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg=="],
|
"@radix-ui/react-tooltip": ["@radix-ui/[email protected].16", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-visually-hidden": "1.2.11" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-6EamKFRRnlpdadndbZ6LMwycfwkwPte1B42hs6QA0gYhjaOKqW4PZ4pjaW9UrlDX5eVt/OjncE7BFTPL5nmZhg=="],
|
||||||
|
|
||||||
"@radix-ui/react-use-callback-ref": ["@radix-ui/[email protected].1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="],
|
"@radix-ui/react-use-callback-ref": ["@radix-ui/[email protected].4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ=="],
|
||||||
|
|
||||||
"@radix-ui/react-use-controllable-state": ["@radix-ui/[email protected].2", "", { "dependencies": { "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg=="],
|
"@radix-ui/react-use-controllable-state": ["@radix-ui/[email protected].6", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-use-effect-event": "0.0.5", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ=="],
|
||||||
|
|
||||||
"@radix-ui/react-use-effect-event": ["@radix-ui/[email protected].2", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA=="],
|
"@radix-ui/react-use-effect-event": ["@radix-ui/[email protected].5", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg=="],
|
||||||
|
|
||||||
"@radix-ui/react-use-escape-keydown": ["@radix-ui/[email protected].1", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g=="],
|
"@radix-ui/react-use-escape-keydown": ["@radix-ui/[email protected].5", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ge3ipobwSXTj4JyVtswQ7qZj0ZHdtbGuOno/LrgAAeSxtsJ6Vs4Gz5IkPH2bmqpjcLUFoqGhA/mueuIf63UXlA=="],
|
||||||
|
|
||||||
"@radix-ui/react-use-is-hydrated": ["@radix-ui/[email protected].0", "", { "dependencies": { "use-sync-external-store": "^1.5.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA=="],
|
"@radix-ui/react-use-is-hydrated": ["@radix-ui/[email protected].3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw=="],
|
||||||
|
|
||||||
"@radix-ui/react-use-layout-effect": ["@radix-ui/[email protected].1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="],
|
"@radix-ui/react-use-layout-effect": ["@radix-ui/[email protected].4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw=="],
|
||||||
|
|
||||||
"@radix-ui/react-use-previous": ["@radix-ui/[email protected].1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ=="],
|
"@radix-ui/react-use-previous": ["@radix-ui/[email protected].4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-XoSLhbRbqxFtgJoi2fNHA3C6pDlY34x508vUpUGoFZfvePfHXHbE1lC4FYFMnJWgiCRroSTw6fOsXQoVS9RwZg=="],
|
||||||
|
|
||||||
"@radix-ui/react-use-rect": ["@radix-ui/[email protected].1", "", { "dependencies": { "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w=="],
|
"@radix-ui/react-use-rect": ["@radix-ui/[email protected].4", "", { "dependencies": { "@radix-ui/rect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ=="],
|
||||||
|
|
||||||
"@radix-ui/react-use-size": ["@radix-ui/[email protected].1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ=="],
|
"@radix-ui/react-use-size": ["@radix-ui/[email protected].4", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-D3anSY15EJoxrihpsXI6SMrmmonnQtR2ni7arO+Lfdg3O95b9hNXxONk8jA5C8ANdF/h5HMAxejgs8PWJ6rlhw=="],
|
||||||
|
|
||||||
"@radix-ui/react-visually-hidden": ["@radix-ui/[email protected].3", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug=="],
|
"@radix-ui/react-visually-hidden": ["@radix-ui/[email protected].11", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-NFS86RYYZb4/exihaESBGOpMJFz8MGLAfu3mOBSGByVnVPC9JPASfYubxd/8KbkQK0sYAv8lVQDEQukDX/qXvQ=="],
|
||||||
|
|
||||||
"@radix-ui/rect": ["@radix-ui/[email protected].1", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="],
|
"@radix-ui/rect": ["@radix-ui/[email protected].3", "", {}, "sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw=="],
|
||||||
|
|
||||||
"@radix-ui/themes": ["@radix-ui/[email protected]", "", { "dependencies": { "@radix-ui/colors": "^3.0.0", "classnames": "^2.3.2", "radix-ui": "^1.1.3", "react-remove-scroll-bar": "^2.3.8" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-I0/h2CRNTpYNB7Mi3xFIvSsQq5a108d7kK8dTO5zp5b9HR5QJXKag6B8tjpz2ITkVYkFdkGk45doNkSr7OxwNw=="],
|
|
||||||
|
|
||||||
"@react-three/drei": ["@react-three/[email protected]", "", { "dependencies": { "@babel/runtime": "^7.26.0", "@mediapipe/tasks-vision": "0.10.17", "@monogrid/gainmap-js": "^3.0.6", "@use-gesture/react": "^10.3.1", "camera-controls": "^3.1.0", "cross-env": "^7.0.3", "detect-gpu": "^5.0.56", "glsl-noise": "^0.0.0", "hls.js": "^1.5.17", "maath": "^0.10.8", "meshline": "^3.3.1", "stats-gl": "^2.2.8", "stats.js": "^0.17.0", "suspend-react": "^0.1.3", "three-mesh-bvh": "^0.8.3", "three-stdlib": "^2.35.6", "troika-three-text": "^0.52.4", "tunnel-rat": "^0.1.2", "use-sync-external-store": "^1.4.0", "utility-types": "^3.11.0", "zustand": "^5.0.1" }, "peerDependencies": { "@react-three/fiber": "^9.0.0", "react": "^19", "react-dom": "^19", "three": ">=0.159" }, "optionalPeers": ["react-dom"] }, "sha512-ZSFwRlRaa4zjtB7yHO6Q9xQGuyDCzE7whXBhum92JslcMRC3aouivp0rAzszcVymIoJx6PXmibyP+xr+zKdwLg=="],
|
"@react-three/drei": ["@react-three/[email protected]", "", { "dependencies": { "@babel/runtime": "^7.26.0", "@mediapipe/tasks-vision": "0.10.17", "@monogrid/gainmap-js": "^3.0.6", "@use-gesture/react": "^10.3.1", "camera-controls": "^3.1.0", "cross-env": "^7.0.3", "detect-gpu": "^5.0.56", "glsl-noise": "^0.0.0", "hls.js": "^1.5.17", "maath": "^0.10.8", "meshline": "^3.3.1", "stats-gl": "^2.2.8", "stats.js": "^0.17.0", "suspend-react": "^0.1.3", "three-mesh-bvh": "^0.8.3", "three-stdlib": "^2.35.6", "troika-three-text": "^0.52.4", "tunnel-rat": "^0.1.2", "use-sync-external-store": "^1.4.0", "utility-types": "^3.11.0", "zustand": "^5.0.1" }, "peerDependencies": { "@react-three/fiber": "^9.0.0", "react": "^19", "react-dom": "^19", "three": ">=0.159" }, "optionalPeers": ["react-dom"] }, "sha512-ZSFwRlRaa4zjtB7yHO6Q9xQGuyDCzE7whXBhum92JslcMRC3aouivp0rAzszcVymIoJx6PXmibyP+xr+zKdwLg=="],
|
||||||
|
|
||||||
@@ -1151,8 +1162,6 @@
|
|||||||
|
|
||||||
"ci-info": ["[email protected]", "", {}, "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ=="],
|
"ci-info": ["[email protected]", "", {}, "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ=="],
|
||||||
|
|
||||||
"classnames": ["[email protected]", "", {}, "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="],
|
|
||||||
|
|
||||||
"cli-boxes": ["[email protected]", "", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="],
|
"cli-boxes": ["[email protected]", "", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="],
|
||||||
|
|
||||||
"cliui": ["[email protected]", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
|
"cliui": ["[email protected]", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
|
||||||
@@ -1995,7 +2004,7 @@
|
|||||||
|
|
||||||
"quicklime": ["[email protected]", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-uPFHeb+1L4o0D5V4TtLfvoMtLbv2dUq7d9dco47khUZilsdS0ugBD1RfhvdsdpMr4UWbOUkJOUCetUrMIDST1A=="],
|
"quicklime": ["[email protected]", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-uPFHeb+1L4o0D5V4TtLfvoMtLbv2dUq7d9dco47khUZilsdS0ugBD1RfhvdsdpMr4UWbOUkJOUCetUrMIDST1A=="],
|
||||||
|
|
||||||
"radix-ui": ["radix-ui@1.4.3", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-accessible-icon": "1.1.7", "@radix-ui/react-accordion": "1.2.12", "@radix-ui/react-alert-dialog": "1.1.15", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-aspect-ratio": "1.1.7", "@radix-ui/react-avatar": "1.1.10", "@radix-ui/react-checkbox": "1.3.3", "@radix-ui/react-collapsible": "1.1.12", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-context-menu": "2.2.16", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-dropdown-menu": "2.1.16", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-form": "0.1.8", "@radix-ui/react-hover-card": "1.1.15", "@radix-ui/react-label": "2.1.7", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-menubar": "1.1.16", "@radix-ui/react-navigation-menu": "1.2.14", "@radix-ui/react-one-time-password-field": "0.1.8", "@radix-ui/react-password-toggle-field": "0.1.3", "@radix-ui/react-popover": "1.1.15", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-progress": "1.1.7", "@radix-ui/react-radio-group": "1.3.8", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-scroll-area": "1.2.10", "@radix-ui/react-select": "2.2.6", "@radix-ui/react-separator": "1.1.7", "@radix-ui/react-slider": "1.3.6", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-switch": "1.2.6", "@radix-ui/react-tabs": "1.1.13", "@radix-ui/react-toast": "1.2.15", "@radix-ui/react-toggle": "1.1.10", "@radix-ui/react-toggle-group": "1.1.11", "@radix-ui/react-toolbar": "1.1.11", "@radix-ui/react-tooltip": "1.2.8", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-escape-keydown": "1.1.1", "@radix-ui/react-use-is-hydrated": "0.1.0", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA=="],
|
"radix-ui": ["radix-ui@1.6.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-accessible-icon": "1.1.15", "@radix-ui/react-accordion": "1.2.20", "@radix-ui/react-alert-dialog": "1.1.23", "@radix-ui/react-arrow": "1.1.15", "@radix-ui/react-aspect-ratio": "1.1.15", "@radix-ui/react-avatar": "1.2.6", "@radix-ui/react-checkbox": "1.3.11", "@radix-ui/react-collapsible": "1.1.20", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-context-menu": "2.3.7", "@radix-ui/react-dialog": "1.1.23", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-dropdown-menu": "2.1.24", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-form": "0.1.16", "@radix-ui/react-hover-card": "1.1.23", "@radix-ui/react-label": "2.1.15", "@radix-ui/react-menu": "2.1.24", "@radix-ui/react-menubar": "1.1.24", "@radix-ui/react-navigation-menu": "1.2.22", "@radix-ui/react-one-time-password-field": "0.1.16", "@radix-ui/react-password-toggle-field": "0.1.11", "@radix-ui/react-popover": "1.1.23", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-progress": "1.1.16", "@radix-ui/react-radio-group": "1.4.7", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-scroll-area": "1.2.18", "@radix-ui/react-select": "2.3.7", "@radix-ui/react-separator": "1.1.15", "@radix-ui/react-slider": "1.4.7", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-switch": "1.3.7", "@radix-ui/react-tabs": "1.1.21", "@radix-ui/react-toast": "1.2.23", "@radix-ui/react-toggle": "1.1.18", "@radix-ui/react-toggle-group": "1.1.19", "@radix-ui/react-toolbar": "1.1.19", "@radix-ui/react-tooltip": "1.2.16", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-effect-event": "0.0.5", "@radix-ui/react-use-escape-keydown": "1.1.5", "@radix-ui/react-use-is-hydrated": "0.1.3", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-size": "1.1.4", "@radix-ui/react-visually-hidden": "1.2.11" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-QBdhh1arIEUvPC0dQ5+nwWAxt7+N+oP/9jPwjJkGFoSk/sqxg32gJtSXGtFh8frAIcS6oC9cx2Q+7KYCQLOAeA=="],
|
||||||
|
|
||||||
"radix3": ["[email protected]", "", {}, "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA=="],
|
"radix3": ["[email protected]", "", {}, "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA=="],
|
||||||
|
|
||||||
@@ -2007,13 +2016,15 @@
|
|||||||
|
|
||||||
"react-dom": ["[email protected]", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="],
|
"react-dom": ["[email protected]", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="],
|
||||||
|
|
||||||
|
"react-error-boundary": ["[email protected]", "", { "peerDependencies": { "@types/react": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-GnSKpCohFi2nQmJCWwP8O8wub7zexlePvpsejvQr35vS5RTouS1+utTNOmyc540yw5vyOXnSL1rBWsCQDmkyUA=="],
|
||||||
|
|
||||||
"react-promise-suspense": ["[email protected]", "", { "dependencies": { "fast-deep-equal": "^2.0.1" } }, "sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ=="],
|
"react-promise-suspense": ["[email protected]", "", { "dependencies": { "fast-deep-equal": "^2.0.1" } }, "sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ=="],
|
||||||
|
|
||||||
"react-reconciler": ["[email protected]", "", { "dependencies": { "scheduler": "^0.25.0" }, "peerDependencies": { "react": "^19.0.0" } }, "sha512-7Ob7Z+URmesIsIVRjnLoDGwBEG/tVitidU0nMsqX/eeJaLY89RISO/10ERe0MqmzuKUUB1rmY+h1itMbUHg9BQ=="],
|
"react-reconciler": ["[email protected]", "", { "dependencies": { "scheduler": "^0.25.0" }, "peerDependencies": { "react": "^19.0.0" } }, "sha512-7Ob7Z+URmesIsIVRjnLoDGwBEG/tVitidU0nMsqX/eeJaLY89RISO/10ERe0MqmzuKUUB1rmY+h1itMbUHg9BQ=="],
|
||||||
|
|
||||||
"react-refresh": ["[email protected]", "", {}, "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ=="],
|
"react-refresh": ["[email protected]", "", {}, "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ=="],
|
||||||
|
|
||||||
"react-remove-scroll": ["[email protected].1", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA=="],
|
"react-remove-scroll": ["[email protected].2", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="],
|
||||||
|
|
||||||
"react-remove-scroll-bar": ["[email protected]", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="],
|
"react-remove-scroll-bar": ["[email protected]", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="],
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
{
|
{
|
||||||
"words": [
|
"words": [
|
||||||
|
"Debuff",
|
||||||
"gamemodes",
|
"gamemodes",
|
||||||
|
"Passability",
|
||||||
|
"Recoverkit",
|
||||||
|
"Repairkit",
|
||||||
|
"Respawns",
|
||||||
"Tankopedia"
|
"Tankopedia"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@blitzkit/i18n": "workspace:*",
|
"@blitzkit/i18n": "workspace:*",
|
||||||
|
"@blitzkit/protos": "workspace:*",
|
||||||
"@bufbuild/protobuf": "^2.9.0",
|
"@bufbuild/protobuf": "^2.9.0",
|
||||||
"@octokit/plugin-throttling": "^11.0.1",
|
"@octokit/plugin-throttling": "^11.0.1",
|
||||||
"@octokit/rest": "^22.0.0",
|
"@octokit/rest": "^22.0.0",
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
export async function fetchJSON<Type>(url: string) {
|
||||||
|
const response = await fetch(url);
|
||||||
|
const json = await response.json();
|
||||||
|
return json as Type;
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { MessageFns } from '../protos';
|
import type { MessageFns } from "@blitzkit/protos/src/blitzkit";
|
||||||
|
|
||||||
export async function fetchPB<Type>(url: string, message: MessageFns<Type>) {
|
export async function fetchPB<Type>(url: string, message: MessageFns<Type>) {
|
||||||
const response = await fetch(url);
|
const response = await fetch(url);
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
export * from "./fetchJSON";
|
||||||
|
export * from "./fetchPB";
|
||||||
@@ -1,5 +1,3 @@
|
|||||||
import { ShellDefinition, ShellType } from "../protos";
|
|
||||||
|
|
||||||
export function canSplash(
|
export function canSplash(
|
||||||
type: ShellDefinition["type"],
|
type: ShellDefinition["type"],
|
||||||
): type is ShellType.SHELL_TYPE_HE {
|
): type is ShellType.SHELL_TYPE_HE {
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
import { TankClass, TankType } from "../protos";
|
|
||||||
import type { BlitzStats } from "../statistics";
|
|
||||||
|
|
||||||
export const TANK_TYPES = [
|
|
||||||
TankType.TANK_TYPE_RESEARCHABLE,
|
|
||||||
TankType.TANK_TYPE_PREMIUM,
|
|
||||||
TankType.TANK_TYPE_COLLECTOR,
|
|
||||||
];
|
|
||||||
|
|
||||||
export const TANK_TYPE_COMMAND_NAMES = {
|
|
||||||
[TankType.TANK_TYPE_RESEARCHABLE]: "researchable",
|
|
||||||
[TankType.TANK_TYPE_PREMIUM]: "premium",
|
|
||||||
[TankType.TANK_TYPE_COLLECTOR]: "collector",
|
|
||||||
};
|
|
||||||
|
|
||||||
export const TANK_CLASSES = [
|
|
||||||
TankClass.TANK_CLASS_LIGHT,
|
|
||||||
TankClass.TANK_CLASS_MEDIUM,
|
|
||||||
TankClass.TANK_CLASS_HEAVY,
|
|
||||||
TankClass.TANK_CLASS_TANK_DESTROYER,
|
|
||||||
];
|
|
||||||
|
|
||||||
export const emptyAllStats: BlitzStats = {
|
|
||||||
battles: 0,
|
|
||||||
capture_points: 0,
|
|
||||||
damage_dealt: 0,
|
|
||||||
damage_received: 0,
|
|
||||||
dropped_capture_points: 0,
|
|
||||||
frags: 0,
|
|
||||||
frags8p: 0,
|
|
||||||
hits: 0,
|
|
||||||
losses: 0,
|
|
||||||
max_frags: 0,
|
|
||||||
max_xp: 0,
|
|
||||||
shots: 0,
|
|
||||||
spotted: 0,
|
|
||||||
survived_battles: 0,
|
|
||||||
xp: 0,
|
|
||||||
win_and_survived: 0,
|
|
||||||
wins: 0,
|
|
||||||
};
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
export * from "./canSplash";
|
export * from "./canSplash";
|
||||||
export * from "./clans";
|
export * from "./clans";
|
||||||
export * from "./classes";
|
export * from "./classes";
|
||||||
export * from "./constants";
|
|
||||||
export * from "./equipmentPrice";
|
export * from "./equipmentPrice";
|
||||||
export * from "./fetchBlitz";
|
export * from "./fetchBlitz";
|
||||||
export * from "./fetchGlossary";
|
export * from "./fetchGlossary";
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
import { Strings } from "@blitzkit/i18n";
|
||||||
|
import {
|
||||||
|
CamouflageDefinitions,
|
||||||
|
ConsumableDefinitions,
|
||||||
|
EquipmentDefinitions,
|
||||||
|
Gallery,
|
||||||
|
GameDefinitions,
|
||||||
|
MapDefinitions,
|
||||||
|
ModelDefinitions,
|
||||||
|
ProvisionDefinitions,
|
||||||
|
SkillDefinitions,
|
||||||
|
TankDefinitions,
|
||||||
|
} from "@blitzkit/protos";
|
||||||
|
import { BlitzScripts } from "../../types/blitzScripts";
|
||||||
|
|
||||||
|
export abstract class AbstractBlitzKitAPI {
|
||||||
|
abstract skills(): Promise<SkillDefinitions>;
|
||||||
|
abstract provisions(): Promise<ProvisionDefinitions>;
|
||||||
|
abstract consumables(): Promise<ConsumableDefinitions>;
|
||||||
|
abstract equipment(): Promise<EquipmentDefinitions>;
|
||||||
|
abstract maps(): Promise<MapDefinitions>;
|
||||||
|
abstract models(): Promise<ModelDefinitions>;
|
||||||
|
abstract camouflages(): Promise<CamouflageDefinitions>;
|
||||||
|
abstract tanks(): Promise<TankDefinitions>;
|
||||||
|
abstract game(): Promise<GameDefinitions>;
|
||||||
|
abstract gallery(): Promise<Gallery>;
|
||||||
|
abstract scripts(): Promise<BlitzScripts>;
|
||||||
|
|
||||||
|
abstract strings(locale: string): Promise<Strings>;
|
||||||
|
|
||||||
|
async tank(id: number) {
|
||||||
|
const tanks = await this.tanks();
|
||||||
|
return tanks.tanks[id];
|
||||||
|
}
|
||||||
|
|
||||||
|
async model(id: number) {
|
||||||
|
const models = await this.models();
|
||||||
|
return models.models[id];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
import {
|
|
||||||
CamouflageDefinitions,
|
|
||||||
ConsumableDefinitions,
|
|
||||||
EquipmentDefinitions,
|
|
||||||
Gallery,
|
|
||||||
GameDefinitions,
|
|
||||||
MapDefinitions,
|
|
||||||
ModelDefinitions,
|
|
||||||
ProvisionDefinitions,
|
|
||||||
SkillDefinitions,
|
|
||||||
TankDefinitions,
|
|
||||||
} from "@blitzkit/core";
|
|
||||||
|
|
||||||
export abstract class BlitzKitAPI {
|
|
||||||
abstract skillDefinitions(): Promise<SkillDefinitions>;
|
|
||||||
abstract provisionDefinitions(): Promise<ProvisionDefinitions>;
|
|
||||||
abstract consumableDefinitions(): Promise<ConsumableDefinitions>;
|
|
||||||
abstract equipmentDefinitions(): Promise<EquipmentDefinitions>;
|
|
||||||
abstract mapDefinitions(): Promise<MapDefinitions>;
|
|
||||||
abstract modelDefinitions(): Promise<ModelDefinitions>;
|
|
||||||
abstract camouflageDefinitions(): Promise<CamouflageDefinitions>;
|
|
||||||
abstract tankDefinitions(): Promise<TankDefinitions>;
|
|
||||||
abstract gameDefinitions(): Promise<GameDefinitions>;
|
|
||||||
abstract galleryDefinitions(): Promise<Gallery>;
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { alias } from "@blitzkit/core";
|
import { alias } from "@blitzkit/core";
|
||||||
import { fetchPB } from "../../protobuf";
|
import { Strings } from "@blitzkit/i18n";
|
||||||
import {
|
import {
|
||||||
CamouflageDefinitions,
|
CamouflageDefinitions,
|
||||||
ConsumableDefinitions,
|
ConsumableDefinitions,
|
||||||
@@ -11,59 +11,70 @@ import {
|
|||||||
ProvisionDefinitions,
|
ProvisionDefinitions,
|
||||||
SkillDefinitions,
|
SkillDefinitions,
|
||||||
TankDefinitions,
|
TankDefinitions,
|
||||||
} from "../../protos";
|
} from "@blitzkit/protos";
|
||||||
import { BlitzKitAPI } from "./base";
|
import { fetchPB } from "../../api";
|
||||||
|
import { fetchJSON } from "../../api/fetchJSON";
|
||||||
|
import { BlitzScripts } from "../../types/blitzScripts";
|
||||||
|
import { AbstractBlitzKitAPI } from "./abstract";
|
||||||
|
|
||||||
export class ClientBlitzKitAPI extends BlitzKitAPI {
|
export class ClientBlitzKitAPI extends AbstractBlitzKitAPI {
|
||||||
gameDefinitions() {
|
game() {
|
||||||
return fetchPB(alias("api", "/definitions/game.pb"), GameDefinitions);
|
return fetchPB(alias("api", "/definitions/game.pb"), GameDefinitions);
|
||||||
}
|
}
|
||||||
|
|
||||||
consumableDefinitions() {
|
consumables() {
|
||||||
return fetchPB(
|
return fetchPB(
|
||||||
alias("api", "/definitions/consumables.pb"),
|
alias("api", "/definitions/consumables.pb"),
|
||||||
ConsumableDefinitions,
|
ConsumableDefinitions,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
tankDefinitions() {
|
tanks() {
|
||||||
return fetchPB(alias("api", "/definitions/tanks.pb"), TankDefinitions);
|
return fetchPB(alias("api", "/definitions/tanks.pb"), TankDefinitions);
|
||||||
}
|
}
|
||||||
|
|
||||||
camouflageDefinitions() {
|
camouflages() {
|
||||||
return fetchPB(
|
return fetchPB(
|
||||||
alias("api", "/definitions/camouflage.pb"),
|
alias("api", "/definitions/camouflage.pb"),
|
||||||
CamouflageDefinitions,
|
CamouflageDefinitions,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
provisionDefinitions() {
|
provisions() {
|
||||||
return fetchPB(
|
return fetchPB(
|
||||||
alias("api", "/definitions/provisions.pb"),
|
alias("api", "/definitions/provisions.pb"),
|
||||||
ProvisionDefinitions,
|
ProvisionDefinitions,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
modelDefinitions() {
|
models() {
|
||||||
return fetchPB(alias("api", "/definitions/models.pb"), ModelDefinitions);
|
return fetchPB(alias("api", "/definitions/models.pb"), ModelDefinitions);
|
||||||
}
|
}
|
||||||
|
|
||||||
skillDefinitions() {
|
skills() {
|
||||||
return fetchPB(alias("api", "/definitions/skills.pb"), SkillDefinitions);
|
return fetchPB(alias("api", "/definitions/skills.pb"), SkillDefinitions);
|
||||||
}
|
}
|
||||||
|
|
||||||
equipmentDefinitions() {
|
equipment() {
|
||||||
return fetchPB(
|
return fetchPB(
|
||||||
alias("api", "/definitions/equipment.pb"),
|
alias("api", "/definitions/equipment.pb"),
|
||||||
EquipmentDefinitions,
|
EquipmentDefinitions,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
galleryDefinitions() {
|
gallery() {
|
||||||
return fetchPB(alias("api", "/definitions/gallery.pb"), Gallery);
|
return fetchPB(alias("api", "/definitions/gallery.pb"), Gallery);
|
||||||
}
|
}
|
||||||
|
|
||||||
mapDefinitions() {
|
maps() {
|
||||||
return fetchPB(alias("api", "/definitions/maps.pb"), MapDefinitions);
|
return fetchPB(alias("api", "/definitions/maps.pb"), MapDefinitions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scripts() {
|
||||||
|
return fetchJSON<BlitzScripts>(alias("api", "/definitions/scripts.json"));
|
||||||
|
}
|
||||||
|
|
||||||
|
strings(locale: string) {
|
||||||
|
return fetchJSON<Strings>(alias("api", `/strings/${locale}.json`));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import { AbstractBlitzKitAPI, AbstractVFS } from "@blitzkit/core";
|
||||||
|
|
||||||
|
export async function createDynamicAPI(vfs: () => Promise<AbstractVFS>) {
|
||||||
|
let _api: AbstractBlitzKitAPI;
|
||||||
|
|
||||||
|
if (import.meta.env.SSR) {
|
||||||
|
const { ServerBlitzKitAPI } = await import(
|
||||||
|
"@blitzkit/core/src/blitzkit/api/server/index"
|
||||||
|
);
|
||||||
|
|
||||||
|
_api = await new ServerBlitzKitAPI(await vfs()).init();
|
||||||
|
} else {
|
||||||
|
const { ClientBlitzKitAPI } = await import(
|
||||||
|
"@blitzkit/core/src/blitzkit/api/client"
|
||||||
|
);
|
||||||
|
|
||||||
|
_api = new ClientBlitzKitAPI();
|
||||||
|
}
|
||||||
|
|
||||||
|
return _api;
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
export * from "./abstract";
|
||||||
|
export * from "./client";
|
||||||
|
export * from "./dynamic";
|
||||||
|
export * from "./server";
|
||||||
@@ -8,30 +8,34 @@ import {
|
|||||||
CamouflagesYaml,
|
CamouflagesYaml,
|
||||||
CombatRolesYaml,
|
CombatRolesYaml,
|
||||||
ConsumablesCommon,
|
ConsumablesCommon,
|
||||||
ConsumableTankCategoryFilterCategory,
|
|
||||||
CrewType,
|
|
||||||
I18nString,
|
|
||||||
MapsYaml,
|
MapsYaml,
|
||||||
ModuleType,
|
|
||||||
OptionalDevices,
|
OptionalDevices,
|
||||||
OptionalDeviceSlots,
|
OptionalDeviceSlots,
|
||||||
ProvisionsCommon,
|
ProvisionsCommon,
|
||||||
ShellKind,
|
ShellKind,
|
||||||
ShellType,
|
|
||||||
SquadBattleTypeStylesYaml,
|
SquadBattleTypeStylesYaml,
|
||||||
TankClass,
|
|
||||||
TankmenAvatar,
|
TankmenAvatar,
|
||||||
toUniqueId,
|
toUniqueId,
|
||||||
VehicleDefinitionList,
|
VehicleDefinitionList,
|
||||||
} from "@blitzkit/core";
|
} from "@blitzkit/core";
|
||||||
import { AbstractVFS } from "@blitzkit/core/src/blitzkit/vfs/abstract";
|
import { AbstractVFS } from "@blitzkit/core/src/blitzkit/vfs/abstract";
|
||||||
import { SUPPORTED_LOCALE_BLITZ_MAP } from "@blitzkit/i18n";
|
|
||||||
import locales from "@blitzkit/i18n/locales.json";
|
import locales from "@blitzkit/i18n/locales.json";
|
||||||
|
import {
|
||||||
|
ConsumableTankCategoryFilterCategory,
|
||||||
|
CrewType,
|
||||||
|
I18nString,
|
||||||
|
ModuleType,
|
||||||
|
ShellType,
|
||||||
|
TankClass,
|
||||||
|
} from "@blitzkit/protos";
|
||||||
|
import type { extname, parse } from "node:path";
|
||||||
import { parse as parseYaml } from "yaml";
|
import { parse as parseYaml } from "yaml";
|
||||||
import { BlitzKitAPI } from "../base";
|
import { AbstractBlitzKitAPI } from "../abstract";
|
||||||
|
|
||||||
export abstract class ServerBlitzKitAPI0 extends BlitzKitAPI {
|
export abstract class ServerBlitzKitAPI0 extends AbstractBlitzKitAPI {
|
||||||
protected vfs: AbstractVFS;
|
protected vfs: AbstractVFS;
|
||||||
|
protected parsePath?: typeof parse;
|
||||||
|
protected extname?: typeof extname;
|
||||||
|
|
||||||
protected nationSlugDiscriminators = {
|
protected nationSlugDiscriminators = {
|
||||||
china: "cn",
|
china: "cn",
|
||||||
@@ -109,11 +113,18 @@ export abstract class ServerBlitzKitAPI0 extends BlitzKitAPI {
|
|||||||
|
|
||||||
constructor(vfs: AbstractVFS) {
|
constructor(vfs: AbstractVFS) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.vfs = vfs;
|
this.vfs = vfs;
|
||||||
}
|
}
|
||||||
|
|
||||||
async init() {
|
async init() {
|
||||||
console.log("Initializing virtual file system...");
|
console.log("Initializing virtual file system...");
|
||||||
|
|
||||||
|
const path = await import("node:path");
|
||||||
|
|
||||||
|
this.extname = path.extname;
|
||||||
|
this.parsePath = path.parse;
|
||||||
|
|
||||||
await this.vfs.init();
|
await this.vfs.init();
|
||||||
|
|
||||||
console.log("Fetching game data...");
|
console.log("Fetching game data...");
|
||||||
@@ -161,8 +172,8 @@ export abstract class ServerBlitzKitAPI0 extends BlitzKitAPI {
|
|||||||
|
|
||||||
let fetchedLocalizations = 0;
|
let fetchedLocalizations = 0;
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
locales.supported.map(async ({ locale }) => {
|
locales.supported.map(async (locale) => {
|
||||||
const blitzLocale = SUPPORTED_LOCALE_BLITZ_MAP[locale];
|
const blitzLocale = locale.variant_blitz_cdn ?? locale.locale;
|
||||||
const cache = await fetch(
|
const cache = await fetch(
|
||||||
`https://stufficons.wgcdn.co/localizations/${blitzLocale}.yaml`,
|
`https://stufficons.wgcdn.co/localizations/${blitzLocale}.yaml`,
|
||||||
)
|
)
|
||||||
@@ -172,7 +183,7 @@ export abstract class ServerBlitzKitAPI0 extends BlitzKitAPI {
|
|||||||
`Data/Strings/${blitzLocale}.yaml`,
|
`Data/Strings/${blitzLocale}.yaml`,
|
||||||
);
|
);
|
||||||
|
|
||||||
this.stringsI18n[locale] = {
|
this.stringsI18n[locale.locale] = {
|
||||||
...cache,
|
...cache,
|
||||||
...preInstalled,
|
...preInstalled,
|
||||||
};
|
};
|
||||||
|
|||||||
+6
-6
@@ -1,18 +1,18 @@
|
|||||||
import { Avatar, fetchGlossary, Gallery } from "@blitzkit/core";
|
import { fetchGlossary } from "@blitzkit/core";
|
||||||
import locales from "@blitzkit/i18n/locales.json";
|
import locales from "@blitzkit/i18n/locales.json";
|
||||||
import { extname } from "path";
|
import { Avatar, Gallery } from "@blitzkit/protos";
|
||||||
import { Cache } from "./0_base";
|
import { Cache } from "./0_base";
|
||||||
import { ServerBlitzKitAPI9 } from "./9_gameDefinitions";
|
import { ServerBlitzKitAPI9 } from "./9_game";
|
||||||
|
|
||||||
export abstract class ServerBlitzKitAPI10 extends ServerBlitzKitAPI9 {
|
export abstract class ServerBlitzKitAPI10 extends ServerBlitzKitAPI9 {
|
||||||
@Cache()
|
@Cache()
|
||||||
async galleryDefinitions() {
|
async gallery() {
|
||||||
const avatars: Record<string, { avatar: Avatar; url: string }> = {};
|
const avatars: Record<string, { avatar: Avatar; url: string }> = {};
|
||||||
|
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
locales.supported.map(async (supported) => {
|
locales.supported.map(async (supported) => {
|
||||||
const glossary = await fetchGlossary(
|
const glossary = await fetchGlossary(
|
||||||
supported.blitz ?? supported.locale,
|
supported.variant_blitz_local ?? supported.locale,
|
||||||
);
|
);
|
||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
@@ -34,7 +34,7 @@ export abstract class ServerBlitzKitAPI10 extends ServerBlitzKitAPI9 {
|
|||||||
avatars[key].avatar.name!.locales[supported.locale] =
|
avatars[key].avatar.name!.locales[supported.locale] =
|
||||||
glossaryEntry.title;
|
glossaryEntry.title;
|
||||||
} else {
|
} else {
|
||||||
const extension = extname(glossaryEntry.image_url);
|
const extension = this.extname!(glossaryEntry.image_url);
|
||||||
|
|
||||||
avatars[key] = {
|
avatars[key] = {
|
||||||
url: glossaryEntry.image_url,
|
url: glossaryEntry.image_url,
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
import { ConsumablesCommon, OptionalDevices } from "../../../types";
|
||||||
|
import { BlitzScripts } from "../../../types/blitzScripts";
|
||||||
|
import { AbstractVFS } from "../../vfs";
|
||||||
|
import { Cache } from "./0_base";
|
||||||
|
import { ServerBlitzKitAPI10 } from "./10_avatars";
|
||||||
|
|
||||||
|
export abstract class ServerBlitzKitAPI11 extends ServerBlitzKitAPI10 {
|
||||||
|
@Cache()
|
||||||
|
async scripts() {
|
||||||
|
const scripts: BlitzScripts = {
|
||||||
|
consumables: {},
|
||||||
|
equipment: {},
|
||||||
|
provisions: {},
|
||||||
|
};
|
||||||
|
|
||||||
|
const optionalDevices = await this.vfs.xml<{
|
||||||
|
root: OptionalDevices;
|
||||||
|
}>("Data/XML/item_defs/vehicles/common/optional_devices.xml");
|
||||||
|
|
||||||
|
for (const key in optionalDevices.root) {
|
||||||
|
const equipment = optionalDevices.root[key];
|
||||||
|
scripts.equipment[equipment.id] = equipment.script;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function assign(
|
||||||
|
vfs: AbstractVFS,
|
||||||
|
dir: string,
|
||||||
|
target: keyof BlitzScripts,
|
||||||
|
) {
|
||||||
|
const root = `Data/XML/item_defs/vehicles/common/${dir}`;
|
||||||
|
const list = await vfs.text(`${root}/list.xml`);
|
||||||
|
const pattern = /<items path="(\w+)\.xml"\/>/gm;
|
||||||
|
|
||||||
|
for (const match of list.matchAll(pattern)) {
|
||||||
|
const group = match[1];
|
||||||
|
const path = `${root}/${group}.xml`;
|
||||||
|
const things = await vfs.xml<{ root: ConsumablesCommon }>(path);
|
||||||
|
|
||||||
|
for (const key in things.root) {
|
||||||
|
const thing = things.root[key];
|
||||||
|
scripts[target][thing.id] = things.root[key].script;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await assign(this.vfs, "consumables", "consumables");
|
||||||
|
await assign(this.vfs, "provisions", "provisions");
|
||||||
|
|
||||||
|
return scripts;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
import { Strings } from "@blitzkit/i18n";
|
||||||
|
import locales from "@blitzkit/i18n/locales.json";
|
||||||
|
import { DeepPartial } from "@blitzkit/protos";
|
||||||
|
import { merge } from "lodash-es";
|
||||||
|
import { Cache } from "./0_base";
|
||||||
|
import { ServerBlitzKitAPI11 } from "./11_scripts";
|
||||||
|
|
||||||
|
const globbedStrings = import.meta.glob("../../../../../i18n/strings/*.json", {
|
||||||
|
import: "default",
|
||||||
|
});
|
||||||
|
|
||||||
|
export abstract class ServerBlitzKitAPI12 extends ServerBlitzKitAPI11 {
|
||||||
|
@Cache()
|
||||||
|
async strings(locale: string) {
|
||||||
|
const localized = (await globbedStrings[
|
||||||
|
`../../../../../i18n/strings/${locale}.json`
|
||||||
|
]()) as DeepPartial<Strings>;
|
||||||
|
const defaults = (await globbedStrings[
|
||||||
|
`../../../../../i18n/strings/${locales.default}.json`
|
||||||
|
]()) as Strings;
|
||||||
|
const strings = merge({}, defaults, localized);
|
||||||
|
|
||||||
|
return strings;
|
||||||
|
}
|
||||||
|
}
|
||||||
+14
-12
@@ -1,30 +1,32 @@
|
|||||||
import {
|
import {
|
||||||
AssaultRanges,
|
|
||||||
BlitzCrewType,
|
BlitzCrewType,
|
||||||
BlitzModuleType,
|
BlitzModuleType,
|
||||||
BlitzTankClass,
|
BlitzTankClass,
|
||||||
ChassisDefinitionsList,
|
ChassisDefinitionsList,
|
||||||
Crew,
|
|
||||||
EngineDefinitionsList,
|
EngineDefinitionsList,
|
||||||
Equalizer,
|
|
||||||
GunDefinition,
|
|
||||||
GunDefinitionsList,
|
GunDefinitionsList,
|
||||||
ModuleType,
|
|
||||||
ResearchCost,
|
|
||||||
ShellDefinitionsList,
|
ShellDefinitionsList,
|
||||||
ShellKind,
|
ShellKind,
|
||||||
sluggify,
|
sluggify,
|
||||||
TankDefinitions,
|
|
||||||
TankPrice,
|
|
||||||
TankPriceType,
|
|
||||||
TankType,
|
|
||||||
toUniqueId,
|
toUniqueId,
|
||||||
TurretDefinitionsList,
|
TurretDefinitionsList,
|
||||||
Unlock,
|
|
||||||
UnlocksListing,
|
UnlocksListing,
|
||||||
VehicleDefinitionList,
|
VehicleDefinitionList,
|
||||||
VehicleDefinitions,
|
VehicleDefinitions,
|
||||||
} from "@blitzkit/core";
|
} from "@blitzkit/core";
|
||||||
|
import {
|
||||||
|
AssaultRanges,
|
||||||
|
Crew,
|
||||||
|
Equalizer,
|
||||||
|
GunDefinition,
|
||||||
|
ModuleType,
|
||||||
|
ResearchCost,
|
||||||
|
TankDefinitions,
|
||||||
|
TankPrice,
|
||||||
|
TankPriceType,
|
||||||
|
TankType,
|
||||||
|
Unlock,
|
||||||
|
} from "@blitzkit/protos";
|
||||||
import { Cache, ServerBlitzKitAPI0 } from "./0_base";
|
import { Cache, ServerBlitzKitAPI0 } from "./0_base";
|
||||||
|
|
||||||
export abstract class ServerBlitzKitAPI1 extends ServerBlitzKitAPI0 {
|
export abstract class ServerBlitzKitAPI1 extends ServerBlitzKitAPI0 {
|
||||||
@@ -47,7 +49,7 @@ export abstract class ServerBlitzKitAPI1 extends ServerBlitzKitAPI0 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Cache()
|
@Cache()
|
||||||
async tankDefinitions() {
|
async tanks() {
|
||||||
const tankDefinitions = TankDefinitions.create();
|
const tankDefinitions = TankDefinitions.create();
|
||||||
|
|
||||||
const gameModeNativeNames: Record<string, string> = {};
|
const gameModeNativeNames: Record<string, string> = {};
|
||||||
+3
-3
@@ -1,10 +1,10 @@
|
|||||||
import { CamouflageDefinitions } from "@blitzkit/core";
|
import { CamouflageDefinitions } from "@blitzkit/protos";
|
||||||
import { Cache } from "./0_base";
|
import { Cache } from "./0_base";
|
||||||
import { ServerBlitzKitAPI1 } from "./1_tankDefinitions";
|
import { ServerBlitzKitAPI1 } from "./1_tanks";
|
||||||
|
|
||||||
export abstract class ServerBlitzKitAPI2 extends ServerBlitzKitAPI1 {
|
export abstract class ServerBlitzKitAPI2 extends ServerBlitzKitAPI1 {
|
||||||
@Cache()
|
@Cache()
|
||||||
async camouflageDefinitions() {
|
async camouflages() {
|
||||||
const camouflageDefinitions = CamouflageDefinitions.create();
|
const camouflageDefinitions = CamouflageDefinitions.create();
|
||||||
|
|
||||||
for (const camoKey in this.camouflagesXml!.root.camouflages) {
|
for (const camoKey in this.camouflagesXml!.root.camouflages) {
|
||||||
+12
-17
@@ -1,24 +1,19 @@
|
|||||||
import {
|
import {
|
||||||
Armor,
|
|
||||||
BlitzCrewType,
|
BlitzCrewType,
|
||||||
ChassisDefinitionsList,
|
ChassisDefinitionsList,
|
||||||
Crew,
|
|
||||||
EngineDefinitionsList,
|
EngineDefinitionsList,
|
||||||
GunDefinitionsList,
|
GunDefinitionsList,
|
||||||
ModelDefinitions,
|
|
||||||
ResearchCost,
|
|
||||||
TankParameters,
|
TankParameters,
|
||||||
toUniqueId,
|
toUniqueId,
|
||||||
TurretDefinitionsList,
|
TurretDefinitionsList,
|
||||||
Vector3,
|
|
||||||
VehicleDefinitionArmor,
|
VehicleDefinitionArmor,
|
||||||
VehicleDefinitionList,
|
VehicleDefinitionList,
|
||||||
VehicleDefinitions,
|
VehicleDefinitions,
|
||||||
} from "@blitzkit/core";
|
} from "@blitzkit/core";
|
||||||
import { Cache } from "./0_base";
|
import { Armor, Crew, ModelDefinitions, Vector3 } from "@blitzkit/protos";
|
||||||
import { ServerBlitzKitAPI2 } from "./2_camouflageDefinitions";
|
|
||||||
import { parse as parsePath } from "path";
|
|
||||||
import { Vector3Tuple } from "three";
|
import { Vector3Tuple } from "three";
|
||||||
|
import { Cache } from "./0_base";
|
||||||
|
import { ServerBlitzKitAPI2 } from "./2_camouflages";
|
||||||
|
|
||||||
export abstract class ServerBlitzKitAPI3 extends ServerBlitzKitAPI2 {
|
export abstract class ServerBlitzKitAPI3 extends ServerBlitzKitAPI2 {
|
||||||
private vector3TupleToBlitzkit(tuple: Vector3Tuple) {
|
private vector3TupleToBlitzkit(tuple: Vector3Tuple) {
|
||||||
@@ -42,7 +37,7 @@ export abstract class ServerBlitzKitAPI3 extends ServerBlitzKitAPI2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Cache()
|
@Cache()
|
||||||
async modelDefinitions() {
|
async models() {
|
||||||
const modelDefinitions = ModelDefinitions.create();
|
const modelDefinitions = ModelDefinitions.create();
|
||||||
|
|
||||||
for (const nation of this.nationsDir!) {
|
for (const nation of this.nationsDir!) {
|
||||||
@@ -65,10 +60,6 @@ export abstract class ServerBlitzKitAPI3 extends ServerBlitzKitAPI2 {
|
|||||||
for (const tankKey in tankList.root) {
|
for (const tankKey in tankList.root) {
|
||||||
if (this.botPattern.test(tankKey)) continue;
|
if (this.botPattern.test(tankKey)) continue;
|
||||||
|
|
||||||
const gunXps = new Map<number, ResearchCost>();
|
|
||||||
const turretXps = new Map<number, ResearchCost>();
|
|
||||||
const engineXps = new Map<number, ResearchCost>();
|
|
||||||
const trackXps = new Map<number, ResearchCost>();
|
|
||||||
const tank = tankList.root[tankKey];
|
const tank = tankList.root[tankKey];
|
||||||
const tankDefinition = await this.vfs.xml<{ root: VehicleDefinitions }>(
|
const tankDefinition = await this.vfs.xml<{ root: VehicleDefinitions }>(
|
||||||
`Data/XML/item_defs/vehicles/${nation}/${tankKey}.xml`,
|
`Data/XML/item_defs/vehicles/${nation}/${tankKey}.xml`,
|
||||||
@@ -181,7 +172,7 @@ export abstract class ServerBlitzKitAPI3 extends ServerBlitzKitAPI2 {
|
|||||||
Object.keys(tankDefinition.root.turrets0).forEach((turretKey) => {
|
Object.keys(tankDefinition.root.turrets0).forEach((turretKey) => {
|
||||||
const turret = tankDefinition.root.turrets0[turretKey];
|
const turret = tankDefinition.root.turrets0[turretKey];
|
||||||
const turretModel = Number(
|
const turretModel = Number(
|
||||||
parsePath(turret.models.undamaged).name.split("_")[1],
|
this.parsePath!(turret.models.undamaged).name.split("_")[1],
|
||||||
);
|
);
|
||||||
const turretId = toUniqueId(nation, turretList.root.ids[turretKey]);
|
const turretId = toUniqueId(nation, turretList.root.ids[turretKey]);
|
||||||
const turretYaw = (
|
const turretYaw = (
|
||||||
@@ -229,12 +220,16 @@ export abstract class ServerBlitzKitAPI3 extends ServerBlitzKitAPI2 {
|
|||||||
bounding_box: {
|
bounding_box: {
|
||||||
min: this.vector3TupleToBlitzkit(
|
min: this.vector3TupleToBlitzkit(
|
||||||
tankParameters.collision[
|
tankParameters.collision[
|
||||||
parsePath(turret.hitTester.collisionModel).name.toLowerCase()
|
this.parsePath!(
|
||||||
|
turret.hitTester.collisionModel,
|
||||||
|
).name.toLowerCase()
|
||||||
].bbox.min,
|
].bbox.min,
|
||||||
),
|
),
|
||||||
max: this.vector3TupleToBlitzkit(
|
max: this.vector3TupleToBlitzkit(
|
||||||
tankParameters.collision[
|
tankParameters.collision[
|
||||||
parsePath(turret.hitTester.collisionModel).name.toLowerCase()
|
this.parsePath!(
|
||||||
|
turret.hitTester.collisionModel,
|
||||||
|
).name.toLowerCase()
|
||||||
].bbox.max,
|
].bbox.max,
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
@@ -253,7 +248,7 @@ export abstract class ServerBlitzKitAPI3 extends ServerBlitzKitAPI2 {
|
|||||||
.split(" ")
|
.split(" ")
|
||||||
.map(Number) as [number, number];
|
.map(Number) as [number, number];
|
||||||
const gunModel = Number(
|
const gunModel = Number(
|
||||||
parsePath(gun.models.undamaged).name.split("_")[1],
|
this.parsePath!(gun.models.undamaged).name.split("_")[1],
|
||||||
);
|
);
|
||||||
const front = gun.extraPitchLimits?.front
|
const front = gun.extraPitchLimits?.front
|
||||||
? gun.extraPitchLimits.front.split(" ").map(Number)
|
? gun.extraPitchLimits.front.split(" ").map(Number)
|
||||||
+2
-2
@@ -1,10 +1,10 @@
|
|||||||
import { MapDefinitions } from "@blitzkit/core";
|
import { MapDefinitions } from "@blitzkit/core";
|
||||||
import { Cache } from "./0_base";
|
import { Cache } from "./0_base";
|
||||||
import { ServerBlitzKitAPI3 } from "./3_modelDefinitions";
|
import { ServerBlitzKitAPI3 } from "./3_models";
|
||||||
|
|
||||||
export abstract class ServerBlitzKitAPI4 extends ServerBlitzKitAPI3 {
|
export abstract class ServerBlitzKitAPI4 extends ServerBlitzKitAPI3 {
|
||||||
@Cache()
|
@Cache()
|
||||||
async mapDefinitions() {
|
async maps() {
|
||||||
const mapDefinitions = MapDefinitions.create();
|
const mapDefinitions = MapDefinitions.create();
|
||||||
|
|
||||||
for (const key in this.mapsYaml!.maps) {
|
for (const key in this.mapsYaml!.maps) {
|
||||||
+3
-3
@@ -1,10 +1,10 @@
|
|||||||
import { EquipmentDefinitions, EquipmentSlot } from "@blitzkit/core";
|
import { EquipmentDefinitions, EquipmentSlot } from "@blitzkit/protos";
|
||||||
import { Cache } from "./0_base";
|
import { Cache } from "./0_base";
|
||||||
import { ServerBlitzKitAPI4 } from "./4_mapDefinitions";
|
import { ServerBlitzKitAPI4 } from "./4_maps";
|
||||||
|
|
||||||
export abstract class ServerBlitzKitAPI5 extends ServerBlitzKitAPI4 {
|
export abstract class ServerBlitzKitAPI5 extends ServerBlitzKitAPI4 {
|
||||||
@Cache()
|
@Cache()
|
||||||
async equipmentDefinitions() {
|
async equipment() {
|
||||||
const equipmentDefinitions = EquipmentDefinitions.create();
|
const equipmentDefinitions = EquipmentDefinitions.create();
|
||||||
|
|
||||||
Object.entries(this.optionalDevices!.root).forEach(
|
Object.entries(this.optionalDevices!.root).forEach(
|
||||||
+5
-10
@@ -1,22 +1,17 @@
|
|||||||
import {
|
import { BlitzTankFilterDefinitionCategory } from "@blitzkit/core";
|
||||||
BlitzTankFilterDefinitionCategory,
|
import { Consumable, ConsumableDefinitions } from "@blitzkit/protos";
|
||||||
Consumable,
|
|
||||||
ConsumableDefinitions,
|
|
||||||
} from "@blitzkit/core";
|
|
||||||
import { Cache } from "./0_base";
|
import { Cache } from "./0_base";
|
||||||
import { ServerBlitzKitAPI5 } from "./5_equipmentDefinitions";
|
import { ServerBlitzKitAPI5 } from "./5_equipments";
|
||||||
|
|
||||||
export abstract class ServerBlitzKitAPI6 extends ServerBlitzKitAPI5 {
|
export abstract class ServerBlitzKitAPI6 extends ServerBlitzKitAPI5 {
|
||||||
@Cache()
|
@Cache()
|
||||||
async consumableDefinitions() {
|
async consumables() {
|
||||||
const consumableDefinitions = ConsumableDefinitions.create();
|
const consumableDefinitions = ConsumableDefinitions.create();
|
||||||
|
|
||||||
Object.entries(this.consumablesCommon).forEach(([key, consumable]) => {
|
Object.entries(this.consumablesCommon).forEach(([, consumable]) => {
|
||||||
const entry: Consumable = {
|
const entry: Consumable = {
|
||||||
id: consumable.id,
|
id: consumable.id,
|
||||||
game_mode_exclusive: "gameModeFilter" in consumable,
|
game_mode_exclusive: "gameModeFilter" in consumable,
|
||||||
cooldown: consumable.script.cooldown,
|
|
||||||
duration: consumable.script.duration,
|
|
||||||
name: this.getString(consumable.userString),
|
name: this.getString(consumable.userString),
|
||||||
exclude: [],
|
exclude: [],
|
||||||
include: [],
|
include: [],
|
||||||
+6
-14
@@ -1,24 +1,21 @@
|
|||||||
import {
|
import { BlitzTankFilterDefinitionCategory } from "@blitzkit/core";
|
||||||
BlitzTankFilterDefinitionCategory,
|
import { Provision, ProvisionDefinitions } from "@blitzkit/protos";
|
||||||
Provision,
|
|
||||||
ProvisionDefinitions,
|
|
||||||
} from "@blitzkit/core";
|
|
||||||
import { Cache } from "./0_base";
|
import { Cache } from "./0_base";
|
||||||
import { ServerBlitzKitAPI6 } from "./6_consumableDefinitions";
|
import { ServerBlitzKitAPI6 } from "./6_consumables";
|
||||||
|
|
||||||
export abstract class ServerBlitzKitAPI7 extends ServerBlitzKitAPI6 {
|
export abstract class ServerBlitzKitAPI7 extends ServerBlitzKitAPI6 {
|
||||||
@Cache()
|
@Cache()
|
||||||
async provisionDefinitions() {
|
async provisions() {
|
||||||
const provisionDefinitions = ProvisionDefinitions.create();
|
const provisionDefinitions = ProvisionDefinitions.create();
|
||||||
|
|
||||||
Object.entries(this.provisionsCommon).forEach(([, provision]) => {
|
Object.entries(this.provisionsCommon).forEach(([, provision]) => {
|
||||||
const entry: Provision = {
|
const entry = Provision.create({
|
||||||
id: provision.id,
|
id: provision.id,
|
||||||
exclude: [],
|
exclude: [],
|
||||||
include: [],
|
include: [],
|
||||||
game_mode_exclusive: "gameModeFilter" in provision,
|
game_mode_exclusive: "gameModeFilter" in provision,
|
||||||
name: this.getString(provision.userString),
|
name: this.getString(provision.userString),
|
||||||
};
|
});
|
||||||
provisionDefinitions.provisions[provision.id] = entry;
|
provisionDefinitions.provisions[provision.id] = entry;
|
||||||
|
|
||||||
const includeRaw = provision.vehicleFilter?.include.vehicle;
|
const includeRaw = provision.vehicleFilter?.include.vehicle;
|
||||||
@@ -105,11 +102,6 @@ export abstract class ServerBlitzKitAPI7 extends ServerBlitzKitAPI6 {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (provision.script.bonusValues?.crewLevelIncrease !== undefined) {
|
|
||||||
provisionDefinitions.provisions[provision.id].crew =
|
|
||||||
provision.script.bonusValues?.crewLevelIncrease;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return provisionDefinitions;
|
return provisionDefinitions;
|
||||||
+4
-3
@@ -1,11 +1,12 @@
|
|||||||
import { BlitzTankClass, SkillDefinitions } from "@blitzkit/core";
|
import { BlitzTankClass } from "@blitzkit/core";
|
||||||
|
|
||||||
|
import { SkillDefinitions } from "@blitzkit/protos";
|
||||||
import { Cache } from "./0_base";
|
import { Cache } from "./0_base";
|
||||||
import { ServerBlitzKitAPI7 } from "./7_provisionDefinitions";
|
import { ServerBlitzKitAPI7 } from "./7_provisions";
|
||||||
|
|
||||||
export abstract class ServerBlitzKitAPI8 extends ServerBlitzKitAPI7 {
|
export abstract class ServerBlitzKitAPI8 extends ServerBlitzKitAPI7 {
|
||||||
@Cache()
|
@Cache()
|
||||||
async skillDefinitions() {
|
async skills() {
|
||||||
const skillDefinitions = SkillDefinitions.create();
|
const skillDefinitions = SkillDefinitions.create();
|
||||||
|
|
||||||
for (const tankClass in this.tankmenAvatar!.root.skillsByClasses) {
|
for (const tankClass in this.tankmenAvatar!.root.skillsByClasses) {
|
||||||
+4
-3
@@ -1,11 +1,12 @@
|
|||||||
import { AvailableNationsYaml, GameDefinitions } from "@blitzkit/core";
|
import { AvailableNationsYaml } from "@blitzkit/core";
|
||||||
|
|
||||||
|
import { GameDefinitions } from "@blitzkit/protos";
|
||||||
import { Cache } from "./0_base";
|
import { Cache } from "./0_base";
|
||||||
import { ServerBlitzKitAPI8 } from "./8_skillDefinitions";
|
import { ServerBlitzKitAPI8 } from "./8_skills";
|
||||||
|
|
||||||
export abstract class ServerBlitzKitAPI9 extends ServerBlitzKitAPI8 {
|
export abstract class ServerBlitzKitAPI9 extends ServerBlitzKitAPI8 {
|
||||||
@Cache()
|
@Cache()
|
||||||
async gameDefinitions() {
|
async game() {
|
||||||
const gameDefinitions = GameDefinitions.create();
|
const gameDefinitions = GameDefinitions.create();
|
||||||
|
|
||||||
const consumableNativeNames: Record<string, number> = {};
|
const consumableNativeNames: Record<string, number> = {};
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
import { ServerBlitzKitAPI10 } from "@blitzkit/core/src/blitzkit/api/server/10_galleryDefinitions";
|
import { ServerBlitzKitAPI12 } from "./12_strings";
|
||||||
|
|
||||||
export class ServerBlitzKitAPI extends ServerBlitzKitAPI10 {}
|
export class ServerBlitzKitAPI extends ServerBlitzKitAPI12 {}
|
||||||
@@ -1,12 +1,16 @@
|
|||||||
import { GunDefinition, ProvisionDefinitions, TankDefinition } from "../protos";
|
import {
|
||||||
import { checkConsumableProvisionInclusivity } from "./checkConsumableProvisionInclusivity";
|
GunDefinition,
|
||||||
|
ProvisionDefinitions,
|
||||||
|
TankDefinition,
|
||||||
|
} from "../../../protos/src/blitzkit";
|
||||||
|
import { isTankCompatible } from "../tankopedia";
|
||||||
|
|
||||||
export function availableProvisions(
|
export function availableProvisions(
|
||||||
tank: TankDefinition,
|
tank: TankDefinition,
|
||||||
gun: GunDefinition,
|
gun: GunDefinition,
|
||||||
provisionDefinitions: ProvisionDefinitions
|
provisionDefinitions: ProvisionDefinitions,
|
||||||
) {
|
) {
|
||||||
return Object.values(provisionDefinitions.provisions).filter((provision) =>
|
return Object.values(provisionDefinitions.provisions).filter((provision) =>
|
||||||
checkConsumableProvisionInclusivity(provision, tank, gun)
|
isTankCompatible(tank, gun, provision.include, provision.exclude),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
import { emptyAllStats } from '../../blitz/constants';
|
|
||||||
import { Samples } from '../../protos';
|
|
||||||
import type { BlitzkitStats } from '../../statistics';
|
|
||||||
|
|
||||||
export const emptyAverageDefinitionsAllStats: BlitzkitStats = {
|
|
||||||
...emptyAllStats,
|
|
||||||
battle_life_time: 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
export const averageDefinitionsAllStatsKeys = Object.keys(
|
|
||||||
emptyAverageDefinitionsAllStats,
|
|
||||||
) as (keyof BlitzkitStats)[];
|
|
||||||
|
|
||||||
export const emptySamples: Samples = {
|
|
||||||
d_1: 0,
|
|
||||||
d_7: 0,
|
|
||||||
d_30: 0,
|
|
||||||
d_60: 0,
|
|
||||||
d_90: 0,
|
|
||||||
d_120: 0,
|
|
||||||
total: 0,
|
|
||||||
};
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
import { staticAsset } from "@blitzkit/core";
|
|
||||||
import { fetchPB } from "../../protobuf";
|
|
||||||
import { AverageDefinitions } from "../../protos";
|
|
||||||
|
|
||||||
export interface AverageDefinitionsManifest {
|
|
||||||
version: 1;
|
|
||||||
/**
|
|
||||||
* epoch in days
|
|
||||||
*/
|
|
||||||
latest: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function fetchAverageDefinitions() {
|
|
||||||
return await fetchPB(staticAsset("averages.pb"), AverageDefinitions);
|
|
||||||
}
|
|
||||||
|
|
||||||
export * from "./constants";
|
|
||||||
@@ -1,5 +1,10 @@
|
|||||||
import { GunDefinition, ProvisionDefinitions, TankDefinition } from '../protos';
|
import {
|
||||||
import { availableProvisions } from './availableProvisions';
|
GunDefinition,
|
||||||
|
ProvisionDefinitions,
|
||||||
|
TankDefinition,
|
||||||
|
} from "@blitzkit/protos";
|
||||||
|
import { BlitzScripts } from "../types/blitzScripts";
|
||||||
|
import { availableProvisions } from "./availableProvisions";
|
||||||
|
|
||||||
const PROVISION_PREFERENCES = [
|
const PROVISION_PREFERENCES = [
|
||||||
19, // improved fuel
|
19, // improved fuel
|
||||||
@@ -14,9 +19,10 @@ function infinityFallback(value: number) {
|
|||||||
export function createDefaultProvisions(
|
export function createDefaultProvisions(
|
||||||
tank: TankDefinition,
|
tank: TankDefinition,
|
||||||
gun: GunDefinition,
|
gun: GunDefinition,
|
||||||
provisionDefinitions: ProvisionDefinitions,
|
provisions: ProvisionDefinitions,
|
||||||
|
scripts: BlitzScripts,
|
||||||
) {
|
) {
|
||||||
const provisionsList = availableProvisions(tank, gun, provisionDefinitions);
|
const provisionsList = availableProvisions(tank, gun, provisions);
|
||||||
|
|
||||||
return provisionsList
|
return provisionsList
|
||||||
.sort(
|
.sort(
|
||||||
@@ -24,7 +30,11 @@ export function createDefaultProvisions(
|
|||||||
infinityFallback(PROVISION_PREFERENCES.indexOf(a.id)) -
|
infinityFallback(PROVISION_PREFERENCES.indexOf(a.id)) -
|
||||||
infinityFallback(PROVISION_PREFERENCES.indexOf(b.id)),
|
infinityFallback(PROVISION_PREFERENCES.indexOf(b.id)),
|
||||||
)
|
)
|
||||||
.sort((a, b) => (b.crew ?? 0) - (a.crew ?? 0))
|
.sort(
|
||||||
|
(a, b) =>
|
||||||
|
(scripts.provisions[b.id].bonusValues?.crewLevelIncrease ?? 0) -
|
||||||
|
(scripts.provisions[a.id].bonusValues?.crewLevelIncrease ?? 0),
|
||||||
|
)
|
||||||
.slice(0, tank.max_provisions)
|
.slice(0, tank.max_provisions)
|
||||||
.map(({ id }) => id);
|
.map(({ id }) => id);
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@ export interface DiscoveredIdsDefinitions {
|
|||||||
count: number;
|
count: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function fetchDiscoveredIdsDefinitions() {
|
export async function fetchDiscoveredIds() {
|
||||||
const response = await fetch(staticAsset("ids/manifest.json"));
|
const response = await fetch(staticAsset("ids/manifest.json"));
|
||||||
return response.json() as Promise<DiscoveredIdsDefinitions>;
|
return response.json() as Promise<DiscoveredIdsDefinitions>;
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
export * from "./alias";
|
export * from "./alias";
|
||||||
|
export * from "./api";
|
||||||
export * from "./assertSecret";
|
export * from "./assertSecret";
|
||||||
export * from "./availableProvisions";
|
export * from "./availableProvisions";
|
||||||
export * from "./averageDefinitions";
|
|
||||||
export * from "./coefficient";
|
export * from "./coefficient";
|
||||||
export * from "./createDefaultProvisions";
|
export * from "./createDefaultProvisions";
|
||||||
export * from "./createDefaultSkills";
|
export * from "./createDefaultSkills";
|
||||||
@@ -30,5 +30,6 @@ export * from "./tankNames";
|
|||||||
export * from "./unionBoundingBox";
|
export * from "./unionBoundingBox";
|
||||||
export * from "./uniqueGuns";
|
export * from "./uniqueGuns";
|
||||||
export * from "./unwrapBlitzkitResponse";
|
export * from "./unwrapBlitzkitResponse";
|
||||||
|
export * from "./vfs";
|
||||||
export * from "./votes";
|
export * from "./votes";
|
||||||
export * from "./youtubers";
|
export * from "./youtubers";
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ShellDefinition, ShellType } from "../protos";
|
import { ShellDefinition, ShellType } from "../../../protos/src/blitzkit";
|
||||||
|
|
||||||
export function isExplosive(
|
export function isExplosive(
|
||||||
type: ShellDefinition["type"],
|
type: ShellDefinition["type"],
|
||||||
|
|||||||
@@ -1,11 +1,6 @@
|
|||||||
import { TANK_CLASSES } from "../blitz/constants";
|
import { GameDefinitions, TankDefinition } from "@blitzkit/protos";
|
||||||
import { GameDefinitions, TankDefinition, TankType } from "../protos";
|
import { tankClassOrder } from "../config/tankClassOrder";
|
||||||
|
import { treeTypeOrder } from "../config/treeTypeOrder";
|
||||||
const treeTypeOrder = [
|
|
||||||
TankType.TANK_TYPE_RESEARCHABLE,
|
|
||||||
TankType.TANK_TYPE_PREMIUM,
|
|
||||||
TankType.TANK_TYPE_COLLECTOR,
|
|
||||||
];
|
|
||||||
|
|
||||||
export function metaSortTank(
|
export function metaSortTank(
|
||||||
tanks: TankDefinition[],
|
tanks: TankDefinition[],
|
||||||
@@ -17,7 +12,8 @@ export function metaSortTank(
|
|||||||
(a, b) => treeTypeOrder.indexOf(b.type) - treeTypeOrder.indexOf(a.type),
|
(a, b) => treeTypeOrder.indexOf(b.type) - treeTypeOrder.indexOf(a.type),
|
||||||
)
|
)
|
||||||
.sort(
|
.sort(
|
||||||
(a, b) => TANK_CLASSES.indexOf(b.class) - TANK_CLASSES.indexOf(a.class),
|
(a, b) =>
|
||||||
|
tankClassOrder.indexOf(b.class) - tankClassOrder.indexOf(a.class),
|
||||||
)
|
)
|
||||||
.sort(
|
.sort(
|
||||||
(a, b) =>
|
(a, b) =>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { BoundingBox, Vector3 } from "../protos";
|
import { BoundingBox, Vector3 } from "../../../protos/src/blitzkit";
|
||||||
|
|
||||||
export function normalizeBoundingBox(boundingBox: BoundingBox) {
|
export function normalizeBoundingBox(boundingBox: BoundingBox) {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { staticAsset } from "@blitzkit/core";
|
import { staticAsset } from "@blitzkit/core";
|
||||||
import { fetchPB } from "../protobuf";
|
import { PopularTanks } from "../../../protos/src/blitzkit";
|
||||||
import { PopularTanks } from "../protos";
|
import { fetchPB } from "../api";
|
||||||
|
|
||||||
export function fetchPopularTanks() {
|
export function fetchPopularTanks() {
|
||||||
return fetchPB(staticAsset("definitions/popular-tanks.pb"), PopularTanks);
|
return fetchPB(staticAsset("definitions/popular-tanks.pb"), PopularTanks);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Equalizer, ShellType } from "../protos";
|
import { Equalizer, ShellType } from "@blitzkit/protos";
|
||||||
|
|
||||||
export function resolvePenetrationCoefficient(
|
export function resolvePenetrationCoefficient(
|
||||||
calibratedShells: boolean,
|
calibratedShells: boolean,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { staticAsset } from "@blitzkit/core";
|
import { staticAsset } from "@blitzkit/core";
|
||||||
import { fetchPB } from "../protobuf";
|
import { Reviews } from "../../../protos/src/blitzkit";
|
||||||
import { Reviews } from "../protos";
|
import { fetchPB } from "../api";
|
||||||
|
|
||||||
export function fetchReviews() {
|
export function fetchReviews() {
|
||||||
return fetchPB(staticAsset("definitions/reviews.pb"), Reviews);
|
return fetchPB(staticAsset("definitions/reviews.pb"), Reviews);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
import { CrewType, ShellType, TankClass, TankType } from "@blitzkit/protos";
|
||||||
import { times } from "lodash-es";
|
import { times } from "lodash-es";
|
||||||
import { CrewType, ShellType, TankClass, TankType } from "../../protos";
|
|
||||||
|
|
||||||
export const SHELL_NAMES: Record<ShellType, string> = {
|
export const SHELL_NAMES: Record<ShellType, string> = {
|
||||||
[ShellType.SHELL_TYPE_AP]: "AP",
|
[ShellType.SHELL_TYPE_AP]: "AP",
|
||||||
|
|||||||
@@ -1,51 +1,64 @@
|
|||||||
import { BlitzKitAPI } from "@blitzkit/core";
|
import { BlitzKitAPI } from "@blitzkit/core/src/blitzkit/api/base";
|
||||||
import locales from "@blitzkit/i18n/locales.json";
|
import locales from "@blitzkit/i18n/locales.json";
|
||||||
import { deburr } from "lodash-es";
|
import { I18nString } from "@blitzkit/protos";
|
||||||
import { I18nString } from "../protos";
|
import { deburr, times } from "lodash-es";
|
||||||
|
|
||||||
export async function fetchTankNames(api: BlitzKitAPI) {
|
export async function fetchTankNames(api: BlitzKitAPI) {
|
||||||
const [tankDefinitions, camouflageDefinitions] = await Promise.all([
|
const [tankDefinitions, camouflageDefinitions] = await Promise.all([
|
||||||
api.tankDefinitions(),
|
api.tanks(),
|
||||||
api.camouflageDefinitions(),
|
api.camouflages(),
|
||||||
]);
|
]);
|
||||||
const tankDefinitionsArray = Object.values(tankDefinitions.tanks);
|
const tankDefinitionsArray = Object.values(tankDefinitions.tanks);
|
||||||
|
|
||||||
return await Promise.all(
|
return await Promise.all(
|
||||||
tankDefinitionsArray.map(async (tank) => {
|
tankDefinitionsArray.map(async (tank) => {
|
||||||
const searchableNameDeburr: I18nString = { locales: {} };
|
const name_deburr: I18nString = I18nString.create();
|
||||||
|
const camouflages_deburr: I18nString[] = [];
|
||||||
|
|
||||||
|
const camouflages = tank.camouflages.map(
|
||||||
|
(id) => camouflageDefinitions.camouflages[id].name!,
|
||||||
|
);
|
||||||
|
|
||||||
Object.entries(tank.name!).forEach(([key, value]) => {
|
Object.entries(tank.name!).forEach(([key, value]) => {
|
||||||
searchableNameDeburr.locales[key] = deburr(value);
|
name_deburr.locales[key] = deburr(value);
|
||||||
|
});
|
||||||
|
|
||||||
|
camouflages.forEach((camouflage, index) => {
|
||||||
|
camouflages_deburr[index] = I18nString.create();
|
||||||
|
Object.entries(camouflage).forEach(([key, value]) => {
|
||||||
|
camouflages_deburr[index].locales[key] = deburr(value);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: tank.id,
|
id: tank.id,
|
||||||
name: tank.name,
|
slug: tank.slug,
|
||||||
searchableName: tank.name,
|
dev_name: tank.dev_name,
|
||||||
searchableNameDeburr,
|
|
||||||
camouflages: tank.camouflages
|
name: tank.name!,
|
||||||
?.map((id) =>
|
name_deburr,
|
||||||
locales.supported.map(
|
|
||||||
({ locale }) =>
|
camouflages,
|
||||||
camouflageDefinitions.camouflages[id]?.name!.locales[locale],
|
camouflages_deburr,
|
||||||
),
|
|
||||||
)
|
|
||||||
.flat()
|
|
||||||
.filter(Boolean)
|
|
||||||
.map(deburr)
|
|
||||||
.join(" "),
|
|
||||||
treeType: tank.type,
|
|
||||||
};
|
};
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export const SEARCH_KEYS = [
|
export const SEARCH_KEYS = [
|
||||||
|
"id",
|
||||||
|
"slug",
|
||||||
|
"dev_name",
|
||||||
|
|
||||||
...locales.supported
|
...locales.supported
|
||||||
.map(({ locale }) => [
|
.map(({ locale }) => [
|
||||||
`searchableName.locales.${locale}`,
|
`name.locales.${locale}`,
|
||||||
`searchableNameDeburr.locales.${locale}`,
|
`name_deburr.locales.${locale}`,
|
||||||
|
|
||||||
|
...times(8, (index) => [
|
||||||
|
`camouflages.${index}.locales.${locale}`,
|
||||||
|
`camouflages_deburr.${index}.locales.${locale}`,
|
||||||
|
]),
|
||||||
])
|
])
|
||||||
.flat(),
|
.flat(2),
|
||||||
"camouflages",
|
|
||||||
];
|
];
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { BoundingBox } from "../protos";
|
import { BoundingBox } from "../../../protos/src/blitzkit";
|
||||||
|
|
||||||
export function unionBoundingBox(a: BoundingBox, b: BoundingBox) {
|
export function unionBoundingBox(a: BoundingBox, b: BoundingBox) {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { forEachRight } from 'lodash-es';
|
import { forEachRight } from 'lodash-es';
|
||||||
import { GunDefinition, TurretDefinition } from '../protos';
|
import { GunDefinition, TurretDefinition } from '../../../protos/src/blitzkit';
|
||||||
|
|
||||||
export function uniqueGuns(turrets: TurretDefinition[]) {
|
export function uniqueGuns(turrets: TurretDefinition[]) {
|
||||||
const gunIds = new Set<number>();
|
const gunIds = new Set<number>();
|
||||||
|
|||||||
@@ -1,14 +1,23 @@
|
|||||||
import { readDVPL } from "@blitzkit/core";
|
import { readDVPL } from "@blitzkit/core";
|
||||||
import { Options, parse as parseCSV } from "csv-parse/sync";
|
import { Options, parse as parseCSV } from "csv-parse/browser/esm/sync";
|
||||||
import { XMLParser } from "fast-xml-parser";
|
import { XMLParser } from "fast-xml-parser";
|
||||||
import { normalize } from "path/posix";
|
import type { normalize } from "node:path/posix";
|
||||||
import { parse as parseYaml } from "yaml";
|
import { parse as parseYaml } from "yaml";
|
||||||
|
|
||||||
export abstract class AbstractVFS {
|
export abstract class AbstractVFS {
|
||||||
textDecoder = new TextDecoder();
|
textDecoder = new TextDecoder();
|
||||||
private xmlParser = new XMLParser();
|
private xmlParser = new XMLParser();
|
||||||
|
|
||||||
abstract init(): Promise<typeof this>;
|
protected normalizePath?: typeof normalize;
|
||||||
|
|
||||||
|
async init() {
|
||||||
|
const path = await import("node:path/posix");
|
||||||
|
this.normalizePath = path.normalize;
|
||||||
|
|
||||||
|
await this._init();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract _init(): Promise<typeof this>;
|
||||||
|
|
||||||
abstract dispose(): void;
|
abstract dispose(): void;
|
||||||
|
|
||||||
@@ -17,7 +26,7 @@ export abstract class AbstractVFS {
|
|||||||
abstract raw(path: string): Promise<Uint8Array<ArrayBuffer>>;
|
abstract raw(path: string): Promise<Uint8Array<ArrayBuffer>>;
|
||||||
|
|
||||||
async resolve(path: string) {
|
async resolve(path: string) {
|
||||||
const normalized = normalize(path);
|
const normalized = this.normalizePath!(path);
|
||||||
if (await this.has(normalized)) return normalized;
|
if (await this.has(normalized)) return normalized;
|
||||||
|
|
||||||
const dvplPath = `${normalized}.dvpl`;
|
const dvplPath = `${normalized}.dvpl`;
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
export * from "./abstract";
|
||||||
|
export * from "./local";
|
||||||
|
export * from "./mixed";
|
||||||
|
export * from "./steam";
|
||||||
|
export * from "./zip";
|
||||||
@@ -1,12 +1,20 @@
|
|||||||
import { readdir } from "node:fs/promises";
|
import type { readdir } from "node:fs/promises";
|
||||||
import { AbstractVFS } from "./abstract";
|
import { AbstractVFS } from "./abstract";
|
||||||
|
|
||||||
export class LocalVFS extends AbstractVFS {
|
export class LocalVFS extends AbstractVFS {
|
||||||
|
protected readdir?: typeof readdir;
|
||||||
|
|
||||||
constructor(private base: string) {
|
constructor(private base: string) {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
async init() {
|
async _init() {
|
||||||
|
const path = await import("node:path/posix");
|
||||||
|
const fs = await import("node:fs/promises");
|
||||||
|
|
||||||
|
this.normalizePath = path.normalize;
|
||||||
|
this.readdir = fs.readdir;
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,7 +33,7 @@ export class LocalVFS extends AbstractVFS {
|
|||||||
|
|
||||||
async _dir(path: string) {
|
async _dir(path: string) {
|
||||||
try {
|
try {
|
||||||
return await readdir(`${this.base}/${path}`);
|
return await this.readdir!(`${this.base}/${path}`);
|
||||||
} catch (_) {
|
} catch (_) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ export class MixedVFS extends AbstractVFS {
|
|||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
async init() {
|
async _init() {
|
||||||
for (const vfs of this.vfses) {
|
for (const vfs of this.vfses) {
|
||||||
await vfs.init();
|
await vfs.init();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import SteamUser, { EConnectionProtocol } from "steam-user";
|
import type SteamUser from "steam-user";
|
||||||
import { AbstractVFS } from "./abstract";
|
import { AbstractVFS } from "./abstract";
|
||||||
|
|
||||||
interface SteamManifestFile {
|
interface SteamManifestFile {
|
||||||
@@ -31,7 +31,7 @@ interface SteamManifest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class SteamVFS extends AbstractVFS {
|
export class SteamVFS extends AbstractVFS {
|
||||||
private steam = new SteamUser({ protocol: EConnectionProtocol.TCP });
|
private steam?: SteamUser;
|
||||||
private manifest: Map<string, SteamManifestFile> = new Map();
|
private manifest: Map<string, SteamManifestFile> = new Map();
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@@ -43,13 +43,18 @@ export class SteamVFS extends AbstractVFS {
|
|||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
async init() {
|
async _init() {
|
||||||
|
const steamUser = await import("steam-user");
|
||||||
|
|
||||||
|
this.steam = new steamUser.default({
|
||||||
|
protocol: steamUser.EConnectionProtocol.TCP,
|
||||||
|
});
|
||||||
this.steam.logOn({
|
this.steam.logOn({
|
||||||
accountName: this.username,
|
accountName: this.username,
|
||||||
password: this.password,
|
password: this.password,
|
||||||
});
|
});
|
||||||
|
|
||||||
await new Promise((resolve) => this.steam.once("loggedOn", resolve));
|
await new Promise((resolve) => this.steam!.once("loggedOn", resolve));
|
||||||
|
|
||||||
const productInfo = await this.steam.getProductInfo([this.app], []);
|
const productInfo = await this.steam.getProductInfo([this.app], []);
|
||||||
const manifest: SteamManifest = await new Promise((resolve) => {
|
const manifest: SteamManifest = await new Promise((resolve) => {
|
||||||
@@ -57,7 +62,6 @@ export class SteamVFS extends AbstractVFS {
|
|||||||
this.steam.getManifest(
|
this.steam.getManifest(
|
||||||
this.app,
|
this.app,
|
||||||
this.depot,
|
this.depot,
|
||||||
// @ts-expect-error
|
|
||||||
productInfo.apps[this.app].appinfo.depots[this.depot].manifests.public
|
productInfo.apps[this.app].appinfo.depots[this.depot].manifests.public
|
||||||
.gid,
|
.gid,
|
||||||
"public",
|
"public",
|
||||||
@@ -106,6 +110,6 @@ export class SteamVFS extends AbstractVFS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dispose() {
|
dispose() {
|
||||||
this.steam.logOff();
|
this.steam!.logOff();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
import { normalize } from "path/posix";
|
|
||||||
import { HTTPRangeReader, unzip, ZipEntry } from "unzipit";
|
import { HTTPRangeReader, unzip, ZipEntry } from "unzipit";
|
||||||
import { AbstractVFS } from "./abstract";
|
import { AbstractVFS } from "./abstract";
|
||||||
|
|
||||||
@@ -12,12 +11,14 @@ export class ZipVFS extends AbstractVFS {
|
|||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
async init() {
|
async _init() {
|
||||||
const reader = new HTTPRangeReader(this.url);
|
const reader = new HTTPRangeReader(this.url);
|
||||||
const { entries } = await unzip(reader);
|
const { entries } = await unzip(reader);
|
||||||
|
|
||||||
for (const entry of Object.values(entries)) {
|
for (const entry of Object.values(entries)) {
|
||||||
const normalized = normalize(entry.name.slice(this.root.length));
|
const normalized = this.normalizePath!(
|
||||||
|
entry.name.slice(this.root.length),
|
||||||
|
);
|
||||||
this.entries.set(normalized, entry);
|
this.entries.set(normalized, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
import { GunDefinition } from "@blitzkit/protos";
|
||||||
|
import { CaseType } from "../types";
|
||||||
|
|
||||||
|
export const gunTypeOrder: CaseType<GunDefinition>[] = [
|
||||||
|
"regular",
|
||||||
|
"auto_loader",
|
||||||
|
"auto_reloader",
|
||||||
|
];
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
export * from "./gunTypeOrder";
|
||||||
|
export * from "./tankClassOrder";
|
||||||
|
export * from "./treeTypeOrder";
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
import { TankClass } from "@blitzkit/protos";
|
||||||
|
|
||||||
|
export const tankClassOrder = [
|
||||||
|
TankClass.TANK_CLASS_LIGHT,
|
||||||
|
TankClass.TANK_CLASS_MEDIUM,
|
||||||
|
TankClass.TANK_CLASS_HEAVY,
|
||||||
|
TankClass.TANK_CLASS_TANK_DESTROYER,
|
||||||
|
];
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
import { TankType } from "@blitzkit/protos";
|
||||||
|
|
||||||
|
export const treeTypeOrder = [
|
||||||
|
TankType.TANK_TYPE_RESEARCHABLE,
|
||||||
|
TankType.TANK_TYPE_PREMIUM,
|
||||||
|
TankType.TANK_TYPE_COLLECTOR,
|
||||||
|
];
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
|
export * from "./api";
|
||||||
export * from "./blitz";
|
export * from "./blitz";
|
||||||
export * from "./blitzkit";
|
export * from "./blitzkit";
|
||||||
|
export * from "./config";
|
||||||
export * from "./imgur";
|
export * from "./imgur";
|
||||||
export * from "./math";
|
export * from "./math";
|
||||||
export * from "./patreon";
|
export * from "./patreon";
|
||||||
export * from "./protobuf";
|
|
||||||
export * from "./protos";
|
|
||||||
export * from "./statistics";
|
export * from "./statistics";
|
||||||
export * from "./streams";
|
export * from "./streams";
|
||||||
|
export * from "./tankopedia";
|
||||||
export * from "./types";
|
export * from "./types";
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
export * from './fetchPB';
|
|
||||||
export * from './pbMap';
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
export type PBMap<T> = T[keyof T] extends number ? T[keyof T] : never;
|
|
||||||
@@ -1,923 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: average_definitions.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export interface AverageDefinitions {
|
|
||||||
averages: { [key: number]: AverageDefinitionsEntry };
|
|
||||||
samples: Samples | undefined;
|
|
||||||
time: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface AverageDefinitions_AveragesEntry {
|
|
||||||
key: number;
|
|
||||||
value: AverageDefinitionsEntry | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface AverageDefinitionsEntry {
|
|
||||||
mu: AverageDefinitionsAllStats | undefined;
|
|
||||||
sigma: AverageDefinitionsAllStats | undefined;
|
|
||||||
r: AverageDefinitionsAllStats | undefined;
|
|
||||||
samples: Samples | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface AverageDefinitionsAllStats {
|
|
||||||
battles: number;
|
|
||||||
capture_points: number;
|
|
||||||
damage_dealt: number;
|
|
||||||
damage_received: number;
|
|
||||||
dropped_capture_points: number;
|
|
||||||
frags: number;
|
|
||||||
frags8p: number;
|
|
||||||
hits: number;
|
|
||||||
losses: number;
|
|
||||||
max_frags: number;
|
|
||||||
max_xp: number;
|
|
||||||
shots: number;
|
|
||||||
spotted: number;
|
|
||||||
survived_battles: number;
|
|
||||||
win_and_survived: number;
|
|
||||||
wins: number;
|
|
||||||
xp: number;
|
|
||||||
battle_life_time: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Samples {
|
|
||||||
d_1: number;
|
|
||||||
d_7: number;
|
|
||||||
d_30: number;
|
|
||||||
d_60: number;
|
|
||||||
d_90: number;
|
|
||||||
d_120: number;
|
|
||||||
total: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseAverageDefinitions(): AverageDefinitions {
|
|
||||||
return { averages: {}, samples: undefined, time: 0 };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const AverageDefinitions: MessageFns<AverageDefinitions> = {
|
|
||||||
encode(message: AverageDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
Object.entries(message.averages).forEach(([key, value]) => {
|
|
||||||
AverageDefinitions_AveragesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
|
|
||||||
});
|
|
||||||
if (message.samples !== undefined) {
|
|
||||||
Samples.encode(message.samples, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
if (message.time !== 0) {
|
|
||||||
writer.uint32(24).uint64(message.time);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): AverageDefinitions {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseAverageDefinitions();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const entry1 = AverageDefinitions_AveragesEntry.decode(reader, reader.uint32());
|
|
||||||
if (entry1.value !== undefined) {
|
|
||||||
message.averages[entry1.key] = entry1.value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.samples = Samples.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
if (tag !== 24) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.time = longToNumber(reader.uint64());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): AverageDefinitions {
|
|
||||||
return {
|
|
||||||
averages: isObject(object.averages)
|
|
||||||
? Object.entries(object.averages).reduce<{ [key: number]: AverageDefinitionsEntry }>((acc, [key, value]) => {
|
|
||||||
acc[globalThis.Number(key)] = AverageDefinitionsEntry.fromJSON(value);
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
: {},
|
|
||||||
samples: isSet(object.samples) ? Samples.fromJSON(object.samples) : undefined,
|
|
||||||
time: isSet(object.time) ? globalThis.Number(object.time) : 0,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: AverageDefinitions): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.averages) {
|
|
||||||
const entries = Object.entries(message.averages);
|
|
||||||
if (entries.length > 0) {
|
|
||||||
obj.averages = {};
|
|
||||||
entries.forEach(([k, v]) => {
|
|
||||||
obj.averages[k] = AverageDefinitionsEntry.toJSON(v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (message.samples !== undefined) {
|
|
||||||
obj.samples = Samples.toJSON(message.samples);
|
|
||||||
}
|
|
||||||
if (message.time !== 0) {
|
|
||||||
obj.time = Math.round(message.time);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<AverageDefinitions>, I>>(base?: I): AverageDefinitions {
|
|
||||||
return AverageDefinitions.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<AverageDefinitions>, I>>(object: I): AverageDefinitions {
|
|
||||||
const message = createBaseAverageDefinitions();
|
|
||||||
message.averages = Object.entries(object.averages ?? {}).reduce<{ [key: number]: AverageDefinitionsEntry }>(
|
|
||||||
(acc, [key, value]) => {
|
|
||||||
if (value !== undefined) {
|
|
||||||
acc[globalThis.Number(key)] = AverageDefinitionsEntry.fromPartial(value);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
},
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
message.samples = (object.samples !== undefined && object.samples !== null)
|
|
||||||
? Samples.fromPartial(object.samples)
|
|
||||||
: undefined;
|
|
||||||
message.time = object.time ?? 0;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseAverageDefinitions_AveragesEntry(): AverageDefinitions_AveragesEntry {
|
|
||||||
return { key: 0, value: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const AverageDefinitions_AveragesEntry: MessageFns<AverageDefinitions_AveragesEntry> = {
|
|
||||||
encode(message: AverageDefinitions_AveragesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.key !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
AverageDefinitionsEntry.encode(message.value, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): AverageDefinitions_AveragesEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseAverageDefinitions_AveragesEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.key = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.value = AverageDefinitionsEntry.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): AverageDefinitions_AveragesEntry {
|
|
||||||
return {
|
|
||||||
key: isSet(object.key) ? globalThis.Number(object.key) : 0,
|
|
||||||
value: isSet(object.value) ? AverageDefinitionsEntry.fromJSON(object.value) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: AverageDefinitions_AveragesEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.key !== 0) {
|
|
||||||
obj.key = Math.round(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
obj.value = AverageDefinitionsEntry.toJSON(message.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<AverageDefinitions_AveragesEntry>, I>>(
|
|
||||||
base?: I,
|
|
||||||
): AverageDefinitions_AveragesEntry {
|
|
||||||
return AverageDefinitions_AveragesEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<AverageDefinitions_AveragesEntry>, I>>(
|
|
||||||
object: I,
|
|
||||||
): AverageDefinitions_AveragesEntry {
|
|
||||||
const message = createBaseAverageDefinitions_AveragesEntry();
|
|
||||||
message.key = object.key ?? 0;
|
|
||||||
message.value = (object.value !== undefined && object.value !== null)
|
|
||||||
? AverageDefinitionsEntry.fromPartial(object.value)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseAverageDefinitionsEntry(): AverageDefinitionsEntry {
|
|
||||||
return { mu: undefined, sigma: undefined, r: undefined, samples: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const AverageDefinitionsEntry: MessageFns<AverageDefinitionsEntry> = {
|
|
||||||
encode(message: AverageDefinitionsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.mu !== undefined) {
|
|
||||||
AverageDefinitionsAllStats.encode(message.mu, writer.uint32(10).fork()).join();
|
|
||||||
}
|
|
||||||
if (message.sigma !== undefined) {
|
|
||||||
AverageDefinitionsAllStats.encode(message.sigma, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
if (message.r !== undefined) {
|
|
||||||
AverageDefinitionsAllStats.encode(message.r, writer.uint32(26).fork()).join();
|
|
||||||
}
|
|
||||||
if (message.samples !== undefined) {
|
|
||||||
Samples.encode(message.samples, writer.uint32(34).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): AverageDefinitionsEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseAverageDefinitionsEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.mu = AverageDefinitionsAllStats.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.sigma = AverageDefinitionsAllStats.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
if (tag !== 26) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.r = AverageDefinitionsAllStats.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 4: {
|
|
||||||
if (tag !== 34) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.samples = Samples.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): AverageDefinitionsEntry {
|
|
||||||
return {
|
|
||||||
mu: isSet(object.mu) ? AverageDefinitionsAllStats.fromJSON(object.mu) : undefined,
|
|
||||||
sigma: isSet(object.sigma) ? AverageDefinitionsAllStats.fromJSON(object.sigma) : undefined,
|
|
||||||
r: isSet(object.r) ? AverageDefinitionsAllStats.fromJSON(object.r) : undefined,
|
|
||||||
samples: isSet(object.samples) ? Samples.fromJSON(object.samples) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: AverageDefinitionsEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.mu !== undefined) {
|
|
||||||
obj.mu = AverageDefinitionsAllStats.toJSON(message.mu);
|
|
||||||
}
|
|
||||||
if (message.sigma !== undefined) {
|
|
||||||
obj.sigma = AverageDefinitionsAllStats.toJSON(message.sigma);
|
|
||||||
}
|
|
||||||
if (message.r !== undefined) {
|
|
||||||
obj.r = AverageDefinitionsAllStats.toJSON(message.r);
|
|
||||||
}
|
|
||||||
if (message.samples !== undefined) {
|
|
||||||
obj.samples = Samples.toJSON(message.samples);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<AverageDefinitionsEntry>, I>>(base?: I): AverageDefinitionsEntry {
|
|
||||||
return AverageDefinitionsEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<AverageDefinitionsEntry>, I>>(object: I): AverageDefinitionsEntry {
|
|
||||||
const message = createBaseAverageDefinitionsEntry();
|
|
||||||
message.mu = (object.mu !== undefined && object.mu !== null)
|
|
||||||
? AverageDefinitionsAllStats.fromPartial(object.mu)
|
|
||||||
: undefined;
|
|
||||||
message.sigma = (object.sigma !== undefined && object.sigma !== null)
|
|
||||||
? AverageDefinitionsAllStats.fromPartial(object.sigma)
|
|
||||||
: undefined;
|
|
||||||
message.r = (object.r !== undefined && object.r !== null)
|
|
||||||
? AverageDefinitionsAllStats.fromPartial(object.r)
|
|
||||||
: undefined;
|
|
||||||
message.samples = (object.samples !== undefined && object.samples !== null)
|
|
||||||
? Samples.fromPartial(object.samples)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseAverageDefinitionsAllStats(): AverageDefinitionsAllStats {
|
|
||||||
return {
|
|
||||||
battles: 0,
|
|
||||||
capture_points: 0,
|
|
||||||
damage_dealt: 0,
|
|
||||||
damage_received: 0,
|
|
||||||
dropped_capture_points: 0,
|
|
||||||
frags: 0,
|
|
||||||
frags8p: 0,
|
|
||||||
hits: 0,
|
|
||||||
losses: 0,
|
|
||||||
max_frags: 0,
|
|
||||||
max_xp: 0,
|
|
||||||
shots: 0,
|
|
||||||
spotted: 0,
|
|
||||||
survived_battles: 0,
|
|
||||||
win_and_survived: 0,
|
|
||||||
wins: 0,
|
|
||||||
xp: 0,
|
|
||||||
battle_life_time: 0,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export const AverageDefinitionsAllStats: MessageFns<AverageDefinitionsAllStats> = {
|
|
||||||
encode(message: AverageDefinitionsAllStats, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.battles !== 0) {
|
|
||||||
writer.uint32(13).float(message.battles);
|
|
||||||
}
|
|
||||||
if (message.capture_points !== 0) {
|
|
||||||
writer.uint32(21).float(message.capture_points);
|
|
||||||
}
|
|
||||||
if (message.damage_dealt !== 0) {
|
|
||||||
writer.uint32(29).float(message.damage_dealt);
|
|
||||||
}
|
|
||||||
if (message.damage_received !== 0) {
|
|
||||||
writer.uint32(37).float(message.damage_received);
|
|
||||||
}
|
|
||||||
if (message.dropped_capture_points !== 0) {
|
|
||||||
writer.uint32(45).float(message.dropped_capture_points);
|
|
||||||
}
|
|
||||||
if (message.frags !== 0) {
|
|
||||||
writer.uint32(53).float(message.frags);
|
|
||||||
}
|
|
||||||
if (message.frags8p !== 0) {
|
|
||||||
writer.uint32(61).float(message.frags8p);
|
|
||||||
}
|
|
||||||
if (message.hits !== 0) {
|
|
||||||
writer.uint32(69).float(message.hits);
|
|
||||||
}
|
|
||||||
if (message.losses !== 0) {
|
|
||||||
writer.uint32(77).float(message.losses);
|
|
||||||
}
|
|
||||||
if (message.max_frags !== 0) {
|
|
||||||
writer.uint32(85).float(message.max_frags);
|
|
||||||
}
|
|
||||||
if (message.max_xp !== 0) {
|
|
||||||
writer.uint32(93).float(message.max_xp);
|
|
||||||
}
|
|
||||||
if (message.shots !== 0) {
|
|
||||||
writer.uint32(101).float(message.shots);
|
|
||||||
}
|
|
||||||
if (message.spotted !== 0) {
|
|
||||||
writer.uint32(109).float(message.spotted);
|
|
||||||
}
|
|
||||||
if (message.survived_battles !== 0) {
|
|
||||||
writer.uint32(117).float(message.survived_battles);
|
|
||||||
}
|
|
||||||
if (message.win_and_survived !== 0) {
|
|
||||||
writer.uint32(125).float(message.win_and_survived);
|
|
||||||
}
|
|
||||||
if (message.wins !== 0) {
|
|
||||||
writer.uint32(133).float(message.wins);
|
|
||||||
}
|
|
||||||
if (message.xp !== 0) {
|
|
||||||
writer.uint32(141).float(message.xp);
|
|
||||||
}
|
|
||||||
if (message.battle_life_time !== 0) {
|
|
||||||
writer.uint32(149).float(message.battle_life_time);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): AverageDefinitionsAllStats {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseAverageDefinitionsAllStats();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 13) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.battles = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 21) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.capture_points = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
if (tag !== 29) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.damage_dealt = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 4: {
|
|
||||||
if (tag !== 37) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.damage_received = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 5: {
|
|
||||||
if (tag !== 45) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.dropped_capture_points = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 6: {
|
|
||||||
if (tag !== 53) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.frags = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 7: {
|
|
||||||
if (tag !== 61) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.frags8p = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 8: {
|
|
||||||
if (tag !== 69) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.hits = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 9: {
|
|
||||||
if (tag !== 77) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.losses = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 10: {
|
|
||||||
if (tag !== 85) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.max_frags = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 11: {
|
|
||||||
if (tag !== 93) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.max_xp = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 12: {
|
|
||||||
if (tag !== 101) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.shots = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 13: {
|
|
||||||
if (tag !== 109) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.spotted = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 14: {
|
|
||||||
if (tag !== 117) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.survived_battles = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 15: {
|
|
||||||
if (tag !== 125) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.win_and_survived = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 16: {
|
|
||||||
if (tag !== 133) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.wins = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 17: {
|
|
||||||
if (tag !== 141) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.xp = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 18: {
|
|
||||||
if (tag !== 149) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.battle_life_time = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): AverageDefinitionsAllStats {
|
|
||||||
return {
|
|
||||||
battles: isSet(object.battles) ? globalThis.Number(object.battles) : 0,
|
|
||||||
capture_points: isSet(object.capture_points) ? globalThis.Number(object.capture_points) : 0,
|
|
||||||
damage_dealt: isSet(object.damage_dealt) ? globalThis.Number(object.damage_dealt) : 0,
|
|
||||||
damage_received: isSet(object.damage_received) ? globalThis.Number(object.damage_received) : 0,
|
|
||||||
dropped_capture_points: isSet(object.dropped_capture_points)
|
|
||||||
? globalThis.Number(object.dropped_capture_points)
|
|
||||||
: 0,
|
|
||||||
frags: isSet(object.frags) ? globalThis.Number(object.frags) : 0,
|
|
||||||
frags8p: isSet(object.frags8p) ? globalThis.Number(object.frags8p) : 0,
|
|
||||||
hits: isSet(object.hits) ? globalThis.Number(object.hits) : 0,
|
|
||||||
losses: isSet(object.losses) ? globalThis.Number(object.losses) : 0,
|
|
||||||
max_frags: isSet(object.max_frags) ? globalThis.Number(object.max_frags) : 0,
|
|
||||||
max_xp: isSet(object.max_xp) ? globalThis.Number(object.max_xp) : 0,
|
|
||||||
shots: isSet(object.shots) ? globalThis.Number(object.shots) : 0,
|
|
||||||
spotted: isSet(object.spotted) ? globalThis.Number(object.spotted) : 0,
|
|
||||||
survived_battles: isSet(object.survived_battles) ? globalThis.Number(object.survived_battles) : 0,
|
|
||||||
win_and_survived: isSet(object.win_and_survived) ? globalThis.Number(object.win_and_survived) : 0,
|
|
||||||
wins: isSet(object.wins) ? globalThis.Number(object.wins) : 0,
|
|
||||||
xp: isSet(object.xp) ? globalThis.Number(object.xp) : 0,
|
|
||||||
battle_life_time: isSet(object.battle_life_time) ? globalThis.Number(object.battle_life_time) : 0,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: AverageDefinitionsAllStats): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.battles !== 0) {
|
|
||||||
obj.battles = message.battles;
|
|
||||||
}
|
|
||||||
if (message.capture_points !== 0) {
|
|
||||||
obj.capture_points = message.capture_points;
|
|
||||||
}
|
|
||||||
if (message.damage_dealt !== 0) {
|
|
||||||
obj.damage_dealt = message.damage_dealt;
|
|
||||||
}
|
|
||||||
if (message.damage_received !== 0) {
|
|
||||||
obj.damage_received = message.damage_received;
|
|
||||||
}
|
|
||||||
if (message.dropped_capture_points !== 0) {
|
|
||||||
obj.dropped_capture_points = message.dropped_capture_points;
|
|
||||||
}
|
|
||||||
if (message.frags !== 0) {
|
|
||||||
obj.frags = message.frags;
|
|
||||||
}
|
|
||||||
if (message.frags8p !== 0) {
|
|
||||||
obj.frags8p = message.frags8p;
|
|
||||||
}
|
|
||||||
if (message.hits !== 0) {
|
|
||||||
obj.hits = message.hits;
|
|
||||||
}
|
|
||||||
if (message.losses !== 0) {
|
|
||||||
obj.losses = message.losses;
|
|
||||||
}
|
|
||||||
if (message.max_frags !== 0) {
|
|
||||||
obj.max_frags = message.max_frags;
|
|
||||||
}
|
|
||||||
if (message.max_xp !== 0) {
|
|
||||||
obj.max_xp = message.max_xp;
|
|
||||||
}
|
|
||||||
if (message.shots !== 0) {
|
|
||||||
obj.shots = message.shots;
|
|
||||||
}
|
|
||||||
if (message.spotted !== 0) {
|
|
||||||
obj.spotted = message.spotted;
|
|
||||||
}
|
|
||||||
if (message.survived_battles !== 0) {
|
|
||||||
obj.survived_battles = message.survived_battles;
|
|
||||||
}
|
|
||||||
if (message.win_and_survived !== 0) {
|
|
||||||
obj.win_and_survived = message.win_and_survived;
|
|
||||||
}
|
|
||||||
if (message.wins !== 0) {
|
|
||||||
obj.wins = message.wins;
|
|
||||||
}
|
|
||||||
if (message.xp !== 0) {
|
|
||||||
obj.xp = message.xp;
|
|
||||||
}
|
|
||||||
if (message.battle_life_time !== 0) {
|
|
||||||
obj.battle_life_time = message.battle_life_time;
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<AverageDefinitionsAllStats>, I>>(base?: I): AverageDefinitionsAllStats {
|
|
||||||
return AverageDefinitionsAllStats.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<AverageDefinitionsAllStats>, I>>(object: I): AverageDefinitionsAllStats {
|
|
||||||
const message = createBaseAverageDefinitionsAllStats();
|
|
||||||
message.battles = object.battles ?? 0;
|
|
||||||
message.capture_points = object.capture_points ?? 0;
|
|
||||||
message.damage_dealt = object.damage_dealt ?? 0;
|
|
||||||
message.damage_received = object.damage_received ?? 0;
|
|
||||||
message.dropped_capture_points = object.dropped_capture_points ?? 0;
|
|
||||||
message.frags = object.frags ?? 0;
|
|
||||||
message.frags8p = object.frags8p ?? 0;
|
|
||||||
message.hits = object.hits ?? 0;
|
|
||||||
message.losses = object.losses ?? 0;
|
|
||||||
message.max_frags = object.max_frags ?? 0;
|
|
||||||
message.max_xp = object.max_xp ?? 0;
|
|
||||||
message.shots = object.shots ?? 0;
|
|
||||||
message.spotted = object.spotted ?? 0;
|
|
||||||
message.survived_battles = object.survived_battles ?? 0;
|
|
||||||
message.win_and_survived = object.win_and_survived ?? 0;
|
|
||||||
message.wins = object.wins ?? 0;
|
|
||||||
message.xp = object.xp ?? 0;
|
|
||||||
message.battle_life_time = object.battle_life_time ?? 0;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseSamples(): Samples {
|
|
||||||
return { d_1: 0, d_7: 0, d_30: 0, d_60: 0, d_90: 0, d_120: 0, total: 0 };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Samples: MessageFns<Samples> = {
|
|
||||||
encode(message: Samples, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.d_1 !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.d_1);
|
|
||||||
}
|
|
||||||
if (message.d_7 !== 0) {
|
|
||||||
writer.uint32(16).uint32(message.d_7);
|
|
||||||
}
|
|
||||||
if (message.d_30 !== 0) {
|
|
||||||
writer.uint32(24).uint32(message.d_30);
|
|
||||||
}
|
|
||||||
if (message.d_60 !== 0) {
|
|
||||||
writer.uint32(32).uint32(message.d_60);
|
|
||||||
}
|
|
||||||
if (message.d_90 !== 0) {
|
|
||||||
writer.uint32(40).uint32(message.d_90);
|
|
||||||
}
|
|
||||||
if (message.d_120 !== 0) {
|
|
||||||
writer.uint32(48).uint32(message.d_120);
|
|
||||||
}
|
|
||||||
if (message.total !== 0) {
|
|
||||||
writer.uint32(56).uint32(message.total);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Samples {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseSamples();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.d_1 = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 16) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.d_7 = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
if (tag !== 24) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.d_30 = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 4: {
|
|
||||||
if (tag !== 32) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.d_60 = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 5: {
|
|
||||||
if (tag !== 40) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.d_90 = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 6: {
|
|
||||||
if (tag !== 48) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.d_120 = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 7: {
|
|
||||||
if (tag !== 56) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.total = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): Samples {
|
|
||||||
return {
|
|
||||||
d_1: isSet(object.d_1) ? globalThis.Number(object.d_1) : 0,
|
|
||||||
d_7: isSet(object.d_7) ? globalThis.Number(object.d_7) : 0,
|
|
||||||
d_30: isSet(object.d_30) ? globalThis.Number(object.d_30) : 0,
|
|
||||||
d_60: isSet(object.d_60) ? globalThis.Number(object.d_60) : 0,
|
|
||||||
d_90: isSet(object.d_90) ? globalThis.Number(object.d_90) : 0,
|
|
||||||
d_120: isSet(object.d_120) ? globalThis.Number(object.d_120) : 0,
|
|
||||||
total: isSet(object.total) ? globalThis.Number(object.total) : 0,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: Samples): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.d_1 !== 0) {
|
|
||||||
obj.d_1 = Math.round(message.d_1);
|
|
||||||
}
|
|
||||||
if (message.d_7 !== 0) {
|
|
||||||
obj.d_7 = Math.round(message.d_7);
|
|
||||||
}
|
|
||||||
if (message.d_30 !== 0) {
|
|
||||||
obj.d_30 = Math.round(message.d_30);
|
|
||||||
}
|
|
||||||
if (message.d_60 !== 0) {
|
|
||||||
obj.d_60 = Math.round(message.d_60);
|
|
||||||
}
|
|
||||||
if (message.d_90 !== 0) {
|
|
||||||
obj.d_90 = Math.round(message.d_90);
|
|
||||||
}
|
|
||||||
if (message.d_120 !== 0) {
|
|
||||||
obj.d_120 = Math.round(message.d_120);
|
|
||||||
}
|
|
||||||
if (message.total !== 0) {
|
|
||||||
obj.total = Math.round(message.total);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<Samples>, I>>(base?: I): Samples {
|
|
||||||
return Samples.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<Samples>, I>>(object: I): Samples {
|
|
||||||
const message = createBaseSamples();
|
|
||||||
message.d_1 = object.d_1 ?? 0;
|
|
||||||
message.d_7 = object.d_7 ?? 0;
|
|
||||||
message.d_30 = object.d_30 ?? 0;
|
|
||||||
message.d_60 = object.d_60 ?? 0;
|
|
||||||
message.d_90 = object.d_90 ?? 0;
|
|
||||||
message.d_120 = object.d_120 ?? 0;
|
|
||||||
message.total = object.total ?? 0;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function longToNumber(int64: { toString(): string }): number {
|
|
||||||
const num = globalThis.Number(int64.toString());
|
|
||||||
if (num > globalThis.Number.MAX_SAFE_INTEGER) {
|
|
||||||
throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");
|
|
||||||
}
|
|
||||||
if (num < globalThis.Number.MIN_SAFE_INTEGER) {
|
|
||||||
throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER");
|
|
||||||
}
|
|
||||||
return num;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isObject(value: any): boolean {
|
|
||||||
return typeof value === "object" && value !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
@@ -1,335 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: camouflage_definitions.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
import { I18nString } from "./i18n";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export interface CamouflageDefinitions {
|
|
||||||
camouflages: { [key: number]: Camouflage };
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface CamouflageDefinitions_CamouflagesEntry {
|
|
||||||
key: number;
|
|
||||||
value: Camouflage | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Camouflage {
|
|
||||||
id: number;
|
|
||||||
name: I18nString | undefined;
|
|
||||||
tank_name?: I18nString | undefined;
|
|
||||||
tank_name_full?: I18nString | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseCamouflageDefinitions(): CamouflageDefinitions {
|
|
||||||
return { camouflages: {} };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const CamouflageDefinitions: MessageFns<CamouflageDefinitions> = {
|
|
||||||
encode(message: CamouflageDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
Object.entries(message.camouflages).forEach(([key, value]) => {
|
|
||||||
CamouflageDefinitions_CamouflagesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
|
|
||||||
});
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): CamouflageDefinitions {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseCamouflageDefinitions();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const entry1 = CamouflageDefinitions_CamouflagesEntry.decode(reader, reader.uint32());
|
|
||||||
if (entry1.value !== undefined) {
|
|
||||||
message.camouflages[entry1.key] = entry1.value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): CamouflageDefinitions {
|
|
||||||
return {
|
|
||||||
camouflages: isObject(object.camouflages)
|
|
||||||
? Object.entries(object.camouflages).reduce<{ [key: number]: Camouflage }>((acc, [key, value]) => {
|
|
||||||
acc[globalThis.Number(key)] = Camouflage.fromJSON(value);
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
: {},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: CamouflageDefinitions): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.camouflages) {
|
|
||||||
const entries = Object.entries(message.camouflages);
|
|
||||||
if (entries.length > 0) {
|
|
||||||
obj.camouflages = {};
|
|
||||||
entries.forEach(([k, v]) => {
|
|
||||||
obj.camouflages[k] = Camouflage.toJSON(v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<CamouflageDefinitions>, I>>(base?: I): CamouflageDefinitions {
|
|
||||||
return CamouflageDefinitions.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<CamouflageDefinitions>, I>>(object: I): CamouflageDefinitions {
|
|
||||||
const message = createBaseCamouflageDefinitions();
|
|
||||||
message.camouflages = Object.entries(object.camouflages ?? {}).reduce<{ [key: number]: Camouflage }>(
|
|
||||||
(acc, [key, value]) => {
|
|
||||||
if (value !== undefined) {
|
|
||||||
acc[globalThis.Number(key)] = Camouflage.fromPartial(value);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
},
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseCamouflageDefinitions_CamouflagesEntry(): CamouflageDefinitions_CamouflagesEntry {
|
|
||||||
return { key: 0, value: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const CamouflageDefinitions_CamouflagesEntry: MessageFns<CamouflageDefinitions_CamouflagesEntry> = {
|
|
||||||
encode(message: CamouflageDefinitions_CamouflagesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.key !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
Camouflage.encode(message.value, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): CamouflageDefinitions_CamouflagesEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseCamouflageDefinitions_CamouflagesEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.key = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.value = Camouflage.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): CamouflageDefinitions_CamouflagesEntry {
|
|
||||||
return {
|
|
||||||
key: isSet(object.key) ? globalThis.Number(object.key) : 0,
|
|
||||||
value: isSet(object.value) ? Camouflage.fromJSON(object.value) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: CamouflageDefinitions_CamouflagesEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.key !== 0) {
|
|
||||||
obj.key = Math.round(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
obj.value = Camouflage.toJSON(message.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<CamouflageDefinitions_CamouflagesEntry>, I>>(
|
|
||||||
base?: I,
|
|
||||||
): CamouflageDefinitions_CamouflagesEntry {
|
|
||||||
return CamouflageDefinitions_CamouflagesEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<CamouflageDefinitions_CamouflagesEntry>, I>>(
|
|
||||||
object: I,
|
|
||||||
): CamouflageDefinitions_CamouflagesEntry {
|
|
||||||
const message = createBaseCamouflageDefinitions_CamouflagesEntry();
|
|
||||||
message.key = object.key ?? 0;
|
|
||||||
message.value = (object.value !== undefined && object.value !== null)
|
|
||||||
? Camouflage.fromPartial(object.value)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseCamouflage(): Camouflage {
|
|
||||||
return { id: 0, name: undefined, tank_name: undefined, tank_name_full: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Camouflage: MessageFns<Camouflage> = {
|
|
||||||
encode(message: Camouflage, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.id !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.id);
|
|
||||||
}
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
I18nString.encode(message.name, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
if (message.tank_name !== undefined) {
|
|
||||||
I18nString.encode(message.tank_name, writer.uint32(26).fork()).join();
|
|
||||||
}
|
|
||||||
if (message.tank_name_full !== undefined) {
|
|
||||||
I18nString.encode(message.tank_name_full, writer.uint32(34).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Camouflage {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseCamouflage();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.id = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.name = I18nString.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
if (tag !== 26) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.tank_name = I18nString.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 4: {
|
|
||||||
if (tag !== 34) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.tank_name_full = I18nString.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): Camouflage {
|
|
||||||
return {
|
|
||||||
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
|
|
||||||
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
|
|
||||||
tank_name: isSet(object.tank_name) ? I18nString.fromJSON(object.tank_name) : undefined,
|
|
||||||
tank_name_full: isSet(object.tank_name_full) ? I18nString.fromJSON(object.tank_name_full) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: Camouflage): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.id !== 0) {
|
|
||||||
obj.id = Math.round(message.id);
|
|
||||||
}
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
obj.name = I18nString.toJSON(message.name);
|
|
||||||
}
|
|
||||||
if (message.tank_name !== undefined) {
|
|
||||||
obj.tank_name = I18nString.toJSON(message.tank_name);
|
|
||||||
}
|
|
||||||
if (message.tank_name_full !== undefined) {
|
|
||||||
obj.tank_name_full = I18nString.toJSON(message.tank_name_full);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<Camouflage>, I>>(base?: I): Camouflage {
|
|
||||||
return Camouflage.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<Camouflage>, I>>(object: I): Camouflage {
|
|
||||||
const message = createBaseCamouflage();
|
|
||||||
message.id = object.id ?? 0;
|
|
||||||
message.name = (object.name !== undefined && object.name !== null)
|
|
||||||
? I18nString.fromPartial(object.name)
|
|
||||||
: undefined;
|
|
||||||
message.tank_name = (object.tank_name !== undefined && object.tank_name !== null)
|
|
||||||
? I18nString.fromPartial(object.tank_name)
|
|
||||||
: undefined;
|
|
||||||
message.tank_name_full = (object.tank_name_full !== undefined && object.tank_name_full !== null)
|
|
||||||
? I18nString.fromPartial(object.tank_name_full)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function isObject(value: any): boolean {
|
|
||||||
return typeof value === "object" && value !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
@@ -1,861 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: consumable_definitions.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
import { I18nString } from "./i18n";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export enum ConsumableTankCategoryFilterCategory {
|
|
||||||
CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP = 0,
|
|
||||||
}
|
|
||||||
|
|
||||||
export function consumableTankCategoryFilterCategoryFromJSON(object: any): ConsumableTankCategoryFilterCategory {
|
|
||||||
switch (object) {
|
|
||||||
case 0:
|
|
||||||
case "CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP":
|
|
||||||
return ConsumableTankCategoryFilterCategory.CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP;
|
|
||||||
default:
|
|
||||||
throw new globalThis.Error(
|
|
||||||
"Unrecognized enum value " + object + " for enum ConsumableTankCategoryFilterCategory",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function consumableTankCategoryFilterCategoryToJSON(object: ConsumableTankCategoryFilterCategory): string {
|
|
||||||
switch (object) {
|
|
||||||
case ConsumableTankCategoryFilterCategory.CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP:
|
|
||||||
return "CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP";
|
|
||||||
default:
|
|
||||||
throw new globalThis.Error(
|
|
||||||
"Unrecognized enum value " + object + " for enum ConsumableTankCategoryFilterCategory",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ConsumableDefinitions {
|
|
||||||
consumables: { [key: number]: Consumable };
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ConsumableDefinitions_ConsumablesEntry {
|
|
||||||
key: number;
|
|
||||||
value: Consumable | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Consumable {
|
|
||||||
id: number;
|
|
||||||
name: I18nString | undefined;
|
|
||||||
cooldown: number;
|
|
||||||
duration?: number | undefined;
|
|
||||||
game_mode_exclusive: boolean;
|
|
||||||
include: ConsumableTankFilter[];
|
|
||||||
exclude: ConsumableTankFilter[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ConsumableTankFilter {
|
|
||||||
filter_type?:
|
|
||||||
| { $case: "tiers"; value: ConsumableTankTierFilter }
|
|
||||||
| { $case: "ids"; value: ConsumableTankIdsFilter }
|
|
||||||
| { $case: "categories"; value: ConsumableTankCategoryFilter }
|
|
||||||
| { $case: "nations"; value: ConsumableTankNationFilter }
|
|
||||||
| undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ConsumableTankTierFilter {
|
|
||||||
min: number;
|
|
||||||
max: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ConsumableTankIdsFilter {
|
|
||||||
ids: number[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ConsumableTankCategoryFilter {
|
|
||||||
categories: ConsumableTankCategoryFilterCategory[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ConsumableTankNationFilter {
|
|
||||||
nations: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseConsumableDefinitions(): ConsumableDefinitions {
|
|
||||||
return { consumables: {} };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ConsumableDefinitions: MessageFns<ConsumableDefinitions> = {
|
|
||||||
encode(message: ConsumableDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
Object.entries(message.consumables).forEach(([key, value]) => {
|
|
||||||
ConsumableDefinitions_ConsumablesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
|
|
||||||
});
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): ConsumableDefinitions {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseConsumableDefinitions();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const entry1 = ConsumableDefinitions_ConsumablesEntry.decode(reader, reader.uint32());
|
|
||||||
if (entry1.value !== undefined) {
|
|
||||||
message.consumables[entry1.key] = entry1.value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): ConsumableDefinitions {
|
|
||||||
return {
|
|
||||||
consumables: isObject(object.consumables)
|
|
||||||
? Object.entries(object.consumables).reduce<{ [key: number]: Consumable }>((acc, [key, value]) => {
|
|
||||||
acc[globalThis.Number(key)] = Consumable.fromJSON(value);
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
: {},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: ConsumableDefinitions): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.consumables) {
|
|
||||||
const entries = Object.entries(message.consumables);
|
|
||||||
if (entries.length > 0) {
|
|
||||||
obj.consumables = {};
|
|
||||||
entries.forEach(([k, v]) => {
|
|
||||||
obj.consumables[k] = Consumable.toJSON(v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<ConsumableDefinitions>, I>>(base?: I): ConsumableDefinitions {
|
|
||||||
return ConsumableDefinitions.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<ConsumableDefinitions>, I>>(object: I): ConsumableDefinitions {
|
|
||||||
const message = createBaseConsumableDefinitions();
|
|
||||||
message.consumables = Object.entries(object.consumables ?? {}).reduce<{ [key: number]: Consumable }>(
|
|
||||||
(acc, [key, value]) => {
|
|
||||||
if (value !== undefined) {
|
|
||||||
acc[globalThis.Number(key)] = Consumable.fromPartial(value);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
},
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseConsumableDefinitions_ConsumablesEntry(): ConsumableDefinitions_ConsumablesEntry {
|
|
||||||
return { key: 0, value: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ConsumableDefinitions_ConsumablesEntry: MessageFns<ConsumableDefinitions_ConsumablesEntry> = {
|
|
||||||
encode(message: ConsumableDefinitions_ConsumablesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.key !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
Consumable.encode(message.value, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): ConsumableDefinitions_ConsumablesEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseConsumableDefinitions_ConsumablesEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.key = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.value = Consumable.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): ConsumableDefinitions_ConsumablesEntry {
|
|
||||||
return {
|
|
||||||
key: isSet(object.key) ? globalThis.Number(object.key) : 0,
|
|
||||||
value: isSet(object.value) ? Consumable.fromJSON(object.value) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: ConsumableDefinitions_ConsumablesEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.key !== 0) {
|
|
||||||
obj.key = Math.round(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
obj.value = Consumable.toJSON(message.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<ConsumableDefinitions_ConsumablesEntry>, I>>(
|
|
||||||
base?: I,
|
|
||||||
): ConsumableDefinitions_ConsumablesEntry {
|
|
||||||
return ConsumableDefinitions_ConsumablesEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<ConsumableDefinitions_ConsumablesEntry>, I>>(
|
|
||||||
object: I,
|
|
||||||
): ConsumableDefinitions_ConsumablesEntry {
|
|
||||||
const message = createBaseConsumableDefinitions_ConsumablesEntry();
|
|
||||||
message.key = object.key ?? 0;
|
|
||||||
message.value = (object.value !== undefined && object.value !== null)
|
|
||||||
? Consumable.fromPartial(object.value)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseConsumable(): Consumable {
|
|
||||||
return { id: 0, name: undefined, cooldown: 0, duration: 0, game_mode_exclusive: false, include: [], exclude: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Consumable: MessageFns<Consumable> = {
|
|
||||||
encode(message: Consumable, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.id !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.id);
|
|
||||||
}
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
I18nString.encode(message.name, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
if (message.cooldown !== 0) {
|
|
||||||
writer.uint32(24).uint32(message.cooldown);
|
|
||||||
}
|
|
||||||
if (message.duration !== undefined && message.duration !== 0) {
|
|
||||||
writer.uint32(37).float(message.duration);
|
|
||||||
}
|
|
||||||
if (message.game_mode_exclusive !== false) {
|
|
||||||
writer.uint32(40).bool(message.game_mode_exclusive);
|
|
||||||
}
|
|
||||||
for (const v of message.include) {
|
|
||||||
ConsumableTankFilter.encode(v!, writer.uint32(50).fork()).join();
|
|
||||||
}
|
|
||||||
for (const v of message.exclude) {
|
|
||||||
ConsumableTankFilter.encode(v!, writer.uint32(58).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Consumable {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseConsumable();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.id = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.name = I18nString.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
if (tag !== 24) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.cooldown = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 4: {
|
|
||||||
if (tag !== 37) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.duration = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 5: {
|
|
||||||
if (tag !== 40) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.game_mode_exclusive = reader.bool();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 6: {
|
|
||||||
if (tag !== 50) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.include.push(ConsumableTankFilter.decode(reader, reader.uint32()));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 7: {
|
|
||||||
if (tag !== 58) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.exclude.push(ConsumableTankFilter.decode(reader, reader.uint32()));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): Consumable {
|
|
||||||
return {
|
|
||||||
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
|
|
||||||
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
|
|
||||||
cooldown: isSet(object.cooldown) ? globalThis.Number(object.cooldown) : 0,
|
|
||||||
duration: isSet(object.duration) ? globalThis.Number(object.duration) : 0,
|
|
||||||
game_mode_exclusive: isSet(object.game_mode_exclusive) ? globalThis.Boolean(object.game_mode_exclusive) : false,
|
|
||||||
include: globalThis.Array.isArray(object?.include)
|
|
||||||
? object.include.map((e: any) => ConsumableTankFilter.fromJSON(e))
|
|
||||||
: [],
|
|
||||||
exclude: globalThis.Array.isArray(object?.exclude)
|
|
||||||
? object.exclude.map((e: any) => ConsumableTankFilter.fromJSON(e))
|
|
||||||
: [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: Consumable): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.id !== 0) {
|
|
||||||
obj.id = Math.round(message.id);
|
|
||||||
}
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
obj.name = I18nString.toJSON(message.name);
|
|
||||||
}
|
|
||||||
if (message.cooldown !== 0) {
|
|
||||||
obj.cooldown = Math.round(message.cooldown);
|
|
||||||
}
|
|
||||||
if (message.duration !== undefined && message.duration !== 0) {
|
|
||||||
obj.duration = message.duration;
|
|
||||||
}
|
|
||||||
if (message.game_mode_exclusive !== false) {
|
|
||||||
obj.game_mode_exclusive = message.game_mode_exclusive;
|
|
||||||
}
|
|
||||||
if (message.include?.length) {
|
|
||||||
obj.include = message.include.map((e) => ConsumableTankFilter.toJSON(e));
|
|
||||||
}
|
|
||||||
if (message.exclude?.length) {
|
|
||||||
obj.exclude = message.exclude.map((e) => ConsumableTankFilter.toJSON(e));
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<Consumable>, I>>(base?: I): Consumable {
|
|
||||||
return Consumable.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<Consumable>, I>>(object: I): Consumable {
|
|
||||||
const message = createBaseConsumable();
|
|
||||||
message.id = object.id ?? 0;
|
|
||||||
message.name = (object.name !== undefined && object.name !== null)
|
|
||||||
? I18nString.fromPartial(object.name)
|
|
||||||
: undefined;
|
|
||||||
message.cooldown = object.cooldown ?? 0;
|
|
||||||
message.duration = object.duration ?? 0;
|
|
||||||
message.game_mode_exclusive = object.game_mode_exclusive ?? false;
|
|
||||||
message.include = object.include?.map((e) => ConsumableTankFilter.fromPartial(e)) || [];
|
|
||||||
message.exclude = object.exclude?.map((e) => ConsumableTankFilter.fromPartial(e)) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseConsumableTankFilter(): ConsumableTankFilter {
|
|
||||||
return { filter_type: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ConsumableTankFilter: MessageFns<ConsumableTankFilter> = {
|
|
||||||
encode(message: ConsumableTankFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
switch (message.filter_type?.$case) {
|
|
||||||
case "tiers":
|
|
||||||
ConsumableTankTierFilter.encode(message.filter_type.value, writer.uint32(10).fork()).join();
|
|
||||||
break;
|
|
||||||
case "ids":
|
|
||||||
ConsumableTankIdsFilter.encode(message.filter_type.value, writer.uint32(18).fork()).join();
|
|
||||||
break;
|
|
||||||
case "categories":
|
|
||||||
ConsumableTankCategoryFilter.encode(message.filter_type.value, writer.uint32(26).fork()).join();
|
|
||||||
break;
|
|
||||||
case "nations":
|
|
||||||
ConsumableTankNationFilter.encode(message.filter_type.value, writer.uint32(34).fork()).join();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankFilter {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseConsumableTankFilter();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.filter_type = { $case: "tiers", value: ConsumableTankTierFilter.decode(reader, reader.uint32()) };
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.filter_type = { $case: "ids", value: ConsumableTankIdsFilter.decode(reader, reader.uint32()) };
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
if (tag !== 26) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.filter_type = {
|
|
||||||
$case: "categories",
|
|
||||||
value: ConsumableTankCategoryFilter.decode(reader, reader.uint32()),
|
|
||||||
};
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 4: {
|
|
||||||
if (tag !== 34) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.filter_type = { $case: "nations", value: ConsumableTankNationFilter.decode(reader, reader.uint32()) };
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): ConsumableTankFilter {
|
|
||||||
return {
|
|
||||||
filter_type: isSet(object.tiers)
|
|
||||||
? { $case: "tiers", value: ConsumableTankTierFilter.fromJSON(object.tiers) }
|
|
||||||
: isSet(object.ids)
|
|
||||||
? { $case: "ids", value: ConsumableTankIdsFilter.fromJSON(object.ids) }
|
|
||||||
: isSet(object.categories)
|
|
||||||
? { $case: "categories", value: ConsumableTankCategoryFilter.fromJSON(object.categories) }
|
|
||||||
: isSet(object.nations)
|
|
||||||
? { $case: "nations", value: ConsumableTankNationFilter.fromJSON(object.nations) }
|
|
||||||
: undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: ConsumableTankFilter): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.filter_type?.$case === "tiers") {
|
|
||||||
obj.tiers = ConsumableTankTierFilter.toJSON(message.filter_type.value);
|
|
||||||
} else if (message.filter_type?.$case === "ids") {
|
|
||||||
obj.ids = ConsumableTankIdsFilter.toJSON(message.filter_type.value);
|
|
||||||
} else if (message.filter_type?.$case === "categories") {
|
|
||||||
obj.categories = ConsumableTankCategoryFilter.toJSON(message.filter_type.value);
|
|
||||||
} else if (message.filter_type?.$case === "nations") {
|
|
||||||
obj.nations = ConsumableTankNationFilter.toJSON(message.filter_type.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<ConsumableTankFilter>, I>>(base?: I): ConsumableTankFilter {
|
|
||||||
return ConsumableTankFilter.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<ConsumableTankFilter>, I>>(object: I): ConsumableTankFilter {
|
|
||||||
const message = createBaseConsumableTankFilter();
|
|
||||||
switch (object.filter_type?.$case) {
|
|
||||||
case "tiers": {
|
|
||||||
if (object.filter_type?.value !== undefined && object.filter_type?.value !== null) {
|
|
||||||
message.filter_type = {
|
|
||||||
$case: "tiers",
|
|
||||||
value: ConsumableTankTierFilter.fromPartial(object.filter_type.value),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "ids": {
|
|
||||||
if (object.filter_type?.value !== undefined && object.filter_type?.value !== null) {
|
|
||||||
message.filter_type = { $case: "ids", value: ConsumableTankIdsFilter.fromPartial(object.filter_type.value) };
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "categories": {
|
|
||||||
if (object.filter_type?.value !== undefined && object.filter_type?.value !== null) {
|
|
||||||
message.filter_type = {
|
|
||||||
$case: "categories",
|
|
||||||
value: ConsumableTankCategoryFilter.fromPartial(object.filter_type.value),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "nations": {
|
|
||||||
if (object.filter_type?.value !== undefined && object.filter_type?.value !== null) {
|
|
||||||
message.filter_type = {
|
|
||||||
$case: "nations",
|
|
||||||
value: ConsumableTankNationFilter.fromPartial(object.filter_type.value),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseConsumableTankTierFilter(): ConsumableTankTierFilter {
|
|
||||||
return { min: 0, max: 0 };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ConsumableTankTierFilter: MessageFns<ConsumableTankTierFilter> = {
|
|
||||||
encode(message: ConsumableTankTierFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.min !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.min);
|
|
||||||
}
|
|
||||||
if (message.max !== 0) {
|
|
||||||
writer.uint32(16).uint32(message.max);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankTierFilter {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseConsumableTankTierFilter();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.min = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 16) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.max = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): ConsumableTankTierFilter {
|
|
||||||
return {
|
|
||||||
min: isSet(object.min) ? globalThis.Number(object.min) : 0,
|
|
||||||
max: isSet(object.max) ? globalThis.Number(object.max) : 0,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: ConsumableTankTierFilter): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.min !== 0) {
|
|
||||||
obj.min = Math.round(message.min);
|
|
||||||
}
|
|
||||||
if (message.max !== 0) {
|
|
||||||
obj.max = Math.round(message.max);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<ConsumableTankTierFilter>, I>>(base?: I): ConsumableTankTierFilter {
|
|
||||||
return ConsumableTankTierFilter.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<ConsumableTankTierFilter>, I>>(object: I): ConsumableTankTierFilter {
|
|
||||||
const message = createBaseConsumableTankTierFilter();
|
|
||||||
message.min = object.min ?? 0;
|
|
||||||
message.max = object.max ?? 0;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseConsumableTankIdsFilter(): ConsumableTankIdsFilter {
|
|
||||||
return { ids: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ConsumableTankIdsFilter: MessageFns<ConsumableTankIdsFilter> = {
|
|
||||||
encode(message: ConsumableTankIdsFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
for (const v of message.ids) {
|
|
||||||
writer.uint32(8).uint32(v!);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankIdsFilter {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseConsumableTankIdsFilter();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag === 8) {
|
|
||||||
message.ids.push(reader.uint32());
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tag === 10) {
|
|
||||||
const end2 = reader.uint32() + reader.pos;
|
|
||||||
while (reader.pos < end2) {
|
|
||||||
message.ids.push(reader.uint32());
|
|
||||||
}
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): ConsumableTankIdsFilter {
|
|
||||||
return { ids: globalThis.Array.isArray(object?.ids) ? object.ids.map((e: any) => globalThis.Number(e)) : [] };
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: ConsumableTankIdsFilter): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.ids?.length) {
|
|
||||||
obj.ids = message.ids.map((e) => Math.round(e));
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<ConsumableTankIdsFilter>, I>>(base?: I): ConsumableTankIdsFilter {
|
|
||||||
return ConsumableTankIdsFilter.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<ConsumableTankIdsFilter>, I>>(object: I): ConsumableTankIdsFilter {
|
|
||||||
const message = createBaseConsumableTankIdsFilter();
|
|
||||||
message.ids = object.ids?.map((e) => e) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseConsumableTankCategoryFilter(): ConsumableTankCategoryFilter {
|
|
||||||
return { categories: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ConsumableTankCategoryFilter: MessageFns<ConsumableTankCategoryFilter> = {
|
|
||||||
encode(message: ConsumableTankCategoryFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
for (const v of message.categories) {
|
|
||||||
writer.uint32(8).int32(v!);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankCategoryFilter {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseConsumableTankCategoryFilter();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag === 8) {
|
|
||||||
message.categories.push(reader.int32() as any);
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tag === 10) {
|
|
||||||
const end2 = reader.uint32() + reader.pos;
|
|
||||||
while (reader.pos < end2) {
|
|
||||||
message.categories.push(reader.int32() as any);
|
|
||||||
}
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): ConsumableTankCategoryFilter {
|
|
||||||
return {
|
|
||||||
categories: globalThis.Array.isArray(object?.categories)
|
|
||||||
? object.categories.map((e: any) => consumableTankCategoryFilterCategoryFromJSON(e))
|
|
||||||
: [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: ConsumableTankCategoryFilter): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.categories?.length) {
|
|
||||||
obj.categories = message.categories.map((e) => consumableTankCategoryFilterCategoryToJSON(e));
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<ConsumableTankCategoryFilter>, I>>(base?: I): ConsumableTankCategoryFilter {
|
|
||||||
return ConsumableTankCategoryFilter.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<ConsumableTankCategoryFilter>, I>>(object: I): ConsumableTankCategoryFilter {
|
|
||||||
const message = createBaseConsumableTankCategoryFilter();
|
|
||||||
message.categories = object.categories?.map((e) => e) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseConsumableTankNationFilter(): ConsumableTankNationFilter {
|
|
||||||
return { nations: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ConsumableTankNationFilter: MessageFns<ConsumableTankNationFilter> = {
|
|
||||||
encode(message: ConsumableTankNationFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
for (const v of message.nations) {
|
|
||||||
writer.uint32(10).string(v!);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): ConsumableTankNationFilter {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseConsumableTankNationFilter();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.nations.push(reader.string());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): ConsumableTankNationFilter {
|
|
||||||
return {
|
|
||||||
nations: globalThis.Array.isArray(object?.nations) ? object.nations.map((e: any) => globalThis.String(e)) : [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: ConsumableTankNationFilter): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.nations?.length) {
|
|
||||||
obj.nations = message.nations;
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<ConsumableTankNationFilter>, I>>(base?: I): ConsumableTankNationFilter {
|
|
||||||
return ConsumableTankNationFilter.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<ConsumableTankNationFilter>, I>>(object: I): ConsumableTankNationFilter {
|
|
||||||
const message = createBaseConsumableTankNationFilter();
|
|
||||||
message.nations = object.nations?.map((e) => e) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function isObject(value: any): boolean {
|
|
||||||
return typeof value === "object" && value !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
@@ -1,570 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: equipment_definitions.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
import { I18nString } from "./i18n";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export interface EquipmentDefinitions {
|
|
||||||
presets: { [key: string]: EquipmentPreset };
|
|
||||||
equipments: { [key: number]: Equipment };
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface EquipmentDefinitions_PresetsEntry {
|
|
||||||
key: string;
|
|
||||||
value: EquipmentPreset | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface EquipmentDefinitions_EquipmentsEntry {
|
|
||||||
key: number;
|
|
||||||
value: Equipment | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Equipment {
|
|
||||||
name: I18nString | undefined;
|
|
||||||
description: I18nString | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface EquipmentPreset {
|
|
||||||
slots: EquipmentSlot[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface EquipmentSlot {
|
|
||||||
left: number;
|
|
||||||
right: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseEquipmentDefinitions(): EquipmentDefinitions {
|
|
||||||
return { presets: {}, equipments: {} };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const EquipmentDefinitions: MessageFns<EquipmentDefinitions> = {
|
|
||||||
encode(message: EquipmentDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
Object.entries(message.presets).forEach(([key, value]) => {
|
|
||||||
EquipmentDefinitions_PresetsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
|
|
||||||
});
|
|
||||||
Object.entries(message.equipments).forEach(([key, value]) => {
|
|
||||||
EquipmentDefinitions_EquipmentsEntry.encode({ key: key as any, value }, writer.uint32(18).fork()).join();
|
|
||||||
});
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): EquipmentDefinitions {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseEquipmentDefinitions();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const entry1 = EquipmentDefinitions_PresetsEntry.decode(reader, reader.uint32());
|
|
||||||
if (entry1.value !== undefined) {
|
|
||||||
message.presets[entry1.key] = entry1.value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const entry2 = EquipmentDefinitions_EquipmentsEntry.decode(reader, reader.uint32());
|
|
||||||
if (entry2.value !== undefined) {
|
|
||||||
message.equipments[entry2.key] = entry2.value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): EquipmentDefinitions {
|
|
||||||
return {
|
|
||||||
presets: isObject(object.presets)
|
|
||||||
? Object.entries(object.presets).reduce<{ [key: string]: EquipmentPreset }>((acc, [key, value]) => {
|
|
||||||
acc[key] = EquipmentPreset.fromJSON(value);
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
: {},
|
|
||||||
equipments: isObject(object.equipments)
|
|
||||||
? Object.entries(object.equipments).reduce<{ [key: number]: Equipment }>((acc, [key, value]) => {
|
|
||||||
acc[globalThis.Number(key)] = Equipment.fromJSON(value);
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
: {},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: EquipmentDefinitions): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.presets) {
|
|
||||||
const entries = Object.entries(message.presets);
|
|
||||||
if (entries.length > 0) {
|
|
||||||
obj.presets = {};
|
|
||||||
entries.forEach(([k, v]) => {
|
|
||||||
obj.presets[k] = EquipmentPreset.toJSON(v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (message.equipments) {
|
|
||||||
const entries = Object.entries(message.equipments);
|
|
||||||
if (entries.length > 0) {
|
|
||||||
obj.equipments = {};
|
|
||||||
entries.forEach(([k, v]) => {
|
|
||||||
obj.equipments[k] = Equipment.toJSON(v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<EquipmentDefinitions>, I>>(base?: I): EquipmentDefinitions {
|
|
||||||
return EquipmentDefinitions.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<EquipmentDefinitions>, I>>(object: I): EquipmentDefinitions {
|
|
||||||
const message = createBaseEquipmentDefinitions();
|
|
||||||
message.presets = Object.entries(object.presets ?? {}).reduce<{ [key: string]: EquipmentPreset }>(
|
|
||||||
(acc, [key, value]) => {
|
|
||||||
if (value !== undefined) {
|
|
||||||
acc[key] = EquipmentPreset.fromPartial(value);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
},
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
message.equipments = Object.entries(object.equipments ?? {}).reduce<{ [key: number]: Equipment }>(
|
|
||||||
(acc, [key, value]) => {
|
|
||||||
if (value !== undefined) {
|
|
||||||
acc[globalThis.Number(key)] = Equipment.fromPartial(value);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
},
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseEquipmentDefinitions_PresetsEntry(): EquipmentDefinitions_PresetsEntry {
|
|
||||||
return { key: "", value: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const EquipmentDefinitions_PresetsEntry: MessageFns<EquipmentDefinitions_PresetsEntry> = {
|
|
||||||
encode(message: EquipmentDefinitions_PresetsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.key !== "") {
|
|
||||||
writer.uint32(10).string(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
EquipmentPreset.encode(message.value, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): EquipmentDefinitions_PresetsEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseEquipmentDefinitions_PresetsEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.key = reader.string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.value = EquipmentPreset.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): EquipmentDefinitions_PresetsEntry {
|
|
||||||
return {
|
|
||||||
key: isSet(object.key) ? globalThis.String(object.key) : "",
|
|
||||||
value: isSet(object.value) ? EquipmentPreset.fromJSON(object.value) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: EquipmentDefinitions_PresetsEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.key !== "") {
|
|
||||||
obj.key = message.key;
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
obj.value = EquipmentPreset.toJSON(message.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<EquipmentDefinitions_PresetsEntry>, I>>(
|
|
||||||
base?: I,
|
|
||||||
): EquipmentDefinitions_PresetsEntry {
|
|
||||||
return EquipmentDefinitions_PresetsEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<EquipmentDefinitions_PresetsEntry>, I>>(
|
|
||||||
object: I,
|
|
||||||
): EquipmentDefinitions_PresetsEntry {
|
|
||||||
const message = createBaseEquipmentDefinitions_PresetsEntry();
|
|
||||||
message.key = object.key ?? "";
|
|
||||||
message.value = (object.value !== undefined && object.value !== null)
|
|
||||||
? EquipmentPreset.fromPartial(object.value)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseEquipmentDefinitions_EquipmentsEntry(): EquipmentDefinitions_EquipmentsEntry {
|
|
||||||
return { key: 0, value: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const EquipmentDefinitions_EquipmentsEntry: MessageFns<EquipmentDefinitions_EquipmentsEntry> = {
|
|
||||||
encode(message: EquipmentDefinitions_EquipmentsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.key !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
Equipment.encode(message.value, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): EquipmentDefinitions_EquipmentsEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseEquipmentDefinitions_EquipmentsEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.key = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.value = Equipment.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): EquipmentDefinitions_EquipmentsEntry {
|
|
||||||
return {
|
|
||||||
key: isSet(object.key) ? globalThis.Number(object.key) : 0,
|
|
||||||
value: isSet(object.value) ? Equipment.fromJSON(object.value) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: EquipmentDefinitions_EquipmentsEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.key !== 0) {
|
|
||||||
obj.key = Math.round(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
obj.value = Equipment.toJSON(message.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<EquipmentDefinitions_EquipmentsEntry>, I>>(
|
|
||||||
base?: I,
|
|
||||||
): EquipmentDefinitions_EquipmentsEntry {
|
|
||||||
return EquipmentDefinitions_EquipmentsEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<EquipmentDefinitions_EquipmentsEntry>, I>>(
|
|
||||||
object: I,
|
|
||||||
): EquipmentDefinitions_EquipmentsEntry {
|
|
||||||
const message = createBaseEquipmentDefinitions_EquipmentsEntry();
|
|
||||||
message.key = object.key ?? 0;
|
|
||||||
message.value = (object.value !== undefined && object.value !== null)
|
|
||||||
? Equipment.fromPartial(object.value)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseEquipment(): Equipment {
|
|
||||||
return { name: undefined, description: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Equipment: MessageFns<Equipment> = {
|
|
||||||
encode(message: Equipment, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
I18nString.encode(message.name, writer.uint32(10).fork()).join();
|
|
||||||
}
|
|
||||||
if (message.description !== undefined) {
|
|
||||||
I18nString.encode(message.description, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Equipment {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseEquipment();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.name = I18nString.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.description = I18nString.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): Equipment {
|
|
||||||
return {
|
|
||||||
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
|
|
||||||
description: isSet(object.description) ? I18nString.fromJSON(object.description) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: Equipment): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
obj.name = I18nString.toJSON(message.name);
|
|
||||||
}
|
|
||||||
if (message.description !== undefined) {
|
|
||||||
obj.description = I18nString.toJSON(message.description);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<Equipment>, I>>(base?: I): Equipment {
|
|
||||||
return Equipment.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<Equipment>, I>>(object: I): Equipment {
|
|
||||||
const message = createBaseEquipment();
|
|
||||||
message.name = (object.name !== undefined && object.name !== null)
|
|
||||||
? I18nString.fromPartial(object.name)
|
|
||||||
: undefined;
|
|
||||||
message.description = (object.description !== undefined && object.description !== null)
|
|
||||||
? I18nString.fromPartial(object.description)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseEquipmentPreset(): EquipmentPreset {
|
|
||||||
return { slots: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const EquipmentPreset: MessageFns<EquipmentPreset> = {
|
|
||||||
encode(message: EquipmentPreset, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
for (const v of message.slots) {
|
|
||||||
EquipmentSlot.encode(v!, writer.uint32(10).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): EquipmentPreset {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseEquipmentPreset();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.slots.push(EquipmentSlot.decode(reader, reader.uint32()));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): EquipmentPreset {
|
|
||||||
return {
|
|
||||||
slots: globalThis.Array.isArray(object?.slots) ? object.slots.map((e: any) => EquipmentSlot.fromJSON(e)) : [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: EquipmentPreset): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.slots?.length) {
|
|
||||||
obj.slots = message.slots.map((e) => EquipmentSlot.toJSON(e));
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<EquipmentPreset>, I>>(base?: I): EquipmentPreset {
|
|
||||||
return EquipmentPreset.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<EquipmentPreset>, I>>(object: I): EquipmentPreset {
|
|
||||||
const message = createBaseEquipmentPreset();
|
|
||||||
message.slots = object.slots?.map((e) => EquipmentSlot.fromPartial(e)) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseEquipmentSlot(): EquipmentSlot {
|
|
||||||
return { left: 0, right: 0 };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const EquipmentSlot: MessageFns<EquipmentSlot> = {
|
|
||||||
encode(message: EquipmentSlot, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.left !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.left);
|
|
||||||
}
|
|
||||||
if (message.right !== 0) {
|
|
||||||
writer.uint32(16).uint32(message.right);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): EquipmentSlot {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseEquipmentSlot();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.left = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 16) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.right = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): EquipmentSlot {
|
|
||||||
return {
|
|
||||||
left: isSet(object.left) ? globalThis.Number(object.left) : 0,
|
|
||||||
right: isSet(object.right) ? globalThis.Number(object.right) : 0,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: EquipmentSlot): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.left !== 0) {
|
|
||||||
obj.left = Math.round(message.left);
|
|
||||||
}
|
|
||||||
if (message.right !== 0) {
|
|
||||||
obj.right = Math.round(message.right);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<EquipmentSlot>, I>>(base?: I): EquipmentSlot {
|
|
||||||
return EquipmentSlot.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<EquipmentSlot>, I>>(object: I): EquipmentSlot {
|
|
||||||
const message = createBaseEquipmentSlot();
|
|
||||||
message.left = object.left ?? 0;
|
|
||||||
message.right = object.right ?? 0;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function isObject(value: any): boolean {
|
|
||||||
return typeof value === "object" && value !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
@@ -1,201 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: gallery.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
import { I18nString } from "./i18n";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export interface Gallery {
|
|
||||||
avatars: Avatar[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Avatar {
|
|
||||||
id: string;
|
|
||||||
name: I18nString | undefined;
|
|
||||||
extension: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseGallery(): Gallery {
|
|
||||||
return { avatars: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Gallery: MessageFns<Gallery> = {
|
|
||||||
encode(message: Gallery, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
for (const v of message.avatars) {
|
|
||||||
Avatar.encode(v!, writer.uint32(10).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Gallery {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseGallery();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.avatars.push(Avatar.decode(reader, reader.uint32()));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): Gallery {
|
|
||||||
return {
|
|
||||||
avatars: globalThis.Array.isArray(object?.avatars) ? object.avatars.map((e: any) => Avatar.fromJSON(e)) : [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: Gallery): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.avatars?.length) {
|
|
||||||
obj.avatars = message.avatars.map((e) => Avatar.toJSON(e));
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<Gallery>, I>>(base?: I): Gallery {
|
|
||||||
return Gallery.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<Gallery>, I>>(object: I): Gallery {
|
|
||||||
const message = createBaseGallery();
|
|
||||||
message.avatars = object.avatars?.map((e) => Avatar.fromPartial(e)) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseAvatar(): Avatar {
|
|
||||||
return { id: "", name: undefined, extension: "" };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Avatar: MessageFns<Avatar> = {
|
|
||||||
encode(message: Avatar, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.id !== "") {
|
|
||||||
writer.uint32(10).string(message.id);
|
|
||||||
}
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
I18nString.encode(message.name, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
if (message.extension !== "") {
|
|
||||||
writer.uint32(26).string(message.extension);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Avatar {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseAvatar();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.id = reader.string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.name = I18nString.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
if (tag !== 26) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.extension = reader.string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): Avatar {
|
|
||||||
return {
|
|
||||||
id: isSet(object.id) ? globalThis.String(object.id) : "",
|
|
||||||
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
|
|
||||||
extension: isSet(object.extension) ? globalThis.String(object.extension) : "",
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: Avatar): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.id !== "") {
|
|
||||||
obj.id = message.id;
|
|
||||||
}
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
obj.name = I18nString.toJSON(message.name);
|
|
||||||
}
|
|
||||||
if (message.extension !== "") {
|
|
||||||
obj.extension = message.extension;
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<Avatar>, I>>(base?: I): Avatar {
|
|
||||||
return Avatar.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<Avatar>, I>>(object: I): Avatar {
|
|
||||||
const message = createBaseAvatar();
|
|
||||||
message.id = object.id ?? "";
|
|
||||||
message.name = (object.name !== undefined && object.name !== null)
|
|
||||||
? I18nString.fromPartial(object.name)
|
|
||||||
: undefined;
|
|
||||||
message.extension = object.extension ?? "";
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
@@ -1,534 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: game_definitions.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
import { I18nString } from "./i18n";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export interface GameDefinitions {
|
|
||||||
version: string;
|
|
||||||
nations: string[];
|
|
||||||
gameModes: { [key: string]: GameMode };
|
|
||||||
roles: { [key: number]: GameModeRole };
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface GameDefinitions_GameModesEntry {
|
|
||||||
key: string;
|
|
||||||
value: GameMode | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface GameDefinitions_RolesEntry {
|
|
||||||
key: number;
|
|
||||||
value: GameModeRole | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface GameMode {
|
|
||||||
name: I18nString | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface GameModeRole {
|
|
||||||
provisions: number[];
|
|
||||||
consumables: number[];
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseGameDefinitions(): GameDefinitions {
|
|
||||||
return { version: "", nations: [], gameModes: {}, roles: {} };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const GameDefinitions: MessageFns<GameDefinitions> = {
|
|
||||||
encode(message: GameDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.version !== "") {
|
|
||||||
writer.uint32(10).string(message.version);
|
|
||||||
}
|
|
||||||
for (const v of message.nations) {
|
|
||||||
writer.uint32(18).string(v!);
|
|
||||||
}
|
|
||||||
Object.entries(message.gameModes).forEach(([key, value]) => {
|
|
||||||
GameDefinitions_GameModesEntry.encode({ key: key as any, value }, writer.uint32(26).fork()).join();
|
|
||||||
});
|
|
||||||
Object.entries(message.roles).forEach(([key, value]) => {
|
|
||||||
GameDefinitions_RolesEntry.encode({ key: key as any, value }, writer.uint32(34).fork()).join();
|
|
||||||
});
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): GameDefinitions {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseGameDefinitions();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.version = reader.string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.nations.push(reader.string());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
if (tag !== 26) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const entry3 = GameDefinitions_GameModesEntry.decode(reader, reader.uint32());
|
|
||||||
if (entry3.value !== undefined) {
|
|
||||||
message.gameModes[entry3.key] = entry3.value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 4: {
|
|
||||||
if (tag !== 34) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const entry4 = GameDefinitions_RolesEntry.decode(reader, reader.uint32());
|
|
||||||
if (entry4.value !== undefined) {
|
|
||||||
message.roles[entry4.key] = entry4.value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): GameDefinitions {
|
|
||||||
return {
|
|
||||||
version: isSet(object.version) ? globalThis.String(object.version) : "",
|
|
||||||
nations: globalThis.Array.isArray(object?.nations) ? object.nations.map((e: any) => globalThis.String(e)) : [],
|
|
||||||
gameModes: isObject(object.gameModes)
|
|
||||||
? Object.entries(object.gameModes).reduce<{ [key: string]: GameMode }>((acc, [key, value]) => {
|
|
||||||
acc[key] = GameMode.fromJSON(value);
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
: {},
|
|
||||||
roles: isObject(object.roles)
|
|
||||||
? Object.entries(object.roles).reduce<{ [key: number]: GameModeRole }>((acc, [key, value]) => {
|
|
||||||
acc[globalThis.Number(key)] = GameModeRole.fromJSON(value);
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
: {},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: GameDefinitions): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.version !== "") {
|
|
||||||
obj.version = message.version;
|
|
||||||
}
|
|
||||||
if (message.nations?.length) {
|
|
||||||
obj.nations = message.nations;
|
|
||||||
}
|
|
||||||
if (message.gameModes) {
|
|
||||||
const entries = Object.entries(message.gameModes);
|
|
||||||
if (entries.length > 0) {
|
|
||||||
obj.gameModes = {};
|
|
||||||
entries.forEach(([k, v]) => {
|
|
||||||
obj.gameModes[k] = GameMode.toJSON(v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (message.roles) {
|
|
||||||
const entries = Object.entries(message.roles);
|
|
||||||
if (entries.length > 0) {
|
|
||||||
obj.roles = {};
|
|
||||||
entries.forEach(([k, v]) => {
|
|
||||||
obj.roles[k] = GameModeRole.toJSON(v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<GameDefinitions>, I>>(base?: I): GameDefinitions {
|
|
||||||
return GameDefinitions.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<GameDefinitions>, I>>(object: I): GameDefinitions {
|
|
||||||
const message = createBaseGameDefinitions();
|
|
||||||
message.version = object.version ?? "";
|
|
||||||
message.nations = object.nations?.map((e) => e) || [];
|
|
||||||
message.gameModes = Object.entries(object.gameModes ?? {}).reduce<{ [key: string]: GameMode }>(
|
|
||||||
(acc, [key, value]) => {
|
|
||||||
if (value !== undefined) {
|
|
||||||
acc[key] = GameMode.fromPartial(value);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
},
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
message.roles = Object.entries(object.roles ?? {}).reduce<{ [key: number]: GameModeRole }>((acc, [key, value]) => {
|
|
||||||
if (value !== undefined) {
|
|
||||||
acc[globalThis.Number(key)] = GameModeRole.fromPartial(value);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, {});
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseGameDefinitions_GameModesEntry(): GameDefinitions_GameModesEntry {
|
|
||||||
return { key: "", value: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const GameDefinitions_GameModesEntry: MessageFns<GameDefinitions_GameModesEntry> = {
|
|
||||||
encode(message: GameDefinitions_GameModesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.key !== "") {
|
|
||||||
writer.uint32(10).string(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
GameMode.encode(message.value, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): GameDefinitions_GameModesEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseGameDefinitions_GameModesEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.key = reader.string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.value = GameMode.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): GameDefinitions_GameModesEntry {
|
|
||||||
return {
|
|
||||||
key: isSet(object.key) ? globalThis.String(object.key) : "",
|
|
||||||
value: isSet(object.value) ? GameMode.fromJSON(object.value) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: GameDefinitions_GameModesEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.key !== "") {
|
|
||||||
obj.key = message.key;
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
obj.value = GameMode.toJSON(message.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<GameDefinitions_GameModesEntry>, I>>(base?: I): GameDefinitions_GameModesEntry {
|
|
||||||
return GameDefinitions_GameModesEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<GameDefinitions_GameModesEntry>, I>>(
|
|
||||||
object: I,
|
|
||||||
): GameDefinitions_GameModesEntry {
|
|
||||||
const message = createBaseGameDefinitions_GameModesEntry();
|
|
||||||
message.key = object.key ?? "";
|
|
||||||
message.value = (object.value !== undefined && object.value !== null)
|
|
||||||
? GameMode.fromPartial(object.value)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseGameDefinitions_RolesEntry(): GameDefinitions_RolesEntry {
|
|
||||||
return { key: 0, value: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const GameDefinitions_RolesEntry: MessageFns<GameDefinitions_RolesEntry> = {
|
|
||||||
encode(message: GameDefinitions_RolesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.key !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
GameModeRole.encode(message.value, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): GameDefinitions_RolesEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseGameDefinitions_RolesEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.key = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.value = GameModeRole.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): GameDefinitions_RolesEntry {
|
|
||||||
return {
|
|
||||||
key: isSet(object.key) ? globalThis.Number(object.key) : 0,
|
|
||||||
value: isSet(object.value) ? GameModeRole.fromJSON(object.value) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: GameDefinitions_RolesEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.key !== 0) {
|
|
||||||
obj.key = Math.round(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
obj.value = GameModeRole.toJSON(message.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<GameDefinitions_RolesEntry>, I>>(base?: I): GameDefinitions_RolesEntry {
|
|
||||||
return GameDefinitions_RolesEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<GameDefinitions_RolesEntry>, I>>(object: I): GameDefinitions_RolesEntry {
|
|
||||||
const message = createBaseGameDefinitions_RolesEntry();
|
|
||||||
message.key = object.key ?? 0;
|
|
||||||
message.value = (object.value !== undefined && object.value !== null)
|
|
||||||
? GameModeRole.fromPartial(object.value)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseGameMode(): GameMode {
|
|
||||||
return { name: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const GameMode: MessageFns<GameMode> = {
|
|
||||||
encode(message: GameMode, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
I18nString.encode(message.name, writer.uint32(10).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): GameMode {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseGameMode();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.name = I18nString.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): GameMode {
|
|
||||||
return { name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined };
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: GameMode): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
obj.name = I18nString.toJSON(message.name);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<GameMode>, I>>(base?: I): GameMode {
|
|
||||||
return GameMode.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<GameMode>, I>>(object: I): GameMode {
|
|
||||||
const message = createBaseGameMode();
|
|
||||||
message.name = (object.name !== undefined && object.name !== null)
|
|
||||||
? I18nString.fromPartial(object.name)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseGameModeRole(): GameModeRole {
|
|
||||||
return { provisions: [], consumables: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const GameModeRole: MessageFns<GameModeRole> = {
|
|
||||||
encode(message: GameModeRole, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
for (const v of message.provisions) {
|
|
||||||
writer.uint32(8).uint32(v!);
|
|
||||||
}
|
|
||||||
for (const v of message.consumables) {
|
|
||||||
writer.uint32(16).uint32(v!);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): GameModeRole {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseGameModeRole();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag === 8) {
|
|
||||||
message.provisions.push(reader.uint32());
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tag === 10) {
|
|
||||||
const end2 = reader.uint32() + reader.pos;
|
|
||||||
while (reader.pos < end2) {
|
|
||||||
message.provisions.push(reader.uint32());
|
|
||||||
}
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag === 16) {
|
|
||||||
message.consumables.push(reader.uint32());
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tag === 18) {
|
|
||||||
const end2 = reader.uint32() + reader.pos;
|
|
||||||
while (reader.pos < end2) {
|
|
||||||
message.consumables.push(reader.uint32());
|
|
||||||
}
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): GameModeRole {
|
|
||||||
return {
|
|
||||||
provisions: globalThis.Array.isArray(object?.provisions)
|
|
||||||
? object.provisions.map((e: any) => globalThis.Number(e))
|
|
||||||
: [],
|
|
||||||
consumables: globalThis.Array.isArray(object?.consumables)
|
|
||||||
? object.consumables.map((e: any) => globalThis.Number(e))
|
|
||||||
: [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: GameModeRole): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.provisions?.length) {
|
|
||||||
obj.provisions = message.provisions.map((e) => Math.round(e));
|
|
||||||
}
|
|
||||||
if (message.consumables?.length) {
|
|
||||||
obj.consumables = message.consumables.map((e) => Math.round(e));
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<GameModeRole>, I>>(base?: I): GameModeRole {
|
|
||||||
return GameModeRole.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<GameModeRole>, I>>(object: I): GameModeRole {
|
|
||||||
const message = createBaseGameModeRole();
|
|
||||||
message.provisions = object.provisions?.map((e) => e) || [];
|
|
||||||
message.consumables = object.consumables?.map((e) => e) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function isObject(value: any): boolean {
|
|
||||||
return typeof value === "object" && value !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
@@ -1,204 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: i18n.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export interface I18nString {
|
|
||||||
locales: { [key: string]: string };
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface I18nString_LocalesEntry {
|
|
||||||
key: string;
|
|
||||||
value: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseI18nString(): I18nString {
|
|
||||||
return { locales: {} };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const I18nString: MessageFns<I18nString> = {
|
|
||||||
encode(message: I18nString, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
Object.entries(message.locales).forEach(([key, value]) => {
|
|
||||||
I18nString_LocalesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
|
|
||||||
});
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): I18nString {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseI18nString();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const entry1 = I18nString_LocalesEntry.decode(reader, reader.uint32());
|
|
||||||
if (entry1.value !== undefined) {
|
|
||||||
message.locales[entry1.key] = entry1.value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): I18nString {
|
|
||||||
return {
|
|
||||||
locales: isObject(object.locales)
|
|
||||||
? Object.entries(object.locales).reduce<{ [key: string]: string }>((acc, [key, value]) => {
|
|
||||||
acc[key] = String(value);
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
: {},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: I18nString): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.locales) {
|
|
||||||
const entries = Object.entries(message.locales);
|
|
||||||
if (entries.length > 0) {
|
|
||||||
obj.locales = {};
|
|
||||||
entries.forEach(([k, v]) => {
|
|
||||||
obj.locales[k] = v;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<I18nString>, I>>(base?: I): I18nString {
|
|
||||||
return I18nString.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<I18nString>, I>>(object: I): I18nString {
|
|
||||||
const message = createBaseI18nString();
|
|
||||||
message.locales = Object.entries(object.locales ?? {}).reduce<{ [key: string]: string }>((acc, [key, value]) => {
|
|
||||||
if (value !== undefined) {
|
|
||||||
acc[key] = globalThis.String(value);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, {});
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseI18nString_LocalesEntry(): I18nString_LocalesEntry {
|
|
||||||
return { key: "", value: "" };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const I18nString_LocalesEntry: MessageFns<I18nString_LocalesEntry> = {
|
|
||||||
encode(message: I18nString_LocalesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.key !== "") {
|
|
||||||
writer.uint32(10).string(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== "") {
|
|
||||||
writer.uint32(18).string(message.value);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): I18nString_LocalesEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseI18nString_LocalesEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.key = reader.string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.value = reader.string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): I18nString_LocalesEntry {
|
|
||||||
return {
|
|
||||||
key: isSet(object.key) ? globalThis.String(object.key) : "",
|
|
||||||
value: isSet(object.value) ? globalThis.String(object.value) : "",
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: I18nString_LocalesEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.key !== "") {
|
|
||||||
obj.key = message.key;
|
|
||||||
}
|
|
||||||
if (message.value !== "") {
|
|
||||||
obj.value = message.value;
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<I18nString_LocalesEntry>, I>>(base?: I): I18nString_LocalesEntry {
|
|
||||||
return I18nString_LocalesEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<I18nString_LocalesEntry>, I>>(object: I): I18nString_LocalesEntry {
|
|
||||||
const message = createBaseI18nString_LocalesEntry();
|
|
||||||
message.key = object.key ?? "";
|
|
||||||
message.value = object.value ?? "";
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function isObject(value: any): boolean {
|
|
||||||
return typeof value === "object" && value !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
// @ts-nocheck
|
|
||||||
export * from "./average_definitions.ts";
|
|
||||||
export * from "./camouflage_definitions.ts";
|
|
||||||
export * from "./consumable_definitions.ts";
|
|
||||||
export * from "./equipment_definitions.ts";
|
|
||||||
export * from "./gallery.ts";
|
|
||||||
export * from "./game_definitions.ts";
|
|
||||||
export * from "./i18n.ts";
|
|
||||||
export * from "./map_definitions.ts";
|
|
||||||
export * from "./model_definitions.ts";
|
|
||||||
export * from "./popular_tanks.ts";
|
|
||||||
export * from "./provision_definitions.ts";
|
|
||||||
export * from "./rating_leaderboard.ts";
|
|
||||||
export * from "./reviews.ts";
|
|
||||||
export * from "./skill_definitions.ts";
|
|
||||||
export * from "./tank_definitions.ts";
|
|
||||||
@@ -1,290 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: map_definitions.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
import { I18nString } from "./i18n";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export interface MapDefinitions {
|
|
||||||
maps: { [key: number]: MapDefinition };
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MapDefinitions_MapsEntry {
|
|
||||||
key: number;
|
|
||||||
value: MapDefinition | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MapDefinition {
|
|
||||||
id: number;
|
|
||||||
name: I18nString | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseMapDefinitions(): MapDefinitions {
|
|
||||||
return { maps: {} };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const MapDefinitions: MessageFns<MapDefinitions> = {
|
|
||||||
encode(message: MapDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
Object.entries(message.maps).forEach(([key, value]) => {
|
|
||||||
MapDefinitions_MapsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
|
|
||||||
});
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): MapDefinitions {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseMapDefinitions();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const entry1 = MapDefinitions_MapsEntry.decode(reader, reader.uint32());
|
|
||||||
if (entry1.value !== undefined) {
|
|
||||||
message.maps[entry1.key] = entry1.value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): MapDefinitions {
|
|
||||||
return {
|
|
||||||
maps: isObject(object.maps)
|
|
||||||
? Object.entries(object.maps).reduce<{ [key: number]: MapDefinition }>((acc, [key, value]) => {
|
|
||||||
acc[globalThis.Number(key)] = MapDefinition.fromJSON(value);
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
: {},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: MapDefinitions): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.maps) {
|
|
||||||
const entries = Object.entries(message.maps);
|
|
||||||
if (entries.length > 0) {
|
|
||||||
obj.maps = {};
|
|
||||||
entries.forEach(([k, v]) => {
|
|
||||||
obj.maps[k] = MapDefinition.toJSON(v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<MapDefinitions>, I>>(base?: I): MapDefinitions {
|
|
||||||
return MapDefinitions.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<MapDefinitions>, I>>(object: I): MapDefinitions {
|
|
||||||
const message = createBaseMapDefinitions();
|
|
||||||
message.maps = Object.entries(object.maps ?? {}).reduce<{ [key: number]: MapDefinition }>((acc, [key, value]) => {
|
|
||||||
if (value !== undefined) {
|
|
||||||
acc[globalThis.Number(key)] = MapDefinition.fromPartial(value);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, {});
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseMapDefinitions_MapsEntry(): MapDefinitions_MapsEntry {
|
|
||||||
return { key: 0, value: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const MapDefinitions_MapsEntry: MessageFns<MapDefinitions_MapsEntry> = {
|
|
||||||
encode(message: MapDefinitions_MapsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.key !== 0) {
|
|
||||||
writer.uint32(8).int32(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
MapDefinition.encode(message.value, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): MapDefinitions_MapsEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseMapDefinitions_MapsEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.key = reader.int32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.value = MapDefinition.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): MapDefinitions_MapsEntry {
|
|
||||||
return {
|
|
||||||
key: isSet(object.key) ? globalThis.Number(object.key) : 0,
|
|
||||||
value: isSet(object.value) ? MapDefinition.fromJSON(object.value) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: MapDefinitions_MapsEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.key !== 0) {
|
|
||||||
obj.key = Math.round(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
obj.value = MapDefinition.toJSON(message.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<MapDefinitions_MapsEntry>, I>>(base?: I): MapDefinitions_MapsEntry {
|
|
||||||
return MapDefinitions_MapsEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<MapDefinitions_MapsEntry>, I>>(object: I): MapDefinitions_MapsEntry {
|
|
||||||
const message = createBaseMapDefinitions_MapsEntry();
|
|
||||||
message.key = object.key ?? 0;
|
|
||||||
message.value = (object.value !== undefined && object.value !== null)
|
|
||||||
? MapDefinition.fromPartial(object.value)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseMapDefinition(): MapDefinition {
|
|
||||||
return { id: 0, name: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const MapDefinition: MessageFns<MapDefinition> = {
|
|
||||||
encode(message: MapDefinition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.id !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.id);
|
|
||||||
}
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
I18nString.encode(message.name, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): MapDefinition {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseMapDefinition();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.id = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.name = I18nString.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): MapDefinition {
|
|
||||||
return {
|
|
||||||
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
|
|
||||||
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: MapDefinition): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.id !== 0) {
|
|
||||||
obj.id = Math.round(message.id);
|
|
||||||
}
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
obj.name = I18nString.toJSON(message.name);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<MapDefinition>, I>>(base?: I): MapDefinition {
|
|
||||||
return MapDefinition.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<MapDefinition>, I>>(object: I): MapDefinition {
|
|
||||||
const message = createBaseMapDefinition();
|
|
||||||
message.id = object.id ?? 0;
|
|
||||||
message.name = (object.name !== undefined && object.name !== null)
|
|
||||||
? I18nString.fromPartial(object.name)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function isObject(value: any): boolean {
|
|
||||||
return typeof value === "object" && value !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -1,182 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: popular_tanks.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export interface PopularTanks {
|
|
||||||
tanks: PopularTank[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface PopularTank {
|
|
||||||
id: number;
|
|
||||||
/** views in the last 7 days */
|
|
||||||
views: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBasePopularTanks(): PopularTanks {
|
|
||||||
return { tanks: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const PopularTanks: MessageFns<PopularTanks> = {
|
|
||||||
encode(message: PopularTanks, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
for (const v of message.tanks) {
|
|
||||||
PopularTank.encode(v!, writer.uint32(10).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): PopularTanks {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBasePopularTanks();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.tanks.push(PopularTank.decode(reader, reader.uint32()));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): PopularTanks {
|
|
||||||
return {
|
|
||||||
tanks: globalThis.Array.isArray(object?.tanks) ? object.tanks.map((e: any) => PopularTank.fromJSON(e)) : [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: PopularTanks): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.tanks?.length) {
|
|
||||||
obj.tanks = message.tanks.map((e) => PopularTank.toJSON(e));
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<PopularTanks>, I>>(base?: I): PopularTanks {
|
|
||||||
return PopularTanks.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<PopularTanks>, I>>(object: I): PopularTanks {
|
|
||||||
const message = createBasePopularTanks();
|
|
||||||
message.tanks = object.tanks?.map((e) => PopularTank.fromPartial(e)) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBasePopularTank(): PopularTank {
|
|
||||||
return { id: 0, views: 0 };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const PopularTank: MessageFns<PopularTank> = {
|
|
||||||
encode(message: PopularTank, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.id !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.id);
|
|
||||||
}
|
|
||||||
if (message.views !== 0) {
|
|
||||||
writer.uint32(16).uint32(message.views);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): PopularTank {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBasePopularTank();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.id = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 16) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.views = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): PopularTank {
|
|
||||||
return {
|
|
||||||
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
|
|
||||||
views: isSet(object.views) ? globalThis.Number(object.views) : 0,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: PopularTank): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.id !== 0) {
|
|
||||||
obj.id = Math.round(message.id);
|
|
||||||
}
|
|
||||||
if (message.views !== 0) {
|
|
||||||
obj.views = Math.round(message.views);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<PopularTank>, I>>(base?: I): PopularTank {
|
|
||||||
return PopularTank.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<PopularTank>, I>>(object: I): PopularTank {
|
|
||||||
const message = createBasePopularTank();
|
|
||||||
message.id = object.id ?? 0;
|
|
||||||
message.views = object.views ?? 0;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
syntax = "proto2";
|
|
||||||
|
|
||||||
package blitzkit;
|
|
||||||
|
|
||||||
import "consumable_definitions.proto";
|
|
||||||
import "i18n.proto";
|
|
||||||
|
|
||||||
message ProvisionDefinitions {
|
|
||||||
map<uint32, Provision> provisions = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message Provision {
|
|
||||||
required uint32 id = 1;
|
|
||||||
required I18nString name = 2;
|
|
||||||
optional float crew = 3;
|
|
||||||
required bool game_mode_exclusive = 5;
|
|
||||||
repeated ConsumableTankFilter include = 6;
|
|
||||||
repeated ConsumableTankFilter exclude = 7;
|
|
||||||
}
|
|
||||||
@@ -1,370 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: provision_definitions.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
import { ConsumableTankFilter } from "./consumable_definitions";
|
|
||||||
import { I18nString } from "./i18n";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export interface ProvisionDefinitions {
|
|
||||||
provisions: { [key: number]: Provision };
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ProvisionDefinitions_ProvisionsEntry {
|
|
||||||
key: number;
|
|
||||||
value: Provision | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Provision {
|
|
||||||
id: number;
|
|
||||||
name: I18nString | undefined;
|
|
||||||
crew?: number | undefined;
|
|
||||||
game_mode_exclusive: boolean;
|
|
||||||
include: ConsumableTankFilter[];
|
|
||||||
exclude: ConsumableTankFilter[];
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseProvisionDefinitions(): ProvisionDefinitions {
|
|
||||||
return { provisions: {} };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ProvisionDefinitions: MessageFns<ProvisionDefinitions> = {
|
|
||||||
encode(message: ProvisionDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
Object.entries(message.provisions).forEach(([key, value]) => {
|
|
||||||
ProvisionDefinitions_ProvisionsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
|
|
||||||
});
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): ProvisionDefinitions {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseProvisionDefinitions();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const entry1 = ProvisionDefinitions_ProvisionsEntry.decode(reader, reader.uint32());
|
|
||||||
if (entry1.value !== undefined) {
|
|
||||||
message.provisions[entry1.key] = entry1.value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): ProvisionDefinitions {
|
|
||||||
return {
|
|
||||||
provisions: isObject(object.provisions)
|
|
||||||
? Object.entries(object.provisions).reduce<{ [key: number]: Provision }>((acc, [key, value]) => {
|
|
||||||
acc[globalThis.Number(key)] = Provision.fromJSON(value);
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
: {},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: ProvisionDefinitions): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.provisions) {
|
|
||||||
const entries = Object.entries(message.provisions);
|
|
||||||
if (entries.length > 0) {
|
|
||||||
obj.provisions = {};
|
|
||||||
entries.forEach(([k, v]) => {
|
|
||||||
obj.provisions[k] = Provision.toJSON(v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<ProvisionDefinitions>, I>>(base?: I): ProvisionDefinitions {
|
|
||||||
return ProvisionDefinitions.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<ProvisionDefinitions>, I>>(object: I): ProvisionDefinitions {
|
|
||||||
const message = createBaseProvisionDefinitions();
|
|
||||||
message.provisions = Object.entries(object.provisions ?? {}).reduce<{ [key: number]: Provision }>(
|
|
||||||
(acc, [key, value]) => {
|
|
||||||
if (value !== undefined) {
|
|
||||||
acc[globalThis.Number(key)] = Provision.fromPartial(value);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
},
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseProvisionDefinitions_ProvisionsEntry(): ProvisionDefinitions_ProvisionsEntry {
|
|
||||||
return { key: 0, value: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ProvisionDefinitions_ProvisionsEntry: MessageFns<ProvisionDefinitions_ProvisionsEntry> = {
|
|
||||||
encode(message: ProvisionDefinitions_ProvisionsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.key !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
Provision.encode(message.value, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): ProvisionDefinitions_ProvisionsEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseProvisionDefinitions_ProvisionsEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.key = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.value = Provision.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): ProvisionDefinitions_ProvisionsEntry {
|
|
||||||
return {
|
|
||||||
key: isSet(object.key) ? globalThis.Number(object.key) : 0,
|
|
||||||
value: isSet(object.value) ? Provision.fromJSON(object.value) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: ProvisionDefinitions_ProvisionsEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.key !== 0) {
|
|
||||||
obj.key = Math.round(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
obj.value = Provision.toJSON(message.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<ProvisionDefinitions_ProvisionsEntry>, I>>(
|
|
||||||
base?: I,
|
|
||||||
): ProvisionDefinitions_ProvisionsEntry {
|
|
||||||
return ProvisionDefinitions_ProvisionsEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<ProvisionDefinitions_ProvisionsEntry>, I>>(
|
|
||||||
object: I,
|
|
||||||
): ProvisionDefinitions_ProvisionsEntry {
|
|
||||||
const message = createBaseProvisionDefinitions_ProvisionsEntry();
|
|
||||||
message.key = object.key ?? 0;
|
|
||||||
message.value = (object.value !== undefined && object.value !== null)
|
|
||||||
? Provision.fromPartial(object.value)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseProvision(): Provision {
|
|
||||||
return { id: 0, name: undefined, crew: 0, game_mode_exclusive: false, include: [], exclude: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Provision: MessageFns<Provision> = {
|
|
||||||
encode(message: Provision, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.id !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.id);
|
|
||||||
}
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
I18nString.encode(message.name, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
if (message.crew !== undefined && message.crew !== 0) {
|
|
||||||
writer.uint32(29).float(message.crew);
|
|
||||||
}
|
|
||||||
if (message.game_mode_exclusive !== false) {
|
|
||||||
writer.uint32(40).bool(message.game_mode_exclusive);
|
|
||||||
}
|
|
||||||
for (const v of message.include) {
|
|
||||||
ConsumableTankFilter.encode(v!, writer.uint32(50).fork()).join();
|
|
||||||
}
|
|
||||||
for (const v of message.exclude) {
|
|
||||||
ConsumableTankFilter.encode(v!, writer.uint32(58).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Provision {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseProvision();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.id = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.name = I18nString.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
if (tag !== 29) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.crew = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 5: {
|
|
||||||
if (tag !== 40) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.game_mode_exclusive = reader.bool();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 6: {
|
|
||||||
if (tag !== 50) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.include.push(ConsumableTankFilter.decode(reader, reader.uint32()));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 7: {
|
|
||||||
if (tag !== 58) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.exclude.push(ConsumableTankFilter.decode(reader, reader.uint32()));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): Provision {
|
|
||||||
return {
|
|
||||||
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
|
|
||||||
name: isSet(object.name) ? I18nString.fromJSON(object.name) : undefined,
|
|
||||||
crew: isSet(object.crew) ? globalThis.Number(object.crew) : 0,
|
|
||||||
game_mode_exclusive: isSet(object.game_mode_exclusive) ? globalThis.Boolean(object.game_mode_exclusive) : false,
|
|
||||||
include: globalThis.Array.isArray(object?.include)
|
|
||||||
? object.include.map((e: any) => ConsumableTankFilter.fromJSON(e))
|
|
||||||
: [],
|
|
||||||
exclude: globalThis.Array.isArray(object?.exclude)
|
|
||||||
? object.exclude.map((e: any) => ConsumableTankFilter.fromJSON(e))
|
|
||||||
: [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: Provision): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.id !== 0) {
|
|
||||||
obj.id = Math.round(message.id);
|
|
||||||
}
|
|
||||||
if (message.name !== undefined) {
|
|
||||||
obj.name = I18nString.toJSON(message.name);
|
|
||||||
}
|
|
||||||
if (message.crew !== undefined && message.crew !== 0) {
|
|
||||||
obj.crew = message.crew;
|
|
||||||
}
|
|
||||||
if (message.game_mode_exclusive !== false) {
|
|
||||||
obj.game_mode_exclusive = message.game_mode_exclusive;
|
|
||||||
}
|
|
||||||
if (message.include?.length) {
|
|
||||||
obj.include = message.include.map((e) => ConsumableTankFilter.toJSON(e));
|
|
||||||
}
|
|
||||||
if (message.exclude?.length) {
|
|
||||||
obj.exclude = message.exclude.map((e) => ConsumableTankFilter.toJSON(e));
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<Provision>, I>>(base?: I): Provision {
|
|
||||||
return Provision.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<Provision>, I>>(object: I): Provision {
|
|
||||||
const message = createBaseProvision();
|
|
||||||
message.id = object.id ?? 0;
|
|
||||||
message.name = (object.name !== undefined && object.name !== null)
|
|
||||||
? I18nString.fromPartial(object.name)
|
|
||||||
: undefined;
|
|
||||||
message.crew = object.crew ?? 0;
|
|
||||||
message.game_mode_exclusive = object.game_mode_exclusive ?? false;
|
|
||||||
message.include = object.include?.map((e) => ConsumableTankFilter.fromPartial(e)) || [];
|
|
||||||
message.exclude = object.exclude?.map((e) => ConsumableTankFilter.fromPartial(e)) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function isObject(value: any): boolean {
|
|
||||||
return typeof value === "object" && value !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
@@ -1,511 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: rating_leaderboard.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export interface RatingLeaderboard {
|
|
||||||
version?: { $case: "v1"; value: RatingLeaderboardV1 } | { $case: "v2"; value: RatingLeaderboardV2 } | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface RatingLeaderboardV1 {
|
|
||||||
entries: RatingLeaderboardEntryV1[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface RatingLeaderboardEntryV1 {
|
|
||||||
id: number;
|
|
||||||
score: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface RatingLeaderboardV2 {
|
|
||||||
entries: RatingLeaderboardEntryV2[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface RatingLeaderboardEntryV2 {
|
|
||||||
id: number;
|
|
||||||
score: number;
|
|
||||||
battles: number;
|
|
||||||
wins: number;
|
|
||||||
survived: number;
|
|
||||||
damage: number;
|
|
||||||
kills: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseRatingLeaderboard(): RatingLeaderboard {
|
|
||||||
return { version: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const RatingLeaderboard: MessageFns<RatingLeaderboard> = {
|
|
||||||
encode(message: RatingLeaderboard, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
switch (message.version?.$case) {
|
|
||||||
case "v1":
|
|
||||||
RatingLeaderboardV1.encode(message.version.value, writer.uint32(10).fork()).join();
|
|
||||||
break;
|
|
||||||
case "v2":
|
|
||||||
RatingLeaderboardV2.encode(message.version.value, writer.uint32(18).fork()).join();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): RatingLeaderboard {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseRatingLeaderboard();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.version = { $case: "v1", value: RatingLeaderboardV1.decode(reader, reader.uint32()) };
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.version = { $case: "v2", value: RatingLeaderboardV2.decode(reader, reader.uint32()) };
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): RatingLeaderboard {
|
|
||||||
return {
|
|
||||||
version: isSet(object.v1)
|
|
||||||
? { $case: "v1", value: RatingLeaderboardV1.fromJSON(object.v1) }
|
|
||||||
: isSet(object.v2)
|
|
||||||
? { $case: "v2", value: RatingLeaderboardV2.fromJSON(object.v2) }
|
|
||||||
: undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: RatingLeaderboard): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.version?.$case === "v1") {
|
|
||||||
obj.v1 = RatingLeaderboardV1.toJSON(message.version.value);
|
|
||||||
} else if (message.version?.$case === "v2") {
|
|
||||||
obj.v2 = RatingLeaderboardV2.toJSON(message.version.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<RatingLeaderboard>, I>>(base?: I): RatingLeaderboard {
|
|
||||||
return RatingLeaderboard.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<RatingLeaderboard>, I>>(object: I): RatingLeaderboard {
|
|
||||||
const message = createBaseRatingLeaderboard();
|
|
||||||
switch (object.version?.$case) {
|
|
||||||
case "v1": {
|
|
||||||
if (object.version?.value !== undefined && object.version?.value !== null) {
|
|
||||||
message.version = { $case: "v1", value: RatingLeaderboardV1.fromPartial(object.version.value) };
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "v2": {
|
|
||||||
if (object.version?.value !== undefined && object.version?.value !== null) {
|
|
||||||
message.version = { $case: "v2", value: RatingLeaderboardV2.fromPartial(object.version.value) };
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseRatingLeaderboardV1(): RatingLeaderboardV1 {
|
|
||||||
return { entries: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const RatingLeaderboardV1: MessageFns<RatingLeaderboardV1> = {
|
|
||||||
encode(message: RatingLeaderboardV1, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
for (const v of message.entries) {
|
|
||||||
RatingLeaderboardEntryV1.encode(v!, writer.uint32(10).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): RatingLeaderboardV1 {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseRatingLeaderboardV1();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.entries.push(RatingLeaderboardEntryV1.decode(reader, reader.uint32()));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): RatingLeaderboardV1 {
|
|
||||||
return {
|
|
||||||
entries: globalThis.Array.isArray(object?.entries)
|
|
||||||
? object.entries.map((e: any) => RatingLeaderboardEntryV1.fromJSON(e))
|
|
||||||
: [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: RatingLeaderboardV1): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.entries?.length) {
|
|
||||||
obj.entries = message.entries.map((e) => RatingLeaderboardEntryV1.toJSON(e));
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<RatingLeaderboardV1>, I>>(base?: I): RatingLeaderboardV1 {
|
|
||||||
return RatingLeaderboardV1.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<RatingLeaderboardV1>, I>>(object: I): RatingLeaderboardV1 {
|
|
||||||
const message = createBaseRatingLeaderboardV1();
|
|
||||||
message.entries = object.entries?.map((e) => RatingLeaderboardEntryV1.fromPartial(e)) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseRatingLeaderboardEntryV1(): RatingLeaderboardEntryV1 {
|
|
||||||
return { id: 0, score: 0 };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const RatingLeaderboardEntryV1: MessageFns<RatingLeaderboardEntryV1> = {
|
|
||||||
encode(message: RatingLeaderboardEntryV1, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.id !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.id);
|
|
||||||
}
|
|
||||||
if (message.score !== 0) {
|
|
||||||
writer.uint32(16).uint32(message.score);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): RatingLeaderboardEntryV1 {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseRatingLeaderboardEntryV1();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.id = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 16) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.score = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): RatingLeaderboardEntryV1 {
|
|
||||||
return {
|
|
||||||
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
|
|
||||||
score: isSet(object.score) ? globalThis.Number(object.score) : 0,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: RatingLeaderboardEntryV1): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.id !== 0) {
|
|
||||||
obj.id = Math.round(message.id);
|
|
||||||
}
|
|
||||||
if (message.score !== 0) {
|
|
||||||
obj.score = Math.round(message.score);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<RatingLeaderboardEntryV1>, I>>(base?: I): RatingLeaderboardEntryV1 {
|
|
||||||
return RatingLeaderboardEntryV1.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<RatingLeaderboardEntryV1>, I>>(object: I): RatingLeaderboardEntryV1 {
|
|
||||||
const message = createBaseRatingLeaderboardEntryV1();
|
|
||||||
message.id = object.id ?? 0;
|
|
||||||
message.score = object.score ?? 0;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseRatingLeaderboardV2(): RatingLeaderboardV2 {
|
|
||||||
return { entries: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const RatingLeaderboardV2: MessageFns<RatingLeaderboardV2> = {
|
|
||||||
encode(message: RatingLeaderboardV2, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
for (const v of message.entries) {
|
|
||||||
RatingLeaderboardEntryV2.encode(v!, writer.uint32(10).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): RatingLeaderboardV2 {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseRatingLeaderboardV2();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.entries.push(RatingLeaderboardEntryV2.decode(reader, reader.uint32()));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): RatingLeaderboardV2 {
|
|
||||||
return {
|
|
||||||
entries: globalThis.Array.isArray(object?.entries)
|
|
||||||
? object.entries.map((e: any) => RatingLeaderboardEntryV2.fromJSON(e))
|
|
||||||
: [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: RatingLeaderboardV2): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.entries?.length) {
|
|
||||||
obj.entries = message.entries.map((e) => RatingLeaderboardEntryV2.toJSON(e));
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<RatingLeaderboardV2>, I>>(base?: I): RatingLeaderboardV2 {
|
|
||||||
return RatingLeaderboardV2.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<RatingLeaderboardV2>, I>>(object: I): RatingLeaderboardV2 {
|
|
||||||
const message = createBaseRatingLeaderboardV2();
|
|
||||||
message.entries = object.entries?.map((e) => RatingLeaderboardEntryV2.fromPartial(e)) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseRatingLeaderboardEntryV2(): RatingLeaderboardEntryV2 {
|
|
||||||
return { id: 0, score: 0, battles: 0, wins: 0, survived: 0, damage: 0, kills: 0 };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const RatingLeaderboardEntryV2: MessageFns<RatingLeaderboardEntryV2> = {
|
|
||||||
encode(message: RatingLeaderboardEntryV2, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.id !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.id);
|
|
||||||
}
|
|
||||||
if (message.score !== 0) {
|
|
||||||
writer.uint32(16).uint32(message.score);
|
|
||||||
}
|
|
||||||
if (message.battles !== 0) {
|
|
||||||
writer.uint32(24).uint32(message.battles);
|
|
||||||
}
|
|
||||||
if (message.wins !== 0) {
|
|
||||||
writer.uint32(32).uint32(message.wins);
|
|
||||||
}
|
|
||||||
if (message.survived !== 0) {
|
|
||||||
writer.uint32(40).uint32(message.survived);
|
|
||||||
}
|
|
||||||
if (message.damage !== 0) {
|
|
||||||
writer.uint32(48).uint32(message.damage);
|
|
||||||
}
|
|
||||||
if (message.kills !== 0) {
|
|
||||||
writer.uint32(56).uint32(message.kills);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): RatingLeaderboardEntryV2 {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseRatingLeaderboardEntryV2();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.id = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 16) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.score = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
if (tag !== 24) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.battles = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 4: {
|
|
||||||
if (tag !== 32) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.wins = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 5: {
|
|
||||||
if (tag !== 40) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.survived = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 6: {
|
|
||||||
if (tag !== 48) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.damage = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 7: {
|
|
||||||
if (tag !== 56) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.kills = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): RatingLeaderboardEntryV2 {
|
|
||||||
return {
|
|
||||||
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
|
|
||||||
score: isSet(object.score) ? globalThis.Number(object.score) : 0,
|
|
||||||
battles: isSet(object.battles) ? globalThis.Number(object.battles) : 0,
|
|
||||||
wins: isSet(object.wins) ? globalThis.Number(object.wins) : 0,
|
|
||||||
survived: isSet(object.survived) ? globalThis.Number(object.survived) : 0,
|
|
||||||
damage: isSet(object.damage) ? globalThis.Number(object.damage) : 0,
|
|
||||||
kills: isSet(object.kills) ? globalThis.Number(object.kills) : 0,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: RatingLeaderboardEntryV2): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.id !== 0) {
|
|
||||||
obj.id = Math.round(message.id);
|
|
||||||
}
|
|
||||||
if (message.score !== 0) {
|
|
||||||
obj.score = Math.round(message.score);
|
|
||||||
}
|
|
||||||
if (message.battles !== 0) {
|
|
||||||
obj.battles = Math.round(message.battles);
|
|
||||||
}
|
|
||||||
if (message.wins !== 0) {
|
|
||||||
obj.wins = Math.round(message.wins);
|
|
||||||
}
|
|
||||||
if (message.survived !== 0) {
|
|
||||||
obj.survived = Math.round(message.survived);
|
|
||||||
}
|
|
||||||
if (message.damage !== 0) {
|
|
||||||
obj.damage = Math.round(message.damage);
|
|
||||||
}
|
|
||||||
if (message.kills !== 0) {
|
|
||||||
obj.kills = Math.round(message.kills);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<RatingLeaderboardEntryV2>, I>>(base?: I): RatingLeaderboardEntryV2 {
|
|
||||||
return RatingLeaderboardEntryV2.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<RatingLeaderboardEntryV2>, I>>(object: I): RatingLeaderboardEntryV2 {
|
|
||||||
const message = createBaseRatingLeaderboardEntryV2();
|
|
||||||
message.id = object.id ?? 0;
|
|
||||||
message.score = object.score ?? 0;
|
|
||||||
message.battles = object.battles ?? 0;
|
|
||||||
message.wins = object.wins ?? 0;
|
|
||||||
message.survived = object.survived ?? 0;
|
|
||||||
message.damage = object.damage ?? 0;
|
|
||||||
message.kills = object.kills ?? 0;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
@@ -1,368 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: reviews.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export interface Reviews {
|
|
||||||
reviews: { [key: number]: Review };
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Reviews_ReviewsEntry {
|
|
||||||
key: number;
|
|
||||||
value: Review | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Review {
|
|
||||||
last_updated: number;
|
|
||||||
videos: Video[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Video {
|
|
||||||
id: string;
|
|
||||||
author: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseReviews(): Reviews {
|
|
||||||
return { reviews: {} };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Reviews: MessageFns<Reviews> = {
|
|
||||||
encode(message: Reviews, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
Object.entries(message.reviews).forEach(([key, value]) => {
|
|
||||||
Reviews_ReviewsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
|
|
||||||
});
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Reviews {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseReviews();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const entry1 = Reviews_ReviewsEntry.decode(reader, reader.uint32());
|
|
||||||
if (entry1.value !== undefined) {
|
|
||||||
message.reviews[entry1.key] = entry1.value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): Reviews {
|
|
||||||
return {
|
|
||||||
reviews: isObject(object.reviews)
|
|
||||||
? Object.entries(object.reviews).reduce<{ [key: number]: Review }>((acc, [key, value]) => {
|
|
||||||
acc[globalThis.Number(key)] = Review.fromJSON(value);
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
: {},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: Reviews): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.reviews) {
|
|
||||||
const entries = Object.entries(message.reviews);
|
|
||||||
if (entries.length > 0) {
|
|
||||||
obj.reviews = {};
|
|
||||||
entries.forEach(([k, v]) => {
|
|
||||||
obj.reviews[k] = Review.toJSON(v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<Reviews>, I>>(base?: I): Reviews {
|
|
||||||
return Reviews.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<Reviews>, I>>(object: I): Reviews {
|
|
||||||
const message = createBaseReviews();
|
|
||||||
message.reviews = Object.entries(object.reviews ?? {}).reduce<{ [key: number]: Review }>((acc, [key, value]) => {
|
|
||||||
if (value !== undefined) {
|
|
||||||
acc[globalThis.Number(key)] = Review.fromPartial(value);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, {});
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseReviews_ReviewsEntry(): Reviews_ReviewsEntry {
|
|
||||||
return { key: 0, value: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Reviews_ReviewsEntry: MessageFns<Reviews_ReviewsEntry> = {
|
|
||||||
encode(message: Reviews_ReviewsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.key !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
Review.encode(message.value, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Reviews_ReviewsEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseReviews_ReviewsEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.key = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.value = Review.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): Reviews_ReviewsEntry {
|
|
||||||
return {
|
|
||||||
key: isSet(object.key) ? globalThis.Number(object.key) : 0,
|
|
||||||
value: isSet(object.value) ? Review.fromJSON(object.value) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: Reviews_ReviewsEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.key !== 0) {
|
|
||||||
obj.key = Math.round(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
obj.value = Review.toJSON(message.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<Reviews_ReviewsEntry>, I>>(base?: I): Reviews_ReviewsEntry {
|
|
||||||
return Reviews_ReviewsEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<Reviews_ReviewsEntry>, I>>(object: I): Reviews_ReviewsEntry {
|
|
||||||
const message = createBaseReviews_ReviewsEntry();
|
|
||||||
message.key = object.key ?? 0;
|
|
||||||
message.value = (object.value !== undefined && object.value !== null)
|
|
||||||
? Review.fromPartial(object.value)
|
|
||||||
: undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseReview(): Review {
|
|
||||||
return { last_updated: 0, videos: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Review: MessageFns<Review> = {
|
|
||||||
encode(message: Review, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.last_updated !== 0) {
|
|
||||||
writer.uint32(13).float(message.last_updated);
|
|
||||||
}
|
|
||||||
for (const v of message.videos) {
|
|
||||||
Video.encode(v!, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Review {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseReview();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 13) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.last_updated = reader.float();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.videos.push(Video.decode(reader, reader.uint32()));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): Review {
|
|
||||||
return {
|
|
||||||
last_updated: isSet(object.last_updated) ? globalThis.Number(object.last_updated) : 0,
|
|
||||||
videos: globalThis.Array.isArray(object?.videos) ? object.videos.map((e: any) => Video.fromJSON(e)) : [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: Review): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.last_updated !== 0) {
|
|
||||||
obj.last_updated = message.last_updated;
|
|
||||||
}
|
|
||||||
if (message.videos?.length) {
|
|
||||||
obj.videos = message.videos.map((e) => Video.toJSON(e));
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<Review>, I>>(base?: I): Review {
|
|
||||||
return Review.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<Review>, I>>(object: I): Review {
|
|
||||||
const message = createBaseReview();
|
|
||||||
message.last_updated = object.last_updated ?? 0;
|
|
||||||
message.videos = object.videos?.map((e) => Video.fromPartial(e)) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseVideo(): Video {
|
|
||||||
return { id: "", author: "" };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Video: MessageFns<Video> = {
|
|
||||||
encode(message: Video, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.id !== "") {
|
|
||||||
writer.uint32(10).string(message.id);
|
|
||||||
}
|
|
||||||
if (message.author !== "") {
|
|
||||||
writer.uint32(18).string(message.author);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Video {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseVideo();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.id = reader.string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.author = reader.string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): Video {
|
|
||||||
return {
|
|
||||||
id: isSet(object.id) ? globalThis.String(object.id) : "",
|
|
||||||
author: isSet(object.author) ? globalThis.String(object.author) : "",
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: Video): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.id !== "") {
|
|
||||||
obj.id = message.id;
|
|
||||||
}
|
|
||||||
if (message.author !== "") {
|
|
||||||
obj.author = message.author;
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<Video>, I>>(base?: I): Video {
|
|
||||||
return Video.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<Video>, I>>(object: I): Video {
|
|
||||||
const message = createBaseVideo();
|
|
||||||
message.id = object.id ?? "";
|
|
||||||
message.author = object.author ?? "";
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function isObject(value: any): boolean {
|
|
||||||
return typeof value === "object" && value !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
@@ -1,271 +0,0 @@
|
|||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.7.7
|
|
||||||
// protoc v3.19.6
|
|
||||||
// source: skill_definitions.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
|
|
||||||
export const protobufPackage = "blitzkit";
|
|
||||||
|
|
||||||
export interface SkillDefinitions {
|
|
||||||
/** enums are disallowed as keys so using uint32; convert run-time */
|
|
||||||
classes: { [key: number]: Skill };
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface SkillDefinitions_ClassesEntry {
|
|
||||||
key: number;
|
|
||||||
value: Skill | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Skill {
|
|
||||||
skills: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseSkillDefinitions(): SkillDefinitions {
|
|
||||||
return { classes: {} };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const SkillDefinitions: MessageFns<SkillDefinitions> = {
|
|
||||||
encode(message: SkillDefinitions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
Object.entries(message.classes).forEach(([key, value]) => {
|
|
||||||
SkillDefinitions_ClassesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
|
|
||||||
});
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): SkillDefinitions {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseSkillDefinitions();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const entry1 = SkillDefinitions_ClassesEntry.decode(reader, reader.uint32());
|
|
||||||
if (entry1.value !== undefined) {
|
|
||||||
message.classes[entry1.key] = entry1.value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): SkillDefinitions {
|
|
||||||
return {
|
|
||||||
classes: isObject(object.classes)
|
|
||||||
? Object.entries(object.classes).reduce<{ [key: number]: Skill }>((acc, [key, value]) => {
|
|
||||||
acc[globalThis.Number(key)] = Skill.fromJSON(value);
|
|
||||||
return acc;
|
|
||||||
}, {})
|
|
||||||
: {},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: SkillDefinitions): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.classes) {
|
|
||||||
const entries = Object.entries(message.classes);
|
|
||||||
if (entries.length > 0) {
|
|
||||||
obj.classes = {};
|
|
||||||
entries.forEach(([k, v]) => {
|
|
||||||
obj.classes[k] = Skill.toJSON(v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<SkillDefinitions>, I>>(base?: I): SkillDefinitions {
|
|
||||||
return SkillDefinitions.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<SkillDefinitions>, I>>(object: I): SkillDefinitions {
|
|
||||||
const message = createBaseSkillDefinitions();
|
|
||||||
message.classes = Object.entries(object.classes ?? {}).reduce<{ [key: number]: Skill }>((acc, [key, value]) => {
|
|
||||||
if (value !== undefined) {
|
|
||||||
acc[globalThis.Number(key)] = Skill.fromPartial(value);
|
|
||||||
}
|
|
||||||
return acc;
|
|
||||||
}, {});
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseSkillDefinitions_ClassesEntry(): SkillDefinitions_ClassesEntry {
|
|
||||||
return { key: 0, value: undefined };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const SkillDefinitions_ClassesEntry: MessageFns<SkillDefinitions_ClassesEntry> = {
|
|
||||||
encode(message: SkillDefinitions_ClassesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.key !== 0) {
|
|
||||||
writer.uint32(8).uint32(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
Skill.encode(message.value, writer.uint32(18).fork()).join();
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): SkillDefinitions_ClassesEntry {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseSkillDefinitions_ClassesEntry();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.key = reader.uint32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.value = Skill.decode(reader, reader.uint32());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): SkillDefinitions_ClassesEntry {
|
|
||||||
return {
|
|
||||||
key: isSet(object.key) ? globalThis.Number(object.key) : 0,
|
|
||||||
value: isSet(object.value) ? Skill.fromJSON(object.value) : undefined,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: SkillDefinitions_ClassesEntry): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.key !== 0) {
|
|
||||||
obj.key = Math.round(message.key);
|
|
||||||
}
|
|
||||||
if (message.value !== undefined) {
|
|
||||||
obj.value = Skill.toJSON(message.value);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<SkillDefinitions_ClassesEntry>, I>>(base?: I): SkillDefinitions_ClassesEntry {
|
|
||||||
return SkillDefinitions_ClassesEntry.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<SkillDefinitions_ClassesEntry>, I>>(
|
|
||||||
object: I,
|
|
||||||
): SkillDefinitions_ClassesEntry {
|
|
||||||
const message = createBaseSkillDefinitions_ClassesEntry();
|
|
||||||
message.key = object.key ?? 0;
|
|
||||||
message.value = (object.value !== undefined && object.value !== null) ? Skill.fromPartial(object.value) : undefined;
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function createBaseSkill(): Skill {
|
|
||||||
return { skills: [] };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Skill: MessageFns<Skill> = {
|
|
||||||
encode(message: Skill, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
for (const v of message.skills) {
|
|
||||||
writer.uint32(10).string(v!);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Skill {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
const end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseSkill();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.skills.push(reader.string());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
fromJSON(object: any): Skill {
|
|
||||||
return {
|
|
||||||
skills: globalThis.Array.isArray(object?.skills) ? object.skills.map((e: any) => globalThis.String(e)) : [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
toJSON(message: Skill): unknown {
|
|
||||||
const obj: any = {};
|
|
||||||
if (message.skills?.length) {
|
|
||||||
obj.skills = message.skills;
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
create<I extends Exact<DeepPartial<Skill>, I>>(base?: I): Skill {
|
|
||||||
return Skill.fromPartial(base ?? ({} as any));
|
|
||||||
},
|
|
||||||
fromPartial<I extends Exact<DeepPartial<Skill>, I>>(object: I): Skill {
|
|
||||||
const message = createBaseSkill();
|
|
||||||
message.skills = object.skills?.map((e) => e) || [];
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends { $case: string; value: unknown } ? { $case: T["$case"]; value?: DeepPartial<T["value"]> }
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
||||||
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
||||||
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
||||||
|
|
||||||
function isObject(value: any): boolean {
|
|
||||||
return typeof value === "object" && value !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isSet(value: any): boolean {
|
|
||||||
return value !== null && value !== undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
fromJSON(object: any): T;
|
|
||||||
toJSON(message: T): unknown;
|
|
||||||
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
||||||
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
|||||||
|
export * from "./isTankCompatible";
|
||||||
+8
-8
@@ -1,17 +1,17 @@
|
|||||||
import {
|
import {
|
||||||
Consumable,
|
|
||||||
ConsumableTankCategoryFilterCategory,
|
ConsumableTankCategoryFilterCategory,
|
||||||
GunDefinition,
|
GunDefinition,
|
||||||
Provision,
|
|
||||||
TankDefinition,
|
TankDefinition,
|
||||||
} from "../protos";
|
TankInclusivityFilter,
|
||||||
|
} from "@blitzkit/protos";
|
||||||
|
|
||||||
export function checkConsumableProvisionInclusivity(
|
export function isTankCompatible(
|
||||||
consumableProvision: Consumable | Provision,
|
|
||||||
tank: TankDefinition,
|
tank: TankDefinition,
|
||||||
gun: GunDefinition,
|
gun: GunDefinition,
|
||||||
|
include?: TankInclusivityFilter[],
|
||||||
|
exclude?: TankInclusivityFilter[],
|
||||||
) {
|
) {
|
||||||
const included = consumableProvision.include?.every((rule) => {
|
const included = include?.every((rule) => {
|
||||||
switch (rule.filter_type!.$case) {
|
switch (rule.filter_type!.$case) {
|
||||||
case "tiers":
|
case "tiers":
|
||||||
return (
|
return (
|
||||||
@@ -29,7 +29,7 @@ export function checkConsumableProvisionInclusivity(
|
|||||||
throw new SyntaxError("Category filtering found in include rule");
|
throw new SyntaxError("Category filtering found in include rule");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const excluded = consumableProvision.exclude?.some((rule) => {
|
const excluded = exclude?.some((rule) => {
|
||||||
switch (rule.filter_type!.$case) {
|
switch (rule.filter_type!.$case) {
|
||||||
case "tiers":
|
case "tiers":
|
||||||
return (
|
return (
|
||||||
@@ -53,5 +53,5 @@ export function checkConsumableProvisionInclusivity(
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return consumableProvision.include?.length > 0 && included && !excluded;
|
return include !== undefined && include?.length > 0 && included && !excluded;
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
export type BlitzEffectScript = RSN & {
|
||||||
|
"#text": string;
|
||||||
|
attribute?: string;
|
||||||
|
|
||||||
|
cooldown?: number;
|
||||||
|
duration?: number;
|
||||||
|
startCooldown?: number;
|
||||||
|
|
||||||
|
automatic?: boolean;
|
||||||
|
keepSpoted?: boolean;
|
||||||
|
breakTracks?: boolean;
|
||||||
|
disableTracksCollisionDamage?: boolean;
|
||||||
|
simpleMode?: boolean;
|
||||||
|
|
||||||
|
shotEffect?: string;
|
||||||
|
contusionChances?: string;
|
||||||
|
modules?: string;
|
||||||
|
damageFactors?: string;
|
||||||
|
|
||||||
|
extrasMustBeStopped?: string;
|
||||||
|
targetExtrasMustBeStopped?: string;
|
||||||
|
conflictExtras?: string;
|
||||||
|
effectExtraName?: string;
|
||||||
|
clientEffectVariant?: string;
|
||||||
|
|
||||||
|
piercingFactors?: RSN;
|
||||||
|
visionRadiusPercentageBonus?: RSN;
|
||||||
|
bonus?: RSN;
|
||||||
|
enginePowerPercentageBonus?: RSN;
|
||||||
|
bonusPercentage?: RSN;
|
||||||
|
attributes?: RSN;
|
||||||
|
respawnBoost?: RSN;
|
||||||
|
maxHealthFactor?: RSN;
|
||||||
|
|
||||||
|
bonusValues?: BonusValues;
|
||||||
|
modulesHealthFactors?: ModuleConstants;
|
||||||
|
chancesToHit?: ChangesToHit;
|
||||||
|
respawns?: Respawns;
|
||||||
|
slowDebuff?: SlowDebuff;
|
||||||
|
};
|
||||||
|
|
||||||
|
type RSN = Record<string, number>;
|
||||||
|
|
||||||
|
type BonusValues = RSN & {
|
||||||
|
chancesToHit?: ModuleConstants;
|
||||||
|
modulesMaxHpFactors?: ModuleConstants;
|
||||||
|
modulesMaxRegenHpFactors?: ModuleConstants;
|
||||||
|
item?: RSN[];
|
||||||
|
};
|
||||||
|
|
||||||
|
interface ModuleConstants {
|
||||||
|
modules: Record<string, number | number[]>;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ModulesMaxHPFactorsModules {
|
||||||
|
ammoBayHealth: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ChangesToHit {
|
||||||
|
crew: number;
|
||||||
|
modules: RSN;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Respawns {
|
||||||
|
respawn: RSN;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface SlowDebuff {
|
||||||
|
item: SlowDebuffItem[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface SlowDebuffItem {
|
||||||
|
duration: number;
|
||||||
|
enginePowerFactor: RSN;
|
||||||
|
speedLimitsFactor: RSN;
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
import { BlitzEffectScript } from "./blitzEffectScript";
|
||||||
|
|
||||||
|
export interface BlitzScripts {
|
||||||
|
consumables: Record<number, BlitzEffectScript>;
|
||||||
|
provisions: Record<number, BlitzEffectScript>;
|
||||||
|
equipment: Record<number, BlitzEffectScript>;
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
export type CaseType<T> = T extends {
|
||||||
|
gun_type?: { $case: infer U; value: any };
|
||||||
|
}
|
||||||
|
? U
|
||||||
|
: never;
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { BlitzEffectScript } from "./blitzEffectScript";
|
||||||
import { ConsumablesVehicleFilter } from "./consumablesVehicleFilter";
|
import { ConsumablesVehicleFilter } from "./consumablesVehicleFilter";
|
||||||
|
|
||||||
export interface ConsumablesCommon {
|
export interface ConsumablesCommon {
|
||||||
@@ -12,13 +13,6 @@ export interface ConsumablesCommon {
|
|||||||
include: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
include: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
||||||
exclude?: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
exclude?: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
||||||
};
|
};
|
||||||
script: {
|
script: BlitzEffectScript;
|
||||||
"#text": string;
|
|
||||||
automatic?: boolean;
|
|
||||||
cooldown: number;
|
|
||||||
duration?: number;
|
|
||||||
shotEffect?: string;
|
|
||||||
bonusValues?: { [key: string]: number };
|
|
||||||
} & Record<string, string>;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,7 @@ export * from "./blitzStrings";
|
|||||||
export * from "./blitzTankFilterDefinitionCategory";
|
export * from "./blitzTankFilterDefinitionCategory";
|
||||||
export * from "./camouflagesXml";
|
export * from "./camouflagesXml";
|
||||||
export * from "./camouflagesYaml";
|
export * from "./camouflagesYaml";
|
||||||
|
export * from "./caseType";
|
||||||
export * from "./chassisDefinitionsList";
|
export * from "./chassisDefinitionsList";
|
||||||
export * from "./combatRolesYaml";
|
export * from "./combatRolesYaml";
|
||||||
export * from "./consumablesCommon";
|
export * from "./consumablesCommon";
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
|
import { BlitzEffectScript } from "./blitzEffectScript";
|
||||||
|
|
||||||
export interface OptionalDevices {
|
export interface OptionalDevices {
|
||||||
[key: string]: {
|
[key: string]: {
|
||||||
id: number;
|
id: number;
|
||||||
userString: string;
|
userString: string;
|
||||||
description: string;
|
description: string;
|
||||||
icon: string;
|
icon: string;
|
||||||
script: unknown;
|
script: BlitzEffectScript;
|
||||||
display_params: unknown;
|
display_params: unknown;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { BlitzEffectScript } from "./blitzEffectScript";
|
||||||
import { ConsumablesVehicleFilter } from "./consumablesVehicleFilter";
|
import { ConsumablesVehicleFilter } from "./consumablesVehicleFilter";
|
||||||
|
|
||||||
export interface ProvisionsCommon {
|
export interface ProvisionsCommon {
|
||||||
@@ -12,11 +13,6 @@ export interface ProvisionsCommon {
|
|||||||
include: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
include: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
||||||
exclude?: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
exclude?: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
||||||
};
|
};
|
||||||
script: {
|
script: BlitzEffectScript;
|
||||||
"#text": string;
|
|
||||||
automatic?: boolean;
|
|
||||||
shotEffect?: string;
|
|
||||||
bonusValues?: { [key: string]: number };
|
|
||||||
} & Record<string, string>;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,45 @@
|
|||||||
{
|
{
|
||||||
"default": "en",
|
"default": "en",
|
||||||
"supported": [
|
"supported": [
|
||||||
{ "locale": "en" },
|
{
|
||||||
{ "locale": "es" },
|
"locale": "en",
|
||||||
{ "locale": "fr" },
|
"flag": "🇺🇸"
|
||||||
{ "locale": "ja" },
|
},
|
||||||
{ "locale": "pl" },
|
{
|
||||||
{ "locale": "pt" },
|
"locale": "es",
|
||||||
{ "locale": "ru" },
|
"flag": "🇪🇸"
|
||||||
{ "locale": "uk" },
|
},
|
||||||
{ "locale": "zh", "blitz": "zh_Hans_SG" }
|
{
|
||||||
|
"locale": "fr",
|
||||||
|
"flag": "🇫🇷"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"locale": "ja",
|
||||||
|
"flag": "🇯🇵"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"locale": "pl",
|
||||||
|
"flag": "🇵🇱"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"locale": "pt",
|
||||||
|
"flag": "🇵🇹"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"locale": "ru",
|
||||||
|
"flag": "🇷🇺"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"locale": "uk",
|
||||||
|
"flag": "🇺🇦"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"locale": "zh",
|
||||||
|
|
||||||
|
"variant_blitz_local": "zh_Hans_SG",
|
||||||
|
"variant_blitz_cdn": "zh-Hans",
|
||||||
|
|
||||||
|
"flag": "🇨🇳"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,68 +1,3 @@
|
|||||||
import { merge } from "ts-deepmerge";
|
|
||||||
import locales from "../locales.json";
|
|
||||||
import en from "../strings/en.json";
|
import en from "../strings/en.json";
|
||||||
import es from "../strings/es.json";
|
|
||||||
import fr from "../strings/fr.json";
|
|
||||||
import ja from "../strings/ja.json";
|
|
||||||
import pl from "../strings/pl.json";
|
|
||||||
import pt from "../strings/pt.json";
|
|
||||||
import ru from "../strings/ru.json";
|
|
||||||
import uk from "../strings/uk.json";
|
|
||||||
import zh from "../strings/zh.json";
|
|
||||||
|
|
||||||
export type BlitzKitStrings = typeof en;
|
export type Strings = typeof en;
|
||||||
|
|
||||||
const stringsRaw: Record<string, TranslationTree> = {
|
|
||||||
en,
|
|
||||||
es,
|
|
||||||
fr,
|
|
||||||
ja,
|
|
||||||
pl,
|
|
||||||
pt,
|
|
||||||
ru,
|
|
||||||
uk,
|
|
||||||
zh,
|
|
||||||
};
|
|
||||||
|
|
||||||
export const STRINGS: Record<string, BlitzKitStrings> = {};
|
|
||||||
|
|
||||||
for (const locale in stringsRaw) {
|
|
||||||
if (locale === locales.default) {
|
|
||||||
STRINGS[locales.default] = stringsRaw[locales.default] as BlitzKitStrings;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const localeStrings = stringsRaw[locale];
|
|
||||||
STRINGS[locale] = merge(
|
|
||||||
stringsRaw[locales.default],
|
|
||||||
localeStrings,
|
|
||||||
) as BlitzKitStrings;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const SUPPORTED_LOCALE_BLITZ_MAP: Record<string, string> = {
|
|
||||||
en: "en",
|
|
||||||
es: "es",
|
|
||||||
fr: "fr",
|
|
||||||
ja: "ja",
|
|
||||||
pt: "pt",
|
|
||||||
ru: "ru",
|
|
||||||
uk: "uk",
|
|
||||||
zh: "zh-Hans",
|
|
||||||
pl: "pl",
|
|
||||||
};
|
|
||||||
|
|
||||||
export const SUPPORTED_LOCALE_FLAGS: Record<string, string> = {
|
|
||||||
en: "🇺🇸",
|
|
||||||
es: "🇪🇸",
|
|
||||||
fr: "🇫🇷",
|
|
||||||
ja: "🇯🇵",
|
|
||||||
pt: "🇵🇹",
|
|
||||||
ru: "🇷🇺",
|
|
||||||
uk: "🇺🇦",
|
|
||||||
zh: "🇨🇳",
|
|
||||||
pl: "🇵🇱",
|
|
||||||
};
|
|
||||||
|
|
||||||
export type TranslationTree = { [key: string]: TranslationNode };
|
|
||||||
|
|
||||||
export type TranslationNode = string | TranslationTree;
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import { I18nString } from "../../core/src";
|
import locales from "@blitzkit/i18n/locales.json";
|
||||||
import locales from "../locales.json";
|
import { I18nString } from "@blitzkit/protos";
|
||||||
|
|
||||||
export function unwrapper(locale = locales.default) {
|
export function unwrapper(locale: string) {
|
||||||
return function (i18nString: I18nString) {
|
return function (i18nString: I18nString) {
|
||||||
if (locale in i18nString.locales) {
|
if (locale in i18nString.locales) {
|
||||||
return i18nString.locales[locale];
|
return i18nString.locales[locale];
|
||||||
|
|||||||
+159
-649
@@ -1,4 +1,163 @@
|
|||||||
{
|
{
|
||||||
|
"tanks": {
|
||||||
|
"characteristics": {
|
||||||
|
"titles": {
|
||||||
|
"gun": "Gun",
|
||||||
|
"clip": "Clip",
|
||||||
|
"shell": "Shell",
|
||||||
|
"accuracy": "Accuracy",
|
||||||
|
"flexibility": "Flexibility",
|
||||||
|
"maneuverability": "Maneuverability",
|
||||||
|
"survivability": "Survivability",
|
||||||
|
"concealment": "Concealment"
|
||||||
|
},
|
||||||
|
|
||||||
|
"items": {
|
||||||
|
"gun_type": "Gun type",
|
||||||
|
"dpm": "Damage per minute",
|
||||||
|
"damage": "Damage",
|
||||||
|
"module_damage": "Module damage",
|
||||||
|
"reload": "Reload",
|
||||||
|
"reloads": "Reloads",
|
||||||
|
"clipping_potential": "Clipping potential",
|
||||||
|
"clip_size": "Clip size",
|
||||||
|
"optimal_shell": "Optimal shell",
|
||||||
|
"intra_clip": "Intra-clip",
|
||||||
|
"burst_size": "Burst size",
|
||||||
|
"intra_burst": "Intra-burst",
|
||||||
|
"penetration": "Penetration",
|
||||||
|
"penetration_loss_by_distance": "Penetration loss by distance",
|
||||||
|
"penetration_loss_after_ricochet": "Penetration loss after ricochet",
|
||||||
|
"shell_velocity": "Shell velocity",
|
||||||
|
"shell_range": "Shell range",
|
||||||
|
"shell_capacity": "Shell capacity",
|
||||||
|
"caliber": "Caliber",
|
||||||
|
"normalization": "Normalization",
|
||||||
|
"ricochet": "Ricochet",
|
||||||
|
"aim_time": "Aim time",
|
||||||
|
"dispersion": "Dispersion",
|
||||||
|
"dispersion_angle": "Dispersion angle",
|
||||||
|
"gun_depression": "Gun depression",
|
||||||
|
"gun_elevation": "Gun elevation",
|
||||||
|
"azimuth_left": "Azimuth left",
|
||||||
|
"azimuth_right": "Azimuth right",
|
||||||
|
"speed_forward": "Speed forward",
|
||||||
|
"speed_backward": "Speed backward",
|
||||||
|
"engine_power": "Engine power",
|
||||||
|
"brake_force": "Brake force",
|
||||||
|
"weight": "Weight",
|
||||||
|
"power_to_weight": "Power to weight",
|
||||||
|
"terrain_coefficient": "Terrain coefficient",
|
||||||
|
"hull_traverse_speed": "Hull traverse speed",
|
||||||
|
"turret_traverse_speed": "Turret traverse speed",
|
||||||
|
"gun_traverse_speed": "Gun traverse speed",
|
||||||
|
"health": "Health",
|
||||||
|
"fire_chance": "Fire chance",
|
||||||
|
"fire_rate": "Fire rate",
|
||||||
|
"ramming_resistance": "Ramming resistance",
|
||||||
|
"view_range": "View range",
|
||||||
|
"camouflage": "Camouflage",
|
||||||
|
"width": "Width",
|
||||||
|
"height": "Height",
|
||||||
|
"length": "Length"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"navigation": {
|
||||||
|
"tank": "Tank",
|
||||||
|
"characteristics": "Characteristics"
|
||||||
|
},
|
||||||
|
|
||||||
|
"loadout": {
|
||||||
|
"dynamics": "Dynamics",
|
||||||
|
"status": "Status",
|
||||||
|
"consumables": "Consumables",
|
||||||
|
"modules": "Modules",
|
||||||
|
"equipment": "Equipment",
|
||||||
|
"alternative": "Alt"
|
||||||
|
},
|
||||||
|
|
||||||
|
"search": {
|
||||||
|
"placeholder": "Search tanks..."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"tools": {
|
||||||
|
"tanks": {
|
||||||
|
"name": "Tankopedia",
|
||||||
|
"slogan": "Blitz tank encyclopedia",
|
||||||
|
"action": "Find tanks"
|
||||||
|
},
|
||||||
|
"avatars": {
|
||||||
|
"name": "Avatars",
|
||||||
|
"slogan": "Blitz player avatars",
|
||||||
|
"action": "Browse all"
|
||||||
|
},
|
||||||
|
"backgrounds": {
|
||||||
|
"name": "Backgrounds",
|
||||||
|
"slogan": "Blitz player backgrounds",
|
||||||
|
"action": "View all"
|
||||||
|
},
|
||||||
|
"api": {
|
||||||
|
"name": "API",
|
||||||
|
"action": "To docs",
|
||||||
|
"slogan": "BlitzKit hosted API"
|
||||||
|
},
|
||||||
|
"players": {
|
||||||
|
"name": "Players",
|
||||||
|
"slogan": "Player statistics",
|
||||||
|
"action": "Stalk player"
|
||||||
|
},
|
||||||
|
"compare": {
|
||||||
|
"name": "Compare",
|
||||||
|
"slogan": "Compare tanks characteristics",
|
||||||
|
"action": "Compare now"
|
||||||
|
},
|
||||||
|
"performance": {
|
||||||
|
"name": "Performance",
|
||||||
|
"slogan": "Tank performance statistics",
|
||||||
|
"action": "View tanks"
|
||||||
|
},
|
||||||
|
"playlist": {
|
||||||
|
"name": "Playlist",
|
||||||
|
"slogan": "Tank playlist generator",
|
||||||
|
"action": "Generate"
|
||||||
|
},
|
||||||
|
"mixer": {
|
||||||
|
"name": "Mixer",
|
||||||
|
"slogan": "Tank module mixer",
|
||||||
|
"action": "Mix and match"
|
||||||
|
},
|
||||||
|
"session": {
|
||||||
|
"name": "Session",
|
||||||
|
"slogan": "Live player statistics",
|
||||||
|
"action": "Track"
|
||||||
|
},
|
||||||
|
"guesser": {
|
||||||
|
"name": "Guesser",
|
||||||
|
"slogan": "Silhouette mini-game",
|
||||||
|
"action": "Play"
|
||||||
|
},
|
||||||
|
"changelogs": {
|
||||||
|
"name": "Changelogs",
|
||||||
|
"slogan": "BlitzKit patch notes",
|
||||||
|
"action": "Read up"
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"name": "Settings",
|
||||||
|
"slogan": "",
|
||||||
|
"action": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"home": {
|
||||||
|
"tanks": "Tanks",
|
||||||
|
"players": "Players",
|
||||||
|
"games": "Games",
|
||||||
|
"cosmetics": "Cosmetics",
|
||||||
|
"technical": "Technical"
|
||||||
|
},
|
||||||
|
|
||||||
"test": {
|
"test": {
|
||||||
"default": "test",
|
"default": "test",
|
||||||
"long": "This is a long test string. You MUST NEVER see this in the UI. My favorite fruit is {fruit} because it has the color of {color}. I like it so much that I will say its name 3 times! {fruit}! {fruit}! {fruit}! Once again, it's {color}, not {not_color}.",
|
"long": "This is a long test string. You MUST NEVER see this in the UI. My favorite fruit is {fruit} because it has the color of {color}. I like it so much that I will say its name 3 times! {fruit}! {fruit}! {fruit}! Once again, it's {color}, not {not_color}.",
|
||||||
@@ -336,655 +495,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"tools": {
|
|
||||||
"playlist": {
|
|
||||||
"reset": "Reset",
|
|
||||||
"shuffle": "Shuffle",
|
|
||||||
"remove": "Remove played",
|
|
||||||
"tracking": "BlitzKit is tracking your battles",
|
|
||||||
|
|
||||||
"sort": {
|
|
||||||
"button": "Sort by",
|
|
||||||
"last_played": "Last played",
|
|
||||||
"least_played": "Least played"
|
|
||||||
},
|
|
||||||
|
|
||||||
"table": {
|
|
||||||
"index": "#",
|
|
||||||
"never": "Never",
|
|
||||||
"tank": "Tank",
|
|
||||||
"last_played": "Last played",
|
|
||||||
"battles": "Career battles",
|
|
||||||
"unrecorded": "--",
|
|
||||||
"wins": "Wins"
|
|
||||||
},
|
|
||||||
|
|
||||||
"large_warning": {
|
|
||||||
"title": "That's a lot of tanks!",
|
|
||||||
"description": "Are you sure you want to create a playlist of {count} tanks? That's {time} hours of gameplay at 50% winrate!",
|
|
||||||
"cancel": "Cancel",
|
|
||||||
"proceed": "Proceed"
|
|
||||||
},
|
|
||||||
|
|
||||||
"generate": "Generate playlist",
|
|
||||||
"name": "Playlist",
|
|
||||||
"description": "Tank playlist generator",
|
|
||||||
"seo_description": "Don't know what to play in World of Tanks Blitz? Use BlitzKit Playlist to get suggestions!",
|
|
||||||
"button": "Generate",
|
|
||||||
"pool_size": "{count} possible tanks"
|
|
||||||
},
|
|
||||||
|
|
||||||
"mixer": {
|
|
||||||
"name": "Mixer",
|
|
||||||
"button": "Mix and match",
|
|
||||||
"description": "Mix tank modules",
|
|
||||||
"seo_description": "Mix and match hulls, turrets, and guns of tanks in World of Tanks Blitz",
|
|
||||||
"screenshot": "Screenshot",
|
|
||||||
"randomize": "Randomize"
|
|
||||||
},
|
|
||||||
|
|
||||||
"guess": {
|
|
||||||
"name": "Guess",
|
|
||||||
"button": "What could it be?",
|
|
||||||
"description": "Silhouette mini-game",
|
|
||||||
"seo_description": "Play a tank guessing game with a silhouette in World of Tanks Blitz",
|
|
||||||
"search": {
|
|
||||||
"placeholder": "Type to guess...",
|
|
||||||
"skip": "Skip",
|
|
||||||
"guess": "Guess",
|
|
||||||
"next": "Next",
|
|
||||||
"no_results": "No results"
|
|
||||||
},
|
|
||||||
"stats": "{correct} / {total} correct, {streak} streak",
|
|
||||||
"help": {
|
|
||||||
"title": "Partially reveal tank?",
|
|
||||||
"description": "Reveals the tank without showing the name. This round will be considered incorrect and break your streak!",
|
|
||||||
"cancel": "Cancel",
|
|
||||||
"reveal": "Reveal"
|
|
||||||
},
|
|
||||||
"clear": "Clear",
|
|
||||||
"select_all": "Select all",
|
|
||||||
"tier": "Tier {tier}"
|
|
||||||
},
|
|
||||||
|
|
||||||
"tankopedia": {
|
|
||||||
"search": "Search a stat...",
|
|
||||||
|
|
||||||
"name": "Tankopedia",
|
|
||||||
"button": "Find tanks",
|
|
||||||
"description": "Blitz tank encyclopedia",
|
|
||||||
"seo_description": "Statistics, armor, and more for all tanks in World of Tanks Blitz",
|
|
||||||
"tank_seo_title": "{name} - Tier {tier} {nationality} {class} | {website} Tankopedia | World of Tanks Blitz (WoTB)",
|
|
||||||
"tank_seo_description": "{name} armor, statistics, equipment, provisions, and more. {dpm} DPM, {alpha}hp alpha, {penetration}mm penetration, {speed}kph top speed, {health}hp health.",
|
|
||||||
|
|
||||||
"visualizers": {
|
|
||||||
"reload": {
|
|
||||||
"skip": "Skip"
|
|
||||||
},
|
|
||||||
|
|
||||||
"assault": {
|
|
||||||
"title": "Assault shells"
|
|
||||||
},
|
|
||||||
|
|
||||||
"rotator": {
|
|
||||||
"hull": "Hull",
|
|
||||||
"turret": "Turret",
|
|
||||||
"hard": "Hard",
|
|
||||||
"medium": "Medium",
|
|
||||||
"soft": "Soft",
|
|
||||||
"effective": "Effective"
|
|
||||||
},
|
|
||||||
|
|
||||||
"ricochet": {
|
|
||||||
"angle": "Angle",
|
|
||||||
"normalization": "Normalization",
|
|
||||||
"effective_angle": "Effective angle",
|
|
||||||
"armor": "Armor",
|
|
||||||
"no_ricochet": "Explosive shells don't ricochet"
|
|
||||||
},
|
|
||||||
|
|
||||||
"view_range": {
|
|
||||||
"camo": "Camo",
|
|
||||||
"ghost_factory": "Ghost Factory",
|
|
||||||
"dead_rail": "Dead Rail"
|
|
||||||
},
|
|
||||||
|
|
||||||
"flexibility": {
|
|
||||||
"yaw": "Yaw",
|
|
||||||
"pitch": "Pitch",
|
|
||||||
"min": "Min",
|
|
||||||
"max": "Max"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"sandbox": {
|
|
||||||
"poses": {
|
|
||||||
"hull_down": "Hull down",
|
|
||||||
"face_hug": "Face hug",
|
|
||||||
"default": "Default"
|
|
||||||
},
|
|
||||||
|
|
||||||
"settings": {
|
|
||||||
"armor": "Armor",
|
|
||||||
"green_penetration": "Green penetration",
|
|
||||||
"hide_model_under_armor": "Hide model under armor",
|
|
||||||
"opaque": "Opaque",
|
|
||||||
"dev_wireframe": "DEV: wireframe"
|
|
||||||
},
|
|
||||||
|
|
||||||
"screenshot": {
|
|
||||||
"download": "Download",
|
|
||||||
"copy": "Copy"
|
|
||||||
},
|
|
||||||
|
|
||||||
"model": {
|
|
||||||
"name": "Model"
|
|
||||||
},
|
|
||||||
"dynamic": {
|
|
||||||
"name": "Dynamic armor",
|
|
||||||
|
|
||||||
"custom_shell": {
|
|
||||||
"type": "Type",
|
|
||||||
"caliber": "Caliber",
|
|
||||||
"penetration": "Penetration",
|
|
||||||
"normalization": "Normalization",
|
|
||||||
"ricochet": "Ricochet",
|
|
||||||
"explosion_radius": "Explosion radius",
|
|
||||||
"exit": "Exit",
|
|
||||||
"reset": "Reset"
|
|
||||||
},
|
|
||||||
|
|
||||||
"advanced": "Advanced highlighting",
|
|
||||||
|
|
||||||
"shot_card": {
|
|
||||||
"element": {
|
|
||||||
"primary": "Primary",
|
|
||||||
"spaced": "Spaced",
|
|
||||||
"external": "External",
|
|
||||||
"gap": "Gap",
|
|
||||||
"gun": "Gun",
|
|
||||||
"track": "Tracks"
|
|
||||||
},
|
|
||||||
"status": {
|
|
||||||
"penetration": "{damage}hp penetration",
|
|
||||||
"blocked": "Blocked",
|
|
||||||
"ricochet": "Ricochet",
|
|
||||||
"splash": "{damage}hp splash"
|
|
||||||
},
|
|
||||||
"stats": {
|
|
||||||
"thickness_and_angle": "{thickness}mm {angle}°",
|
|
||||||
"nominal": "{thickness}mm nominal",
|
|
||||||
"ricochet_loss": "{loss}% penetration"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"static": {
|
|
||||||
"name": "Static armor",
|
|
||||||
"primary": "Primary",
|
|
||||||
"spaced": "Spaced",
|
|
||||||
"external": "External",
|
|
||||||
"edit": {
|
|
||||||
"label": "Edit",
|
|
||||||
"reset": "Reset"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"meta": {
|
|
||||||
"back": "Back",
|
|
||||||
"compare": "Compare",
|
|
||||||
"swap": {
|
|
||||||
"button": "Swap",
|
|
||||||
"title": "Swap tanks"
|
|
||||||
},
|
|
||||||
"vanilla": "Vanilla",
|
|
||||||
"opentest": "OpenTest",
|
|
||||||
"full_name": "Full name",
|
|
||||||
"nation": "Nation",
|
|
||||||
"class": "Class",
|
|
||||||
"tier": "Tier",
|
|
||||||
"type": "Type",
|
|
||||||
"dev_id": "DEV: ID",
|
|
||||||
"dev_name": "DEV: NAME",
|
|
||||||
"purchase": "Purchase price",
|
|
||||||
"restoration": "Restoration price",
|
|
||||||
"sale": "Sale price",
|
|
||||||
"research": "Research XP"
|
|
||||||
},
|
|
||||||
|
|
||||||
"tech_tree": {
|
|
||||||
"title": "Tech tree",
|
|
||||||
"battle": "1 battle",
|
|
||||||
"battles": "{count} battles",
|
|
||||||
"route": "Route {index} of {count}"
|
|
||||||
},
|
|
||||||
|
|
||||||
"game_modes": {
|
|
||||||
"title": "Game mode abilities"
|
|
||||||
},
|
|
||||||
|
|
||||||
"review": {
|
|
||||||
"title": "Review videos",
|
|
||||||
"join": "Apply to {name} YouTuber program"
|
|
||||||
},
|
|
||||||
|
|
||||||
"configuration": {
|
|
||||||
"title": "Configuration",
|
|
||||||
|
|
||||||
"equalizer": {
|
|
||||||
"title": "Equalizer",
|
|
||||||
"equalize": "Equalize",
|
|
||||||
"beta": "Beta"
|
|
||||||
},
|
|
||||||
"modules": {
|
|
||||||
"title": "Modules",
|
|
||||||
"stock": "Stock",
|
|
||||||
"upgrade": "Upgrade"
|
|
||||||
},
|
|
||||||
"equipment": {
|
|
||||||
"title": "Equipment",
|
|
||||||
"clear": "Clear"
|
|
||||||
},
|
|
||||||
"provisions": {
|
|
||||||
"title": "Provisions",
|
|
||||||
"clear": "Clear"
|
|
||||||
},
|
|
||||||
"consumables": {
|
|
||||||
"title": "Consumables",
|
|
||||||
"clear": "Clear",
|
|
||||||
"info": "Yellow consumables do not affect the statistics."
|
|
||||||
},
|
|
||||||
"skills": {
|
|
||||||
"title": "Crew skills",
|
|
||||||
"clear": "Clear",
|
|
||||||
"maximize": "Maximize",
|
|
||||||
"info": "Yellow skills only apply under special circumstances. Hold Space to quickly toggle between level 0 and 7."
|
|
||||||
},
|
|
||||||
"miscellaneous": {
|
|
||||||
"title": "Miscellaneous"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"characteristics": {
|
|
||||||
"title": "Characteristics",
|
|
||||||
"compare": {
|
|
||||||
"label": "Compare",
|
|
||||||
"class": "{tier} {class}",
|
|
||||||
"tier": "All tier {tier}",
|
|
||||||
"all": "All tanks"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"shell_index": "Shell {index}",
|
|
||||||
"at_distance": "At {distance}m",
|
|
||||||
"at_distance_slider_label": "Distance",
|
|
||||||
"dispersion_at_distance": "Dispersion at {distance}m",
|
|
||||||
"gun_flexibility": "Gun flexibility",
|
|
||||||
"speed": "Speed",
|
|
||||||
"terrain_coefficients": "Terrain coefficients",
|
|
||||||
"raw_terrain_coefficients": "Raw terrain coefficients",
|
|
||||||
"power_to_weight_ratio": "Power to weight ratio",
|
|
||||||
"hull_traverse_speed": "Hull traverse speed",
|
|
||||||
"camouflage": "Camouflage",
|
|
||||||
"reload": "Reload",
|
|
||||||
"crewCount": "Crew count",
|
|
||||||
"shellNormalization": "Normalization",
|
|
||||||
"shellRicochet": "Ricochet",
|
|
||||||
"dpm": "DPM",
|
|
||||||
"dpmEffective": "Effective at 60s",
|
|
||||||
"shells": "Shells",
|
|
||||||
"mostOptimalShellIndex": "Most optimal shell",
|
|
||||||
"shellReloads": "Reloads",
|
|
||||||
"shellReload": "Reload",
|
|
||||||
"intraClip": "Intra-clip",
|
|
||||||
"caliber": "Caliber",
|
|
||||||
"penetration": "Penetration",
|
|
||||||
"damage": "Damage",
|
|
||||||
"damageWithoutAssault": "Damage without assault shells",
|
|
||||||
"clipDamage": "Clipping potential",
|
|
||||||
"moduleDamage": "Module damage",
|
|
||||||
"explosionRadius": "Explosion radius",
|
|
||||||
"shellVelocity": "Shell velocity",
|
|
||||||
"aimTime": "Aim time",
|
|
||||||
"dispersion": "Dispersion still",
|
|
||||||
"dispersionMoving": "Moving",
|
|
||||||
"dispersionHullTraversing": "Hull traversing",
|
|
||||||
"dispersionTurretTraversing": "Turret traversing",
|
|
||||||
"dispersionShooting": "Shooting",
|
|
||||||
"dispersionGunDamaged": "Gun damaged",
|
|
||||||
"gunDepression": "Depression",
|
|
||||||
"gunElevation": "Elevation",
|
|
||||||
"gunFrontalDepression": "Frontal depression",
|
|
||||||
"gunFrontalElevation": "Frontal elevation",
|
|
||||||
"gunRearDepression": "Rear depression",
|
|
||||||
"gunRearElevation": "Rear elevation",
|
|
||||||
"azimuthLeft": "Azimuth left",
|
|
||||||
"azimuthRight": "Azimuth right",
|
|
||||||
"speedForwards": "Speed forwards",
|
|
||||||
"speedBackwards": "Backwards",
|
|
||||||
"hardTerrainCoefficient": "Terrain coefficient hard",
|
|
||||||
"hardTerrainCoefficientRaw": "Raw terrain coefficient hard",
|
|
||||||
"mediumTerrainCoefficient": "Medium",
|
|
||||||
"mediumTerrainCoefficientRaw": "Medium",
|
|
||||||
"softTerrainCoefficient": "Soft",
|
|
||||||
"softTerrainCoefficientRaw": "Soft",
|
|
||||||
"enginePower": "Engine power",
|
|
||||||
"powerToWeightRatioHardTerrain": "Power to weight ratio hard",
|
|
||||||
"powerToWeightRatioMediumTerrain": "Medium",
|
|
||||||
"powerToWeightRatioSoftTerrain": "Soft",
|
|
||||||
"weight": "Weight",
|
|
||||||
"turretTraverseSpeed": "Turret traverse speed",
|
|
||||||
"gunTraverseSpeed": "Gun traverse speed",
|
|
||||||
"hullTraverseHardTerrain": "Hull traverse hard",
|
|
||||||
"hullTraverseMediumTerrain": "Medium",
|
|
||||||
"hullTraverseSoftTerrain": "Soft",
|
|
||||||
"health": "Health",
|
|
||||||
"fireChance": "Fire chance",
|
|
||||||
"viewRange": "View range",
|
|
||||||
"camouflageStill": "Camouflage still",
|
|
||||||
"camouflageMoving": "Moving",
|
|
||||||
"camouflageShootingStill": "Still",
|
|
||||||
"camouflageShootingMoving": "Moving",
|
|
||||||
"camouflageCaughtOnFire": "Caught on fire",
|
|
||||||
"width": "Width",
|
|
||||||
"height": "Height",
|
|
||||||
"length": "Length",
|
|
||||||
"volume": "Volume",
|
|
||||||
"shellRange": "Shell range",
|
|
||||||
"shellCapacity": "Shell capacity",
|
|
||||||
"gunType": "Gun type",
|
|
||||||
"penetrationAt250m": "Penetration at 250m",
|
|
||||||
"burstShells": "Burst shell count",
|
|
||||||
"burstInterShell": "Burst inter-shell"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"firepower": {
|
|
||||||
"title": "Firepower"
|
|
||||||
},
|
|
||||||
|
|
||||||
"crew": {
|
|
||||||
"title": "Crew training",
|
|
||||||
"info": "represents the other roles a crew member can take.",
|
|
||||||
"count": "Crew count",
|
|
||||||
"commander": "Commander",
|
|
||||||
"gunner": "Gunner",
|
|
||||||
"driver": "Driver",
|
|
||||||
"radioman": "Radioman",
|
|
||||||
"loader": "Loader"
|
|
||||||
},
|
|
||||||
|
|
||||||
"maneuverability": {
|
|
||||||
"title": "Maneuverability"
|
|
||||||
},
|
|
||||||
|
|
||||||
"survivability": {
|
|
||||||
"title": "Survivability"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"compare": {
|
|
||||||
"name": "Compare",
|
|
||||||
"button": "Compare tanks",
|
|
||||||
"description": "Compare tank statistics",
|
|
||||||
"seo_description": "Compare tanks statistics and loadouts in World of Tanks Blitz",
|
|
||||||
|
|
||||||
"actions": {
|
|
||||||
"add": {
|
|
||||||
"button": "Add",
|
|
||||||
"title": "Add tanks",
|
|
||||||
"description": "Select tanks to add to comparison"
|
|
||||||
},
|
|
||||||
"clear": "Clear",
|
|
||||||
"deltas": {
|
|
||||||
"none": "No deltas",
|
|
||||||
"percentage": "Percentage",
|
|
||||||
"absolute": "Absolute"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"no_tanks": {
|
|
||||||
"title": "No tanks selected",
|
|
||||||
"body": "Press the Add button to get started"
|
|
||||||
},
|
|
||||||
|
|
||||||
"table": {
|
|
||||||
"equipment": {
|
|
||||||
"clear": "Clear",
|
|
||||||
"apply_to_all": "Apply to all"
|
|
||||||
},
|
|
||||||
"skills": {
|
|
||||||
"clear": "Clear",
|
|
||||||
"maximize": "Maximize",
|
|
||||||
"equalize": "Equalize"
|
|
||||||
},
|
|
||||||
"modules": {
|
|
||||||
"stock": "Stock",
|
|
||||||
"upgrade": "Upgrade"
|
|
||||||
},
|
|
||||||
"provisions": {
|
|
||||||
"clear": "Clear this tank",
|
|
||||||
"clear_all": "Clear all tanks"
|
|
||||||
},
|
|
||||||
"consumables": {
|
|
||||||
"clear": "Clear this tank",
|
|
||||||
"clear_all": "Clear all tanks"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"performance": {
|
|
||||||
"name": "Performance",
|
|
||||||
"button": "View tanks",
|
|
||||||
"description": "Tank performance statistics",
|
|
||||||
"seo_description": "Best tanks and their performances in World of Tanks Blitz",
|
|
||||||
"estimation": {
|
|
||||||
"body": "Estimated stats based on {count} players. Updated {age} ago.",
|
|
||||||
"hours": "{count} hours",
|
|
||||||
"minutes": "{count} minutes"
|
|
||||||
},
|
|
||||||
"player_count": {
|
|
||||||
"label": "Player count"
|
|
||||||
},
|
|
||||||
"table": {
|
|
||||||
"tanks": {
|
|
||||||
"header": "Tank",
|
|
||||||
"total": "Total"
|
|
||||||
},
|
|
||||||
"stats": {
|
|
||||||
"winrate": "Winrate",
|
|
||||||
"players": "Players",
|
|
||||||
"damage": "Damage",
|
|
||||||
"survival": "Survival",
|
|
||||||
"xp": "XP",
|
|
||||||
"kills": "Kills",
|
|
||||||
"spots": "Spots",
|
|
||||||
"accuracy": "Accuracy",
|
|
||||||
"shots": "Shots",
|
|
||||||
"hits": "Hits",
|
|
||||||
"damage_ratio": "Dmg. ratio",
|
|
||||||
"damage_taken": "Dmg. taken",
|
|
||||||
"capture_points": "Cap points"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gallery": {
|
|
||||||
"name": "Gallery",
|
|
||||||
"button": "Browse all",
|
|
||||||
"description": "Blitz player avatars",
|
|
||||||
"seo_description": "All World of Tanks Blitz player avatars",
|
|
||||||
"last_updated": "Last updated on {time}",
|
|
||||||
"search": {
|
|
||||||
"hint": "Search avatars...",
|
|
||||||
"results": "{count} avatars"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"session": {
|
|
||||||
"name": "Session",
|
|
||||||
"button": "Start tracking",
|
|
||||||
"description": "Live session stats",
|
|
||||||
"seo_description": "Track your stats in real time as you play World of Tanks Blitz",
|
|
||||||
"search": {
|
|
||||||
"lookup": "Look up a player to get started",
|
|
||||||
"hint": "Search players...",
|
|
||||||
"searching": "Searching...",
|
|
||||||
"no_results": "No players found"
|
|
||||||
},
|
|
||||||
"controls": {
|
|
||||||
"title": "Tracking {name}",
|
|
||||||
"subtitle": "Since {time}",
|
|
||||||
"reset": "Reset",
|
|
||||||
"change": "Change"
|
|
||||||
},
|
|
||||||
"no_cc": {
|
|
||||||
"title": "You're attempting to track a CC account",
|
|
||||||
"body": "CC (community contributor) accounts do not have public tank statistics. We are in the process of adding embeds for CC accounts, stay tuned.",
|
|
||||||
"alright": "Alright"
|
|
||||||
},
|
|
||||||
"no_battles": {
|
|
||||||
"title": "No battles",
|
|
||||||
"hint": "Go ahead and play a game"
|
|
||||||
},
|
|
||||||
"table": {
|
|
||||||
"tank": "Tank",
|
|
||||||
"total": "Total",
|
|
||||||
"remove": "Remove"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tier_list": {
|
|
||||||
"name": "Tier list",
|
|
||||||
"button": "Rank tanks",
|
|
||||||
"description": "Rank Blitz tanks",
|
|
||||||
"seo_description": "Explore tier lists ranking tanks from best to worst, based on player ratings and statistical performance in World of Tanks Blitz",
|
|
||||||
"buttons": {
|
|
||||||
"reset": "Reset",
|
|
||||||
"share": "Share"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"embed": {
|
|
||||||
"name": "Embed",
|
|
||||||
"button": "Create now",
|
|
||||||
"description": "Embeds for streaming",
|
|
||||||
"seo_description": "Create embeds for streaming World of Tanks Blitz with extreme customization",
|
|
||||||
"coming_soon": "More embeds coming soon.",
|
|
||||||
"suggest": "Suggest ideas.",
|
|
||||||
|
|
||||||
"preview": {
|
|
||||||
"title": "Example preview",
|
|
||||||
"upload": "Upload test background"
|
|
||||||
},
|
|
||||||
|
|
||||||
"configuration": {
|
|
||||||
"import": {
|
|
||||||
"title": "Import",
|
|
||||||
"description": "Paste your current URL if you have one already to import your settings",
|
|
||||||
"hint": "Paste URL...",
|
|
||||||
"apply": "Apply",
|
|
||||||
"idiot_title": "Invalid URL",
|
|
||||||
"idiot_description": "Try pasting the URL that BlitzKit previously generated, you silly goose!",
|
|
||||||
"idiot_button": "Okay, my bad"
|
|
||||||
},
|
|
||||||
|
|
||||||
"export": {
|
|
||||||
"title": "Export",
|
|
||||||
"description": "Copy all properties for you streaming software",
|
|
||||||
"generate": {
|
|
||||||
"button": "Generate URL",
|
|
||||||
"title": "Generate URL",
|
|
||||||
"subtitle": "Search an account to track",
|
|
||||||
"cancel": "Cancel",
|
|
||||||
"success": {
|
|
||||||
"title": "Copy URL",
|
|
||||||
"info": "Generated the URL for {name}. The embed will start tracking as soon as the URL is pasted. Reset at any time by right-clicking on PC or long-pressing on mobile and then selecting \"Reset\".",
|
|
||||||
"back": "Back",
|
|
||||||
"copy": "Copy URL"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"css": "Copy CSS",
|
|
||||||
"width": "Copy Width",
|
|
||||||
"height": "Copy Height",
|
|
||||||
"framerate": "Copy Framerate"
|
|
||||||
},
|
|
||||||
|
|
||||||
"customize": {
|
|
||||||
"title": "Customize",
|
|
||||||
"reset": "Reset",
|
|
||||||
"description": "Bells and whistles of your embed"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"types": {
|
|
||||||
"breakdown": {
|
|
||||||
"name": "Breakdown",
|
|
||||||
"options": {
|
|
||||||
"width": "Width",
|
|
||||||
"height": "Height",
|
|
||||||
"showTotal": "Show total",
|
|
||||||
"listGap": "List gap",
|
|
||||||
"listMaxTanks": "Max tanks",
|
|
||||||
"cardRadius": "Card radius",
|
|
||||||
"cardHeaderBackgroundColor": "Card header background color",
|
|
||||||
"cardHeaderPadding": "Card header padding",
|
|
||||||
"cardTitle": "Card title",
|
|
||||||
"cardTitleTypeColor": "Card title type color",
|
|
||||||
"cardTitleClassIcon": "Card title class icon",
|
|
||||||
"cardBodyBackgroundColor": "Card body background color",
|
|
||||||
"cardBodyPadding": "Card body padding",
|
|
||||||
"columnGap": "Column gap",
|
|
||||||
"columnValue": "Column value",
|
|
||||||
"columnLabel": "Column label",
|
|
||||||
"column1": "Column 1",
|
|
||||||
"column2": "Column 2",
|
|
||||||
"column3": "Column 3",
|
|
||||||
"column4": "Column 4",
|
|
||||||
"column1CustomLabel": "Column 1 label",
|
|
||||||
"column2CustomLabel": "Column 2 label",
|
|
||||||
"column3CustomLabel": "Column 3 label"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"charts": {
|
|
||||||
"name": "Charts",
|
|
||||||
"button": "Nerd out",
|
|
||||||
"description": "Lots of graphs",
|
|
||||||
"seo_description": "Charts and graphs on anything and everything about tanks, players, and events in World of Tanks Blitz"
|
|
||||||
},
|
|
||||||
"rating": {
|
|
||||||
"name": "Rating",
|
|
||||||
"button": "View leaderboard",
|
|
||||||
"description": "Full rating leaderboard",
|
|
||||||
"seo_description": "Live and archived full rating leaderboard for World of Tanks Blitz"
|
|
||||||
},
|
|
||||||
"discord": {
|
|
||||||
"name": "Discord bot",
|
|
||||||
"button": "Install now",
|
|
||||||
"description": "Stats right in Discord",
|
|
||||||
"seo_description": "Get stats right in Discord with BlitzKit's Discord bot"
|
|
||||||
},
|
|
||||||
"more": {
|
|
||||||
"name": "More coming soon",
|
|
||||||
"button": "Join Discord",
|
|
||||||
"description": "What we're making",
|
|
||||||
"seo_description": "What we're making with BlitzKit"
|
|
||||||
},
|
|
||||||
"players": {
|
|
||||||
"name": "Players",
|
|
||||||
"button": "Lookup player",
|
|
||||||
"description": "Periodical player statistics",
|
|
||||||
"seo_description": "Periodical player statistics in World of Tanks Blitz"
|
|
||||||
},
|
|
||||||
"home": {
|
|
||||||
"name": "Home",
|
|
||||||
"button": "Get started",
|
|
||||||
"description": "Get started with BlitzKit",
|
|
||||||
"seo_description": "Get started with BlitzKit"
|
|
||||||
},
|
|
||||||
"api": {
|
|
||||||
"name": "API",
|
|
||||||
"button": "To the docs",
|
|
||||||
"description": "BlitzKit hosted API",
|
|
||||||
"seo_description": "BlitzKit hosted static API for World of Tanks Blitz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"footer": {
|
"footer": {
|
||||||
"motto": "Everything World of Tanks Blitz",
|
"motto": "Everything World of Tanks Blitz",
|
||||||
"copyright": "Unaffiliated with Wargaming or any service",
|
"copyright": "Unaffiliated with Wargaming or any service",
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"name": "@blitzkit/protos",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"main": "src/index.ts"
|
||||||
|
}
|
||||||
File renamed without changes.
File renamed without changes.
+6
-8
@@ -9,16 +9,14 @@ message ConsumableDefinitions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
message Consumable {
|
message Consumable {
|
||||||
required uint32 id = 1;
|
required uint32 id = 1;
|
||||||
required I18nString name = 2;
|
required I18nString name = 2;
|
||||||
required uint32 cooldown = 3;
|
required bool game_mode_exclusive = 5;
|
||||||
optional float duration = 4;
|
repeated TankInclusivityFilter include = 6;
|
||||||
required bool game_mode_exclusive = 5;
|
repeated TankInclusivityFilter exclude = 7;
|
||||||
repeated ConsumableTankFilter include = 6;
|
|
||||||
repeated ConsumableTankFilter exclude = 7;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message ConsumableTankFilter {
|
message TankInclusivityFilter {
|
||||||
oneof filter_type {
|
oneof filter_type {
|
||||||
ConsumableTankTierFilter tiers = 1;
|
ConsumableTankTierFilter tiers = 1;
|
||||||
ConsumableTankIdsFilter ids = 2;
|
ConsumableTankIdsFilter ids = 2;
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 363 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user