feat: add video metadata service with GetVideoMetadata request and response types

This commit is contained in:
2026-04-01 08:07:03 +00:00
parent ab9b4f229d
commit dbc8b1a82a
10 changed files with 1265 additions and 3292 deletions

132
bun.lock
View File

@@ -10,37 +10,37 @@
"@hattip/adapter-node": "^0.0.49",
"@hiogawa/tiny-rpc": "^0.2.3-pre.18",
"@hiogawa/utils": "^1.7.0",
"@hono/node-server": "^1.19.11",
"@hono/node-server": "^1.19.12",
"@hono/zod-validator": "^0.7.6",
"@pinia/colada": "^1.0.0",
"@pinia/colada": "^1.1.0",
"@tanstack/vue-table": "^8.21.3",
"@unhead/vue": "^2.1.12",
"@vueuse/core": "^14.2.1",
"aws4fetch": "^1.0.20",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"hono": "^4.12.7",
"i18next": "^25.8.18",
"i18next-http-backend": "^3.0.2",
"hono": "^4.12.9",
"i18next": "^26.0.3",
"i18next-http-backend": "^3.0.4",
"i18next-vue": "^5.4.0",
"is-mobile": "^5.0.0",
"pinia": "^3.0.4",
"superjson": "^2.2.6",
"tailwind-merge": "^3.5.0",
"tweetnacl": "^1.0.3",
"vue": "^3.5.30",
"vue-router": "^5.0.3",
"vue": "^3.5.31",
"vue-router": "^5.0.4",
"zod": "^4.3.6",
},
"devDependencies": {
"@types/bun": "^1.3.10",
"@vitejs/plugin-vue": "^6.0.4",
"@vitejs/plugin-vue-jsx": "^5.1.4",
"estree-walker": "2.0.2",
"unocss": "^66.6.6",
"@types/bun": "^1.3.11",
"@vitejs/plugin-vue": "^6.0.5",
"@vitejs/plugin-vue-jsx": "^5.1.5",
"estree-walker": "3.0.3",
"unocss": "^66.6.7",
"unplugin-auto-import": "^21.0.0",
"unplugin-vue-components": "^31.0.0",
"vite": "^8.0.0-beta.16",
"unplugin-vue-components": "^32.0.0",
"vite": "^8.0.3",
"vite-ssr-components": "^0.5.2",
},
},
@@ -128,7 +128,7 @@
"@hiogawa/utils": ["@hiogawa/utils@1.7.0", "", {}, "sha512-ghiEFWBR1NENoHn+lSuW7liicTIzVPN+8Srm5UedCTw43gus0mlse6Wp2lz6GmbOXJ/CalMPp/0Tz2X8tajkAg=="],
"@hono/node-server": ["@hono/node-server@1.19.11", "", { "peerDependencies": { "hono": "^4" } }, "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g=="],
"@hono/node-server": ["@hono/node-server@1.19.12", "", { "peerDependencies": { "hono": "^4" } }, "sha512-txsUW4SQ1iilgE0l9/e9VQWmELXifEFvmdA1j6WFh/aFPj99hIntrSsq/if0UWyGVkmrRPKA1wCeP+UCr1B9Uw=="],
"@hono/zod-validator": ["@hono/zod-validator@0.7.6", "", { "peerDependencies": { "hono": ">=3.9.0", "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Io1B6d011Gj1KknV4rXYz4le5+5EubcWEU/speUjuw9XMMIaP3n78yXLhjd2A3PXaXaUwEAluOiAyLqhBEJgsw=="],
@@ -194,7 +194,7 @@
"@oxc-project/types": ["@oxc-project/types@0.122.0", "", {}, "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA=="],
"@pinia/colada": ["@pinia/colada@1.0.0", "", { "peerDependencies": { "pinia": "^2.2.6 || ^3.0.0", "vue": "^3.5.17" } }, "sha512-YKSybA6wusFK4CAUPzItoSgPCfScVnnnO2MSlmaaisE/L7luE77GxFyhTzipM8IbvbXh4zkCy97OE7w9WX34wA=="],
"@pinia/colada": ["@pinia/colada@1.1.0", "", { "peerDependencies": { "pinia": "^2.2.6 || ^3.0.0", "vue": "^3.5.17" } }, "sha512-GoTOlaDuQuF+9Lj5MbY2oOOZeJSP/I0U9/+Ugo5nfCymlWSyjFFjE7QcHageNL7tQr+tfepb13ks8+qO6uSV/A=="],
"@polka/url": ["@polka/url@1.0.0-next.29", "", {}, "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww=="],
@@ -220,35 +220,35 @@
"@quansync/fs": ["@quansync/fs@1.0.0", "", { "dependencies": { "quansync": "^1.0.0" } }, "sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ=="],
"@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.11", "", { "os": "android", "cpu": "arm64" }, "sha512-SJ+/g+xNnOh6NqYxD0V3uVN4W3VfnrGsC9/hoglicgTNfABFG9JjISvkkU0dNY84MNHLWyOgxP9v9Y9pX4S7+A=="],
"@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.12", "", { "os": "android", "cpu": "arm64" }, "sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA=="],
"@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-7WQgR8SfOPwmDZGFkThUvsmd/nwAWv91oCO4I5LS7RKrssPZmOt7jONN0cW17ydGC1n/+puol1IpoieKqQidmg=="],
"@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg=="],
"@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-39Ks6UvIHq4rEogIfQBoBRusj0Q0nPVWIvqmwBLaT6aqQGIakHdESBVOPRRLacy4WwUPIx4ZKzfZ9PMW+IeyUQ=="],
"@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw=="],
"@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.11", "", { "os": "freebsd", "cpu": "x64" }, "sha512-jfsm0ZHfhiqrvWjJAmzsqiIFPz5e7mAoCOPBNTcNgkiid/LaFKiq92+0ojH+nmJmKYkre4t71BWXUZDNp7vsag=="],
"@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q=="],
"@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.11", "", { "os": "linux", "cpu": "arm" }, "sha512-zjQaUtSyq1nVe3nxmlSCuR96T1LPlpvmJ0SZy0WJFEsV4kFbXcq2u68L4E6O0XeFj4aex9bEauqjW8UQBeAvfQ=="],
"@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12", "", { "os": "linux", "cpu": "arm" }, "sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q=="],
"@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-rc.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-WMW1yE6IOnehTcFE9eipFkm3XN63zypWlrJQ2iF7NrQ9b2LDRjumFoOGJE8RJJTJCTBAdmLMnJ8uVitACUUo1Q=="],
"@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg=="],
"@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-jfndI9tsfm4APzjNt6QdBkYwre5lRPUgHeDHoI7ydKUuJvz3lZeCfMsI56BZj+7BYqiKsJm7cfd/6KYV7ubrBg=="],
"@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw=="],
"@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.11", "", { "os": "linux", "cpu": "ppc64" }, "sha512-ZlFgw46NOAGMgcdvdYwAGu2Q+SLFA9LzbJLW+iyMOJyhj5wk6P3KEE9Gct4xWwSzFoPI7JCdYmYMzVtlgQ+zfw=="],
"@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g=="],
"@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.0-rc.11", "", { "os": "linux", "cpu": "s390x" }, "sha512-hIOYmuT6ofM4K04XAZd3OzMySEO4K0/nc9+jmNcxNAxRi6c5UWpqfw3KMFV4MVFWL+jQsSh+bGw2VqmaPMTLyw=="],
"@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og=="],
"@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-rc.11", "", { "os": "linux", "cpu": "x64" }, "sha512-qXBQQO9OvkjjQPLdUVr7Nr2t3QTZI7s4KZtfw7HzBgjbmAPSFwSv4rmET9lLSgq3rH/ndA3ngv3Qb8l2njoPNA=="],
"@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-rc.12", "", { "os": "linux", "cpu": "x64" }, "sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg=="],
"@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.11", "", { "os": "linux", "cpu": "x64" }, "sha512-/tpFfoSTzUkH9LPY+cYbqZBDyyX62w5fICq9qzsHLL8uTI6BHip3Q9Uzft0wylk/i8OOwKik8OxW+QAhDmzwmg=="],
"@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.12", "", { "os": "linux", "cpu": "x64" }, "sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig=="],
"@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.11", "", { "os": "none", "cpu": "arm64" }, "sha512-mcp3Rio2w72IvdZG0oQ4bM2c2oumtwHfUfKncUM6zGgz0KgPz4YmDPQfnXEiY5t3+KD/i8HG2rOB/LxdmieK2g=="],
"@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.12", "", { "os": "none", "cpu": "arm64" }, "sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA=="],
"@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-rc.11", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, "cpu": "none" }, "sha512-LXk5Hii1Ph9asuGRjBuz8TUxdc1lWzB7nyfdoRgI0WGPZKmCxvlKk8KfYysqtr4MfGElu/f/pEQRh8fcEgkrWw=="],
"@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-rc.12", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, "cpu": "none" }, "sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg=="],
"@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-rc.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-dDwf5otnx0XgRY1yqxOC4ITizcdzS/8cQ3goOWv3jFAo4F+xQYni+hnMuO6+LssHHdJW7+OCVL3CoU4ycnh35Q=="],
"@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q=="],
"@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-rc.11", "", { "os": "win32", "cpu": "x64" }, "sha512-LN4/skhSggybX71ews7dAj6r2geaMJfm3kMbK2KhFMg9B10AZXnKoLCVVgzhMHL0S+aKtr4p8QbAW8k+w95bAA=="],
"@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-rc.12", "", { "os": "win32", "cpu": "x64" }, "sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw=="],
"@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.2", "", {}, "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw=="],
@@ -322,13 +322,13 @@
"@vue/babel-plugin-resolve-type": ["@vue/babel-plugin-resolve-type@2.0.1", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "@babel/parser": "^7.28.4", "@vue/compiler-sfc": "^3.5.22" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ybwgIuRGRRBhOU37GImDoWQoz+TlSqap65qVI6iwg/J7FfLTLmMf97TS7xQH9I7Qtr/gp161kYVdhr1ZMraSYQ=="],
"@vue/compiler-core": ["@vue/compiler-core@3.5.30", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/shared": "3.5.30", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw=="],
"@vue/compiler-core": ["@vue/compiler-core@3.5.31", "", { "dependencies": { "@babel/parser": "^7.29.2", "@vue/shared": "3.5.31", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-k/ueL14aNIEy5Onf0OVzR8kiqF/WThgLdFhxwa4e/KF/0qe38IwIdofoSWBTvvxQOesaz6riAFAUaYjoF9fLLQ=="],
"@vue/compiler-dom": ["@vue/compiler-dom@3.5.30", "", { "dependencies": { "@vue/compiler-core": "3.5.30", "@vue/shared": "3.5.30" } }, "sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g=="],
"@vue/compiler-dom": ["@vue/compiler-dom@3.5.31", "", { "dependencies": { "@vue/compiler-core": "3.5.31", "@vue/shared": "3.5.31" } }, "sha512-BMY/ozS/xxjYqRFL+tKdRpATJYDTTgWSo0+AJvJNg4ig+Hgb0dOsHPXvloHQ5hmlivUqw1Yt2pPIqp4e0v1GUw=="],
"@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.30", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/compiler-core": "3.5.30", "@vue/compiler-dom": "3.5.30", "@vue/compiler-ssr": "3.5.30", "@vue/shared": "3.5.30", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.8", "source-map-js": "^1.2.1" } }, "sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A=="],
"@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.31", "", { "dependencies": { "@babel/parser": "^7.29.2", "@vue/compiler-core": "3.5.31", "@vue/compiler-dom": "3.5.31", "@vue/compiler-ssr": "3.5.31", "@vue/shared": "3.5.31", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.8", "source-map-js": "^1.2.1" } }, "sha512-M8wpPgR9UJ8MiRGjppvx9uWJfLV7A/T+/rL8s/y3QG3u0c2/YZgff3d6SuimKRIhcYnWg5fTfDMlz2E6seUW8Q=="],
"@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.30", "", { "dependencies": { "@vue/compiler-dom": "3.5.30", "@vue/shared": "3.5.30" } }, "sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA=="],
"@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.31", "", { "dependencies": { "@vue/compiler-dom": "3.5.31", "@vue/shared": "3.5.31" } }, "sha512-h0xIMxrt/LHOvJKMri+vdYT92BrK3HFLtDqq9Pr/lVVfE4IyKZKvWf0vJFW10Yr6nX02OR4MkJwI0c1HDa1hog=="],
"@vue/devtools-api": ["@vue/devtools-api@7.7.9", "", { "dependencies": { "@vue/devtools-kit": "^7.7.9" } }, "sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g=="],
@@ -336,15 +336,15 @@
"@vue/devtools-shared": ["@vue/devtools-shared@7.7.9", "", { "dependencies": { "rfdc": "^1.4.1" } }, "sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA=="],
"@vue/reactivity": ["@vue/reactivity@3.5.30", "", { "dependencies": { "@vue/shared": "3.5.30" } }, "sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q=="],
"@vue/reactivity": ["@vue/reactivity@3.5.31", "", { "dependencies": { "@vue/shared": "3.5.31" } }, "sha512-DtKXxk9E/KuVvt8VxWu+6Luc9I9ETNcqR1T1oW1gf02nXaZ1kuAx58oVu7uX9XxJR0iJCro6fqBLw9oSBELo5g=="],
"@vue/runtime-core": ["@vue/runtime-core@3.5.30", "", { "dependencies": { "@vue/reactivity": "3.5.30", "@vue/shared": "3.5.30" } }, "sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg=="],
"@vue/runtime-core": ["@vue/runtime-core@3.5.31", "", { "dependencies": { "@vue/reactivity": "3.5.31", "@vue/shared": "3.5.31" } }, "sha512-AZPmIHXEAyhpkmN7aWlqjSfYynmkWlluDNPHMCZKFHH+lLtxP/30UJmoVhXmbDoP1Ng0jG0fyY2zCj1PnSSA6Q=="],
"@vue/runtime-dom": ["@vue/runtime-dom@3.5.30", "", { "dependencies": { "@vue/reactivity": "3.5.30", "@vue/runtime-core": "3.5.30", "@vue/shared": "3.5.30", "csstype": "^3.2.3" } }, "sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw=="],
"@vue/runtime-dom": ["@vue/runtime-dom@3.5.31", "", { "dependencies": { "@vue/reactivity": "3.5.31", "@vue/runtime-core": "3.5.31", "@vue/shared": "3.5.31", "csstype": "^3.2.3" } }, "sha512-xQJsNRmGPeDCJq/u813tyonNgWBFjzfVkBwDREdEWndBnGdHLHgkwNBQxLtg4zDrzKTEcnikUy1UUNecb3lJ6g=="],
"@vue/server-renderer": ["@vue/server-renderer@3.5.30", "", { "dependencies": { "@vue/compiler-ssr": "3.5.30", "@vue/shared": "3.5.30" }, "peerDependencies": { "vue": "3.5.30" } }, "sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ=="],
"@vue/server-renderer": ["@vue/server-renderer@3.5.31", "", { "dependencies": { "@vue/compiler-ssr": "3.5.31", "@vue/shared": "3.5.31" }, "peerDependencies": { "vue": "3.5.31" } }, "sha512-GJuwRvMcdZX/CriUnyIIOGkx3rMV3H6sOu0JhdKbduaeCji6zb60iOGMY7tFoN24NfsUYoFBhshZtGxGpxO4iA=="],
"@vue/shared": ["@vue/shared@3.5.30", "", {}, "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ=="],
"@vue/shared": ["@vue/shared@3.5.31", "", {}, "sha512-nBxuiuS9Lj5bPkPbWogPUnjxxWpkRniX7e5UBQDWl6Fsf4roq9wwV+cR7ezQ4zXswNvPIlsdj1slcLB7XCsRAw=="],
"@vueuse/core": ["@vueuse/core@14.2.1", "", { "dependencies": { "@types/web-bluetooth": "^0.0.21", "@vueuse/metadata": "14.2.1", "@vueuse/shared": "14.2.1" }, "peerDependencies": { "vue": "^3.5.0" } }, "sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ=="],
@@ -404,7 +404,7 @@
"copy-anything": ["copy-anything@4.0.5", "", { "dependencies": { "is-what": "^5.2.0" } }, "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA=="],
"cross-fetch": ["cross-fetch@4.0.0", "", { "dependencies": { "node-fetch": "^2.6.12" } }, "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g=="],
"cross-fetch": ["cross-fetch@4.1.0", "", { "dependencies": { "node-fetch": "^2.7.0" } }, "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw=="],
"css-tree": ["css-tree@3.2.1", "", { "dependencies": { "mdn-data": "2.27.1", "source-map-js": "^1.2.1" } }, "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA=="],
@@ -430,7 +430,7 @@
"escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="],
"estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
"estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
"exsolve": ["exsolve@1.0.8", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="],
@@ -452,9 +452,9 @@
"hookable": ["hookable@6.1.0", "", {}, "sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw=="],
"i18next": ["i18next@25.10.9", "", { "dependencies": { "@babel/runtime": "^7.29.2" }, "peerDependencies": { "typescript": "^5 || ^6" }, "optionalPeers": ["typescript"] }, "sha512-hQY9/bFoQKGlSKMlaCuLR8w1h5JjieqrsnZvEmj1Ja6Ec7fbyc4cTrCsY9mb9Sd8YQ/swsrKz1S9M8AcvVI70w=="],
"i18next": ["i18next@26.0.3", "", { "dependencies": { "@babel/runtime": "^7.29.2" }, "peerDependencies": { "typescript": "^5 || ^6" }, "optionalPeers": ["typescript"] }, "sha512-1571kXINxHKY7LksWp8wP+zP0YqHSSpl/OW0Y0owFEf2H3s8gCAffWaZivcz14rMkOvn3R/psiQxVsR9t2Nafg=="],
"i18next-http-backend": ["i18next-http-backend@3.0.2", "", { "dependencies": { "cross-fetch": "4.0.0" } }, "sha512-PdlvPnvIp4E1sYi46Ik4tBYh/v/NbYfFFgTjkwFl0is8A18s7/bx9aXqsrOax9WUbeNS6mD2oix7Z0yGGf6m5g=="],
"i18next-http-backend": ["i18next-http-backend@3.0.4", "", { "dependencies": { "cross-fetch": "4.1.0" } }, "sha512-udwrBIE6cNpqn1gRAqRULq3+7MzIIuaiKRWrz++dVz5SqWW2VwXmPJtAgkI0JtMLFaADC9qNmnZAxWAhsxXx2g=="],
"i18next-vue": ["i18next-vue@5.4.0", "", { "peerDependencies": { "i18next": ">=23", "vue": "^3.4.38" } }, "sha512-GDj0Xvmis5Xgcvo9gMBJMgJCtewYMLZP6gAEPDDGCMjA+QeB4uS4qUf1MK79mkz/FukhaJdC+nlj0y1qk6NO2Q=="],
@@ -570,7 +570,7 @@
"rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="],
"rolldown": ["rolldown@1.0.0-rc.11", "", { "dependencies": { "@oxc-project/types": "=0.122.0", "@rolldown/pluginutils": "1.0.0-rc.11" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.11", "@rolldown/binding-darwin-arm64": "1.0.0-rc.11", "@rolldown/binding-darwin-x64": "1.0.0-rc.11", "@rolldown/binding-freebsd-x64": "1.0.0-rc.11", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.11", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.11", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.11", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.11", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.11", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.11", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.11", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.11", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.11", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.11", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.11" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-NRjoKMusSjfRbSYiH3VSumlkgFe7kYAa3pzVOsVYVFY3zb5d7nS+a3KGQ7hJKXuYWbzJKPVQ9Wxq2UvyK+ENpw=="],
"rolldown": ["rolldown@1.0.0-rc.12", "", { "dependencies": { "@oxc-project/types": "=0.122.0", "@rolldown/pluginutils": "1.0.0-rc.12" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.12", "@rolldown/binding-darwin-arm64": "1.0.0-rc.12", "@rolldown/binding-darwin-x64": "1.0.0-rc.12", "@rolldown/binding-freebsd-x64": "1.0.0-rc.12", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.12", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.12", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.12", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.12", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.12", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.12", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.12", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.12", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.12", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.12", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.12" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A=="],
"scule": ["scule@1.3.0", "", {}, "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g=="],
@@ -628,17 +628,17 @@
"unplugin-utils": ["unplugin-utils@0.3.1", "", { "dependencies": { "pathe": "^2.0.3", "picomatch": "^4.0.3" } }, "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog=="],
"unplugin-vue-components": ["unplugin-vue-components@31.1.0", "", { "dependencies": { "chokidar": "^5.0.0", "local-pkg": "^1.1.2", "magic-string": "^0.30.21", "mlly": "^1.8.2", "obug": "^2.1.1", "picomatch": "^4.0.3", "tinyglobby": "^0.2.15", "unplugin": "^2.3.11", "unplugin-utils": "^0.3.1" }, "peerDependencies": { "@nuxt/kit": "^3.2.2 || ^4.0.0", "vue": "^3.0.0" }, "optionalPeers": ["@nuxt/kit"] }, "sha512-9EbV5ark21A4BOBt6RJGJXCVD2I1eoxTZL1TAvNgYTokcrFIiuxpufb8owyWn7n+z2x8daz/ltZq6IRRKL3ydQ=="],
"unplugin-vue-components": ["unplugin-vue-components@32.0.0", "", { "dependencies": { "chokidar": "^5.0.0", "local-pkg": "^1.1.2", "magic-string": "^0.30.21", "mlly": "^1.8.2", "obug": "^2.1.1", "picomatch": "^4.0.3", "tinyglobby": "^0.2.15", "unplugin": "^3.0.0", "unplugin-utils": "^0.3.1" }, "peerDependencies": { "@nuxt/kit": "^3.2.2 || ^4.0.0", "vue": "^3.0.0" }, "optionalPeers": ["@nuxt/kit"] }, "sha512-uLdccgS7mf3pv1bCCP20y/hm+u1eOjAmygVkh+Oa70MPkzgl1eQv1L0CwdHNM3gscO8/GDMGIET98Ja47CBbZg=="],
"update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="],
"urlpattern-polyfill": ["urlpattern-polyfill@10.1.0", "", {}, "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw=="],
"vite": ["vite@8.0.2", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.3", "postcss": "^8.5.8", "rolldown": "1.0.0-rc.11", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.0", "esbuild": "^0.27.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-1gFhNi+bHhRE/qKZOJXACm6tX4bA3Isy9KuKF15AgSRuRazNBOJfdDemPBU16/mpMxApDPrWvZ08DcLPEoRnuA=="],
"vite": ["vite@8.0.3", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.8", "rolldown": "1.0.0-rc.12", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.0", "esbuild": "^0.27.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ=="],
"vite-ssr-components": ["vite-ssr-components@0.5.2", "", { "dependencies": { "@babel/parser": "^7.27.2", "@babel/traverse": "^7.27.1", "picomatch": "^4.0.2" } }, "sha512-1a8YThRwyyu1gGjc1Ral9Q4uS+n0D4GydhbkVd9c1SA1YNgXyrOizttped87C1ItEznQzhiCyQjaOcYnXa0zMA=="],
"vue": ["vue@3.5.30", "", { "dependencies": { "@vue/compiler-dom": "3.5.30", "@vue/compiler-sfc": "3.5.30", "@vue/runtime-dom": "3.5.30", "@vue/server-renderer": "3.5.30", "@vue/shared": "3.5.30" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg=="],
"vue": ["vue@3.5.31", "", { "dependencies": { "@vue/compiler-dom": "3.5.31", "@vue/compiler-sfc": "3.5.31", "@vue/runtime-dom": "3.5.31", "@vue/server-renderer": "3.5.31", "@vue/shared": "3.5.31" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-iV/sU9SzOlmA/0tygSmjkEN6Jbs3nPoIPFhCMLD2STrjgOU8DX7ZtzMhg4ahVwf5Rp9KoFzcXeB1ZrVbLBp5/Q=="],
"vue-router": ["vue-router@5.0.4", "", { "dependencies": { "@babel/generator": "^7.28.6", "@vue-macros/common": "^3.1.1", "@vue/devtools-api": "^8.0.6", "ast-walker-scope": "^0.8.3", "chokidar": "^5.0.0", "json5": "^2.2.3", "local-pkg": "^1.1.2", "magic-string": "^0.30.21", "mlly": "^1.8.0", "muggle-string": "^0.4.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "scule": "^1.3.0", "tinyglobby": "^0.2.15", "unplugin": "^3.0.0", "unplugin-utils": "^0.3.1", "yaml": "^2.8.2" }, "peerDependencies": { "@pinia/colada": ">=0.21.2", "@vue/compiler-sfc": "^3.5.17", "pinia": "^3.0.4", "vue": "^3.5.0" }, "optionalPeers": ["@pinia/colada", "@vue/compiler-sfc", "pinia"] }, "sha512-lCqDLCI2+fKVRl2OzXuzdSWmxXFLQRxQbmHugnRpTMyYiT+hNaycV0faqG5FBHDXoYrZ6MQcX87BvbY8mQ20Bg=="],
@@ -666,17 +666,25 @@
"@vitejs/plugin-vue-jsx/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.11", "", {}, "sha512-xQO9vbwBecJRv9EUcQ/y0dzSTJgA7Q6UVN7xp6B81+tBGSLVAK03yJ9NkJaUA7JFD91kbjxRSC/mDnmvXzbHoQ=="],
"@vue-macros/common/@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.30", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/compiler-core": "3.5.30", "@vue/compiler-dom": "3.5.30", "@vue/compiler-ssr": "3.5.30", "@vue/shared": "3.5.30", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.8", "source-map-js": "^1.2.1" } }, "sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A=="],
"@vue/babel-plugin-jsx/@vue/shared": ["@vue/shared@3.5.30", "", {}, "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ=="],
"@vue/babel-plugin-resolve-type/@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.30", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/compiler-core": "3.5.30", "@vue/compiler-dom": "3.5.30", "@vue/compiler-ssr": "3.5.30", "@vue/shared": "3.5.30", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.8", "source-map-js": "^1.2.1" } }, "sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A=="],
"@vue/compiler-core/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
"@vue/compiler-sfc/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
"@vue/devtools-kit/hookable": ["hookable@5.5.3", "", {}, "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="],
"@vue/devtools-kit/perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="],
"magic-regexp/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
"mlly/pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="],
"oxc-parser/@oxc-project/types": ["@oxc-project/types@0.115.0", "", {}, "sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw=="],
"rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.11", "", {}, "sha512-xQO9vbwBecJRv9EUcQ/y0dzSTJgA7Q6UVN7xp6B81+tBGSLVAK03yJ9NkJaUA7JFD91kbjxRSC/mDnmvXzbHoQ=="],
"rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.12", "", {}, "sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw=="],
"strip-literal/js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="],
@@ -684,12 +692,32 @@
"unconfig-core/quansync": ["quansync@1.0.0", "", {}, "sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA=="],
"unimport/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
"unplugin-vue-components/unplugin": ["unplugin@3.0.0", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg=="],
"vue-router/@vue/devtools-api": ["@vue/devtools-api@8.1.1", "", { "dependencies": { "@vue/devtools-kit": "^8.1.1" } }, "sha512-bsDMJ07b3GN1puVwJb/fyFnj/U2imyswK5UQVLZwVl7O05jDrt6BHxeG5XffmOOdasOj/bOmIjxJvGPxU7pcqw=="],
"vue-router/unplugin": ["unplugin@3.0.0", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg=="],
"@vue-macros/common/@vue/compiler-sfc/@vue/compiler-core": ["@vue/compiler-core@3.5.30", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/shared": "3.5.30", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw=="],
"@vue-macros/common/@vue/compiler-sfc/@vue/compiler-dom": ["@vue/compiler-dom@3.5.30", "", { "dependencies": { "@vue/compiler-core": "3.5.30", "@vue/shared": "3.5.30" } }, "sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g=="],
"@vue-macros/common/@vue/compiler-sfc/@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.30", "", { "dependencies": { "@vue/compiler-dom": "3.5.30", "@vue/shared": "3.5.30" } }, "sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA=="],
"@vue-macros/common/@vue/compiler-sfc/@vue/shared": ["@vue/shared@3.5.30", "", {}, "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ=="],
"@vue-macros/common/@vue/compiler-sfc/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
"@vue/babel-plugin-resolve-type/@vue/compiler-sfc/@vue/compiler-core": ["@vue/compiler-core@3.5.30", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/shared": "3.5.30", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw=="],
"@vue/babel-plugin-resolve-type/@vue/compiler-sfc/@vue/compiler-dom": ["@vue/compiler-dom@3.5.30", "", { "dependencies": { "@vue/compiler-core": "3.5.30", "@vue/shared": "3.5.30" } }, "sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g=="],
"@vue/babel-plugin-resolve-type/@vue/compiler-sfc/@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.30", "", { "dependencies": { "@vue/compiler-dom": "3.5.30", "@vue/shared": "3.5.30" } }, "sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA=="],
"@vue/babel-plugin-resolve-type/@vue/compiler-sfc/@vue/shared": ["@vue/shared@3.5.30", "", {}, "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ=="],
"@vue/babel-plugin-resolve-type/@vue/compiler-sfc/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
"mlly/pkg-types/confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="],
"vue-router/@vue/devtools-api/@vue/devtools-kit": ["@vue/devtools-kit@8.1.1", "", { "dependencies": { "@vue/devtools-shared": "^8.1.1", "birpc": "^2.6.1", "hookable": "^5.5.3", "perfect-debounce": "^2.0.0" } }, "sha512-gVBaBv++i+adg4JpH71k9ppl4soyR7Y2McEqO5YNgv0BI1kMZ7BDX5gnwkZ5COYgiCyhejZG+yGNrBAjj6Coqg=="],

View File

@@ -2,9 +2,9 @@
"name": "holistream",
"type": "module",
"scripts": {
"dev": "bunx --bun vite",
"build": "bunx --bun vite build",
"preview": "bunx --bun vite preview"
"dev": "bun x --bun vite",
"build": "bun x --bun vite build",
"preview": "bun x --bun vite preview"
},
"dependencies": {
"@bufbuild/protobuf": "^2.11.0",
@@ -12,37 +12,37 @@
"@hattip/adapter-node": "^0.0.49",
"@hiogawa/tiny-rpc": "^0.2.3-pre.18",
"@hiogawa/utils": "^1.7.0",
"@hono/node-server": "^1.19.11",
"@hono/node-server": "^1.19.12",
"@hono/zod-validator": "^0.7.6",
"@pinia/colada": "^1.0.0",
"@pinia/colada": "^1.1.0",
"@tanstack/vue-table": "^8.21.3",
"@unhead/vue": "^2.1.12",
"@vueuse/core": "^14.2.1",
"aws4fetch": "^1.0.20",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"hono": "^4.12.7",
"i18next": "^25.8.18",
"i18next-http-backend": "^3.0.2",
"hono": "^4.12.9",
"i18next": "^26.0.3",
"i18next-http-backend": "^3.0.4",
"i18next-vue": "^5.4.0",
"is-mobile": "^5.0.0",
"pinia": "^3.0.4",
"superjson": "^2.2.6",
"tailwind-merge": "^3.5.0",
"tweetnacl": "^1.0.3",
"vue": "^3.5.30",
"vue-router": "^5.0.3",
"vue": "^3.5.31",
"vue-router": "^5.0.4",
"zod": "^4.3.6"
},
"devDependencies": {
"@types/bun": "^1.3.10",
"@vitejs/plugin-vue": "^6.0.4",
"@vitejs/plugin-vue-jsx": "^5.1.4",
"estree-walker": "2.0.2",
"unocss": "^66.6.6",
"@types/bun": "^1.3.11",
"@vitejs/plugin-vue": "^6.0.5",
"@vitejs/plugin-vue-jsx": "^5.1.5",
"estree-walker": "3.0.3",
"unocss": "^66.6.7",
"unplugin-auto-import": "^21.0.0",
"unplugin-vue-components": "^31.0.0",
"vite": "^8.0.0-beta.16",
"unplugin-vue-components": "^32.0.0",
"vite": "^8.0.3",
"vite-ssr-components": "^0.5.2"
}
}

View File

@@ -1,10 +1,22 @@
<template>
<div>
<h1 class="text-2xl font-bold mb-4">Analytics</h1>
<p class="text-gray-600 mb-8">Your streaming analytics will be displayed here.</p>
<PageHeader title="Analytics"
description="Your streaming analytics will be displayed here."
:breadcrumbs="breadcrumbs" />
<div class="p-6 rounded-xl border border-gray-200">
<h2 class="text-lg font-semibold mb-4">Coming Soon</h2>
<p class="text-gray-600">We are working hard to bring you detailed analytics about your streams. Stay tuned!</p>
</div>
</div>
</template>
</template>
<script lang="ts" setup>
import { useTranslation } from 'i18next-vue';
const {t} = useTranslation()
const breadcrumbs = computed(() => [
{ label: t('pageHeader.dashboard'), to: '/overview' },
{ label: t('pageHeader.settings'), to: '/settings' },
{ label: "Analytics"}
// ...(currentItem.value ? [{ label: currentItem.value.label + (currentItem.value.value.includes("admin") ? " (Admin)" : "") }] : []),
]);
</script>

View File

@@ -22,6 +22,7 @@ import {
AdminAdTemplate,
AdminAgent,
AdminDashboard,
AdminDlqEntry,
AdminJob,
AdminPayment,
AdminPlan,
@@ -526,6 +527,43 @@ export interface RetryAdminJobResponse {
job?: AdminJob | undefined;
}
export interface ListAdminDlqJobsRequest {
offset?: number | undefined;
limit?: number | undefined;
}
export interface ListAdminDlqJobsResponse {
items?: AdminDlqEntry[] | undefined;
total?: number | undefined;
offset?: number | undefined;
limit?: number | undefined;
}
export interface GetAdminDlqJobRequest {
id?: string | undefined;
}
export interface GetAdminDlqJobResponse {
item?: AdminDlqEntry | undefined;
}
export interface RetryAdminDlqJobRequest {
id?: string | undefined;
}
export interface RetryAdminDlqJobResponse {
job?: AdminJob | undefined;
}
export interface RemoveAdminDlqJobRequest {
id?: string | undefined;
}
export interface RemoveAdminDlqJobResponse {
status?: string | undefined;
jobId?: string | undefined;
}
export interface ListAdminAgentsRequest {
}
@@ -8402,6 +8440,567 @@ export const RetryAdminJobResponse: MessageFns<RetryAdminJobResponse> = {
},
};
function createBaseListAdminDlqJobsRequest(): ListAdminDlqJobsRequest {
return { offset: 0, limit: 0 };
}
export const ListAdminDlqJobsRequest: MessageFns<ListAdminDlqJobsRequest> = {
encode(message: ListAdminDlqJobsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.offset !== undefined && message.offset !== 0) {
writer.uint32(8).int32(message.offset);
}
if (message.limit !== undefined && message.limit !== 0) {
writer.uint32(16).int32(message.limit);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): ListAdminDlqJobsRequest {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseListAdminDlqJobsRequest();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 8) {
break;
}
message.offset = reader.int32();
continue;
}
case 2: {
if (tag !== 16) {
break;
}
message.limit = reader.int32();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): ListAdminDlqJobsRequest {
return {
offset: isSet(object.offset) ? globalThis.Number(object.offset) : 0,
limit: isSet(object.limit) ? globalThis.Number(object.limit) : 0,
};
},
toJSON(message: ListAdminDlqJobsRequest): unknown {
const obj: any = {};
if (message.offset !== undefined && message.offset !== 0) {
obj.offset = Math.round(message.offset);
}
if (message.limit !== undefined && message.limit !== 0) {
obj.limit = Math.round(message.limit);
}
return obj;
},
create<I extends Exact<DeepPartial<ListAdminDlqJobsRequest>, I>>(base?: I): ListAdminDlqJobsRequest {
return ListAdminDlqJobsRequest.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<ListAdminDlqJobsRequest>, I>>(object: I): ListAdminDlqJobsRequest {
const message = createBaseListAdminDlqJobsRequest();
message.offset = object.offset ?? 0;
message.limit = object.limit ?? 0;
return message;
},
};
function createBaseListAdminDlqJobsResponse(): ListAdminDlqJobsResponse {
return { items: [], total: 0, offset: 0, limit: 0 };
}
export const ListAdminDlqJobsResponse: MessageFns<ListAdminDlqJobsResponse> = {
encode(message: ListAdminDlqJobsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.items !== undefined && message.items.length !== 0) {
for (const v of message.items) {
AdminDlqEntry.encode(v!, writer.uint32(10).fork()).join();
}
}
if (message.total !== undefined && message.total !== 0) {
writer.uint32(16).int64(message.total);
}
if (message.offset !== undefined && message.offset !== 0) {
writer.uint32(24).int32(message.offset);
}
if (message.limit !== undefined && message.limit !== 0) {
writer.uint32(32).int32(message.limit);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): ListAdminDlqJobsResponse {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseListAdminDlqJobsResponse();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
const el = AdminDlqEntry.decode(reader, reader.uint32());
if (el !== undefined) {
message.items!.push(el);
}
continue;
}
case 2: {
if (tag !== 16) {
break;
}
message.total = longToNumber(reader.int64());
continue;
}
case 3: {
if (tag !== 24) {
break;
}
message.offset = reader.int32();
continue;
}
case 4: {
if (tag !== 32) {
break;
}
message.limit = reader.int32();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): ListAdminDlqJobsResponse {
return {
items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => AdminDlqEntry.fromJSON(e)) : [],
total: isSet(object.total) ? globalThis.Number(object.total) : 0,
offset: isSet(object.offset) ? globalThis.Number(object.offset) : 0,
limit: isSet(object.limit) ? globalThis.Number(object.limit) : 0,
};
},
toJSON(message: ListAdminDlqJobsResponse): unknown {
const obj: any = {};
if (message.items?.length) {
obj.items = message.items.map((e) => AdminDlqEntry.toJSON(e));
}
if (message.total !== undefined && message.total !== 0) {
obj.total = Math.round(message.total);
}
if (message.offset !== undefined && message.offset !== 0) {
obj.offset = Math.round(message.offset);
}
if (message.limit !== undefined && message.limit !== 0) {
obj.limit = Math.round(message.limit);
}
return obj;
},
create<I extends Exact<DeepPartial<ListAdminDlqJobsResponse>, I>>(base?: I): ListAdminDlqJobsResponse {
return ListAdminDlqJobsResponse.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<ListAdminDlqJobsResponse>, I>>(object: I): ListAdminDlqJobsResponse {
const message = createBaseListAdminDlqJobsResponse();
message.items = object.items?.map((e) => AdminDlqEntry.fromPartial(e)) || [];
message.total = object.total ?? 0;
message.offset = object.offset ?? 0;
message.limit = object.limit ?? 0;
return message;
},
};
function createBaseGetAdminDlqJobRequest(): GetAdminDlqJobRequest {
return { id: "" };
}
export const GetAdminDlqJobRequest: MessageFns<GetAdminDlqJobRequest> = {
encode(message: GetAdminDlqJobRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.id !== undefined && message.id !== "") {
writer.uint32(10).string(message.id);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): GetAdminDlqJobRequest {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseGetAdminDlqJobRequest();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.id = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): GetAdminDlqJobRequest {
return { id: isSet(object.id) ? globalThis.String(object.id) : "" };
},
toJSON(message: GetAdminDlqJobRequest): unknown {
const obj: any = {};
if (message.id !== undefined && message.id !== "") {
obj.id = message.id;
}
return obj;
},
create<I extends Exact<DeepPartial<GetAdminDlqJobRequest>, I>>(base?: I): GetAdminDlqJobRequest {
return GetAdminDlqJobRequest.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<GetAdminDlqJobRequest>, I>>(object: I): GetAdminDlqJobRequest {
const message = createBaseGetAdminDlqJobRequest();
message.id = object.id ?? "";
return message;
},
};
function createBaseGetAdminDlqJobResponse(): GetAdminDlqJobResponse {
return { item: undefined };
}
export const GetAdminDlqJobResponse: MessageFns<GetAdminDlqJobResponse> = {
encode(message: GetAdminDlqJobResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.item !== undefined) {
AdminDlqEntry.encode(message.item, writer.uint32(10).fork()).join();
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): GetAdminDlqJobResponse {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseGetAdminDlqJobResponse();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.item = AdminDlqEntry.decode(reader, reader.uint32());
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): GetAdminDlqJobResponse {
return { item: isSet(object.item) ? AdminDlqEntry.fromJSON(object.item) : undefined };
},
toJSON(message: GetAdminDlqJobResponse): unknown {
const obj: any = {};
if (message.item !== undefined) {
obj.item = AdminDlqEntry.toJSON(message.item);
}
return obj;
},
create<I extends Exact<DeepPartial<GetAdminDlqJobResponse>, I>>(base?: I): GetAdminDlqJobResponse {
return GetAdminDlqJobResponse.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<GetAdminDlqJobResponse>, I>>(object: I): GetAdminDlqJobResponse {
const message = createBaseGetAdminDlqJobResponse();
message.item = (object.item !== undefined && object.item !== null)
? AdminDlqEntry.fromPartial(object.item)
: undefined;
return message;
},
};
function createBaseRetryAdminDlqJobRequest(): RetryAdminDlqJobRequest {
return { id: "" };
}
export const RetryAdminDlqJobRequest: MessageFns<RetryAdminDlqJobRequest> = {
encode(message: RetryAdminDlqJobRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.id !== undefined && message.id !== "") {
writer.uint32(10).string(message.id);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): RetryAdminDlqJobRequest {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRetryAdminDlqJobRequest();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.id = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): RetryAdminDlqJobRequest {
return { id: isSet(object.id) ? globalThis.String(object.id) : "" };
},
toJSON(message: RetryAdminDlqJobRequest): unknown {
const obj: any = {};
if (message.id !== undefined && message.id !== "") {
obj.id = message.id;
}
return obj;
},
create<I extends Exact<DeepPartial<RetryAdminDlqJobRequest>, I>>(base?: I): RetryAdminDlqJobRequest {
return RetryAdminDlqJobRequest.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<RetryAdminDlqJobRequest>, I>>(object: I): RetryAdminDlqJobRequest {
const message = createBaseRetryAdminDlqJobRequest();
message.id = object.id ?? "";
return message;
},
};
function createBaseRetryAdminDlqJobResponse(): RetryAdminDlqJobResponse {
return { job: undefined };
}
export const RetryAdminDlqJobResponse: MessageFns<RetryAdminDlqJobResponse> = {
encode(message: RetryAdminDlqJobResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.job !== undefined) {
AdminJob.encode(message.job, writer.uint32(10).fork()).join();
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): RetryAdminDlqJobResponse {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRetryAdminDlqJobResponse();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.job = AdminJob.decode(reader, reader.uint32());
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): RetryAdminDlqJobResponse {
return { job: isSet(object.job) ? AdminJob.fromJSON(object.job) : undefined };
},
toJSON(message: RetryAdminDlqJobResponse): unknown {
const obj: any = {};
if (message.job !== undefined) {
obj.job = AdminJob.toJSON(message.job);
}
return obj;
},
create<I extends Exact<DeepPartial<RetryAdminDlqJobResponse>, I>>(base?: I): RetryAdminDlqJobResponse {
return RetryAdminDlqJobResponse.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<RetryAdminDlqJobResponse>, I>>(object: I): RetryAdminDlqJobResponse {
const message = createBaseRetryAdminDlqJobResponse();
message.job = (object.job !== undefined && object.job !== null) ? AdminJob.fromPartial(object.job) : undefined;
return message;
},
};
function createBaseRemoveAdminDlqJobRequest(): RemoveAdminDlqJobRequest {
return { id: "" };
}
export const RemoveAdminDlqJobRequest: MessageFns<RemoveAdminDlqJobRequest> = {
encode(message: RemoveAdminDlqJobRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.id !== undefined && message.id !== "") {
writer.uint32(10).string(message.id);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): RemoveAdminDlqJobRequest {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRemoveAdminDlqJobRequest();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.id = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): RemoveAdminDlqJobRequest {
return { id: isSet(object.id) ? globalThis.String(object.id) : "" };
},
toJSON(message: RemoveAdminDlqJobRequest): unknown {
const obj: any = {};
if (message.id !== undefined && message.id !== "") {
obj.id = message.id;
}
return obj;
},
create<I extends Exact<DeepPartial<RemoveAdminDlqJobRequest>, I>>(base?: I): RemoveAdminDlqJobRequest {
return RemoveAdminDlqJobRequest.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<RemoveAdminDlqJobRequest>, I>>(object: I): RemoveAdminDlqJobRequest {
const message = createBaseRemoveAdminDlqJobRequest();
message.id = object.id ?? "";
return message;
},
};
function createBaseRemoveAdminDlqJobResponse(): RemoveAdminDlqJobResponse {
return { status: "", jobId: "" };
}
export const RemoveAdminDlqJobResponse: MessageFns<RemoveAdminDlqJobResponse> = {
encode(message: RemoveAdminDlqJobResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.status !== undefined && message.status !== "") {
writer.uint32(10).string(message.status);
}
if (message.jobId !== undefined && message.jobId !== "") {
writer.uint32(18).string(message.jobId);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): RemoveAdminDlqJobResponse {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRemoveAdminDlqJobResponse();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.status = reader.string();
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.jobId = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): RemoveAdminDlqJobResponse {
return {
status: isSet(object.status) ? globalThis.String(object.status) : "",
jobId: isSet(object.jobId)
? globalThis.String(object.jobId)
: isSet(object.job_id)
? globalThis.String(object.job_id)
: "",
};
},
toJSON(message: RemoveAdminDlqJobResponse): unknown {
const obj: any = {};
if (message.status !== undefined && message.status !== "") {
obj.status = message.status;
}
if (message.jobId !== undefined && message.jobId !== "") {
obj.jobId = message.jobId;
}
return obj;
},
create<I extends Exact<DeepPartial<RemoveAdminDlqJobResponse>, I>>(base?: I): RemoveAdminDlqJobResponse {
return RemoveAdminDlqJobResponse.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<RemoveAdminDlqJobResponse>, I>>(object: I): RemoveAdminDlqJobResponse {
const message = createBaseRemoveAdminDlqJobResponse();
message.status = object.status ?? "";
message.jobId = object.jobId ?? "";
return message;
},
};
function createBaseListAdminAgentsRequest(): ListAdminAgentsRequest {
return {};
}
@@ -9142,6 +9741,50 @@ export const AdminService = {
Buffer.from(RetryAdminJobResponse.encode(value).finish()),
responseDeserialize: (value: Buffer): RetryAdminJobResponse => RetryAdminJobResponse.decode(value),
},
listAdminDlqJobs: {
path: "/stream.app.v1.Admin/ListAdminDlqJobs",
requestStream: false,
responseStream: false,
requestSerialize: (value: ListAdminDlqJobsRequest): Buffer =>
Buffer.from(ListAdminDlqJobsRequest.encode(value).finish()),
requestDeserialize: (value: Buffer): ListAdminDlqJobsRequest => ListAdminDlqJobsRequest.decode(value),
responseSerialize: (value: ListAdminDlqJobsResponse): Buffer =>
Buffer.from(ListAdminDlqJobsResponse.encode(value).finish()),
responseDeserialize: (value: Buffer): ListAdminDlqJobsResponse => ListAdminDlqJobsResponse.decode(value),
},
getAdminDlqJob: {
path: "/stream.app.v1.Admin/GetAdminDlqJob",
requestStream: false,
responseStream: false,
requestSerialize: (value: GetAdminDlqJobRequest): Buffer =>
Buffer.from(GetAdminDlqJobRequest.encode(value).finish()),
requestDeserialize: (value: Buffer): GetAdminDlqJobRequest => GetAdminDlqJobRequest.decode(value),
responseSerialize: (value: GetAdminDlqJobResponse): Buffer =>
Buffer.from(GetAdminDlqJobResponse.encode(value).finish()),
responseDeserialize: (value: Buffer): GetAdminDlqJobResponse => GetAdminDlqJobResponse.decode(value),
},
retryAdminDlqJob: {
path: "/stream.app.v1.Admin/RetryAdminDlqJob",
requestStream: false,
responseStream: false,
requestSerialize: (value: RetryAdminDlqJobRequest): Buffer =>
Buffer.from(RetryAdminDlqJobRequest.encode(value).finish()),
requestDeserialize: (value: Buffer): RetryAdminDlqJobRequest => RetryAdminDlqJobRequest.decode(value),
responseSerialize: (value: RetryAdminDlqJobResponse): Buffer =>
Buffer.from(RetryAdminDlqJobResponse.encode(value).finish()),
responseDeserialize: (value: Buffer): RetryAdminDlqJobResponse => RetryAdminDlqJobResponse.decode(value),
},
removeAdminDlqJob: {
path: "/stream.app.v1.Admin/RemoveAdminDlqJob",
requestStream: false,
responseStream: false,
requestSerialize: (value: RemoveAdminDlqJobRequest): Buffer =>
Buffer.from(RemoveAdminDlqJobRequest.encode(value).finish()),
requestDeserialize: (value: Buffer): RemoveAdminDlqJobRequest => RemoveAdminDlqJobRequest.decode(value),
responseSerialize: (value: RemoveAdminDlqJobResponse): Buffer =>
Buffer.from(RemoveAdminDlqJobResponse.encode(value).finish()),
responseDeserialize: (value: Buffer): RemoveAdminDlqJobResponse => RemoveAdminDlqJobResponse.decode(value),
},
listAdminAgents: {
path: "/stream.app.v1.Admin/ListAdminAgents",
requestStream: false,
@@ -9223,6 +9866,10 @@ export interface AdminServer extends UntypedServiceImplementation {
createAdminJob: handleUnaryCall<CreateAdminJobRequest, CreateAdminJobResponse>;
cancelAdminJob: handleUnaryCall<CancelAdminJobRequest, CancelAdminJobResponse>;
retryAdminJob: handleUnaryCall<RetryAdminJobRequest, RetryAdminJobResponse>;
listAdminDlqJobs: handleUnaryCall<ListAdminDlqJobsRequest, ListAdminDlqJobsResponse>;
getAdminDlqJob: handleUnaryCall<GetAdminDlqJobRequest, GetAdminDlqJobResponse>;
retryAdminDlqJob: handleUnaryCall<RetryAdminDlqJobRequest, RetryAdminDlqJobResponse>;
removeAdminDlqJob: handleUnaryCall<RemoveAdminDlqJobRequest, RemoveAdminDlqJobResponse>;
listAdminAgents: handleUnaryCall<ListAdminAgentsRequest, ListAdminAgentsResponse>;
restartAdminAgent: handleUnaryCall<RestartAdminAgentRequest, AdminAgentCommandResponse>;
updateAdminAgent: handleUnaryCall<UpdateAdminAgentRequest, AdminAgentCommandResponse>;
@@ -9859,6 +10506,66 @@ export interface AdminClient extends Client {
options: Partial<CallOptions>,
callback: (error: ServiceError | null, response: RetryAdminJobResponse) => void,
): ClientUnaryCall;
listAdminDlqJobs(
request: ListAdminDlqJobsRequest,
callback: (error: ServiceError | null, response: ListAdminDlqJobsResponse) => void,
): ClientUnaryCall;
listAdminDlqJobs(
request: ListAdminDlqJobsRequest,
metadata: Metadata,
callback: (error: ServiceError | null, response: ListAdminDlqJobsResponse) => void,
): ClientUnaryCall;
listAdminDlqJobs(
request: ListAdminDlqJobsRequest,
metadata: Metadata,
options: Partial<CallOptions>,
callback: (error: ServiceError | null, response: ListAdminDlqJobsResponse) => void,
): ClientUnaryCall;
getAdminDlqJob(
request: GetAdminDlqJobRequest,
callback: (error: ServiceError | null, response: GetAdminDlqJobResponse) => void,
): ClientUnaryCall;
getAdminDlqJob(
request: GetAdminDlqJobRequest,
metadata: Metadata,
callback: (error: ServiceError | null, response: GetAdminDlqJobResponse) => void,
): ClientUnaryCall;
getAdminDlqJob(
request: GetAdminDlqJobRequest,
metadata: Metadata,
options: Partial<CallOptions>,
callback: (error: ServiceError | null, response: GetAdminDlqJobResponse) => void,
): ClientUnaryCall;
retryAdminDlqJob(
request: RetryAdminDlqJobRequest,
callback: (error: ServiceError | null, response: RetryAdminDlqJobResponse) => void,
): ClientUnaryCall;
retryAdminDlqJob(
request: RetryAdminDlqJobRequest,
metadata: Metadata,
callback: (error: ServiceError | null, response: RetryAdminDlqJobResponse) => void,
): ClientUnaryCall;
retryAdminDlqJob(
request: RetryAdminDlqJobRequest,
metadata: Metadata,
options: Partial<CallOptions>,
callback: (error: ServiceError | null, response: RetryAdminDlqJobResponse) => void,
): ClientUnaryCall;
removeAdminDlqJob(
request: RemoveAdminDlqJobRequest,
callback: (error: ServiceError | null, response: RemoveAdminDlqJobResponse) => void,
): ClientUnaryCall;
removeAdminDlqJob(
request: RemoveAdminDlqJobRequest,
metadata: Metadata,
callback: (error: ServiceError | null, response: RemoveAdminDlqJobResponse) => void,
): ClientUnaryCall;
removeAdminDlqJob(
request: RemoveAdminDlqJobRequest,
metadata: Metadata,
options: Partial<CallOptions>,
callback: (error: ServiceError | null, response: RemoveAdminDlqJobResponse) => void,
): ClientUnaryCall;
listAdminAgents(
request: ListAdminAgentsRequest,
callback: (error: ServiceError | null, response: ListAdminAgentsResponse) => void,

View File

@@ -397,6 +397,13 @@ export interface AdminAgent {
updatedAt?: string | undefined;
}
export interface AdminDlqEntry {
job?: AdminJob | undefined;
failureTime?: string | undefined;
reason?: string | undefined;
retryCount?: number | undefined;
}
function createBaseMessageResponse(): MessageResponse {
return { message: "" };
}
@@ -7495,6 +7502,122 @@ export const AdminAgent: MessageFns<AdminAgent> = {
},
};
function createBaseAdminDlqEntry(): AdminDlqEntry {
return { job: undefined, failureTime: undefined, reason: "", retryCount: 0 };
}
export const AdminDlqEntry: MessageFns<AdminDlqEntry> = {
encode(message: AdminDlqEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.job !== undefined) {
AdminJob.encode(message.job, writer.uint32(10).fork()).join();
}
if (message.failureTime !== undefined) {
Timestamp.encode(toTimestamp(message.failureTime), writer.uint32(18).fork()).join();
}
if (message.reason !== undefined && message.reason !== "") {
writer.uint32(26).string(message.reason);
}
if (message.retryCount !== undefined && message.retryCount !== 0) {
writer.uint32(32).int32(message.retryCount);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): AdminDlqEntry {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseAdminDlqEntry();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.job = AdminJob.decode(reader, reader.uint32());
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.failureTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
continue;
}
case 3: {
if (tag !== 26) {
break;
}
message.reason = reader.string();
continue;
}
case 4: {
if (tag !== 32) {
break;
}
message.retryCount = reader.int32();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): AdminDlqEntry {
return {
job: isSet(object.job) ? AdminJob.fromJSON(object.job) : undefined,
failureTime: isSet(object.failureTime)
? globalThis.String(object.failureTime)
: isSet(object.failure_time)
? globalThis.String(object.failure_time)
: undefined,
reason: isSet(object.reason) ? globalThis.String(object.reason) : "",
retryCount: isSet(object.retryCount)
? globalThis.Number(object.retryCount)
: isSet(object.retry_count)
? globalThis.Number(object.retry_count)
: 0,
};
},
toJSON(message: AdminDlqEntry): unknown {
const obj: any = {};
if (message.job !== undefined) {
obj.job = AdminJob.toJSON(message.job);
}
if (message.failureTime !== undefined) {
obj.failureTime = message.failureTime;
}
if (message.reason !== undefined && message.reason !== "") {
obj.reason = message.reason;
}
if (message.retryCount !== undefined && message.retryCount !== 0) {
obj.retryCount = Math.round(message.retryCount);
}
return obj;
},
create<I extends Exact<DeepPartial<AdminDlqEntry>, I>>(base?: I): AdminDlqEntry {
return AdminDlqEntry.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<AdminDlqEntry>, I>>(object: I): AdminDlqEntry {
const message = createBaseAdminDlqEntry();
message.job = (object.job !== undefined && object.job !== null) ? AdminJob.fromPartial(object.job) : undefined;
message.failureTime = object.failureTime ?? undefined;
message.reason = object.reason ?? "";
message.retryCount = object.retryCount ?? 0;
return message;
},
};
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T

View File

@@ -0,0 +1,323 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.11.4
// protoc unknown
// source: app/v1/video_metadata.proto
/* eslint-disable */
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import {
type CallOptions,
type ChannelCredentials,
Client,
type ClientOptions,
type ClientUnaryCall,
type handleUnaryCall,
makeGenericClientConstructor,
type Metadata,
type ServiceError,
type UntypedServiceImplementation,
} from "@grpc/grpc-js";
import { AdTemplate, Domain, PlayerConfig, PopupAd, Video } from "./common";
export const protobufPackage = "stream.app.v1";
export interface GetVideoMetadataRequest {
videoId?: string | undefined;
}
export interface GetVideoMetadataResponse {
video?: Video | undefined;
defaultPlayerConfig?: PlayerConfig | undefined;
adTemplate?: AdTemplate | undefined;
activePopupAd?: PopupAd | undefined;
domains?: Domain[] | undefined;
}
function createBaseGetVideoMetadataRequest(): GetVideoMetadataRequest {
return { videoId: "" };
}
export const GetVideoMetadataRequest: MessageFns<GetVideoMetadataRequest> = {
encode(message: GetVideoMetadataRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.videoId !== undefined && message.videoId !== "") {
writer.uint32(10).string(message.videoId);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): GetVideoMetadataRequest {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseGetVideoMetadataRequest();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.videoId = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): GetVideoMetadataRequest {
return {
videoId: isSet(object.videoId)
? globalThis.String(object.videoId)
: isSet(object.video_id)
? globalThis.String(object.video_id)
: "",
};
},
toJSON(message: GetVideoMetadataRequest): unknown {
const obj: any = {};
if (message.videoId !== undefined && message.videoId !== "") {
obj.videoId = message.videoId;
}
return obj;
},
create<I extends Exact<DeepPartial<GetVideoMetadataRequest>, I>>(base?: I): GetVideoMetadataRequest {
return GetVideoMetadataRequest.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<GetVideoMetadataRequest>, I>>(object: I): GetVideoMetadataRequest {
const message = createBaseGetVideoMetadataRequest();
message.videoId = object.videoId ?? "";
return message;
},
};
function createBaseGetVideoMetadataResponse(): GetVideoMetadataResponse {
return {
video: undefined,
defaultPlayerConfig: undefined,
adTemplate: undefined,
activePopupAd: undefined,
domains: [],
};
}
export const GetVideoMetadataResponse: MessageFns<GetVideoMetadataResponse> = {
encode(message: GetVideoMetadataResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.video !== undefined) {
Video.encode(message.video, writer.uint32(10).fork()).join();
}
if (message.defaultPlayerConfig !== undefined) {
PlayerConfig.encode(message.defaultPlayerConfig, writer.uint32(18).fork()).join();
}
if (message.adTemplate !== undefined) {
AdTemplate.encode(message.adTemplate, writer.uint32(26).fork()).join();
}
if (message.activePopupAd !== undefined) {
PopupAd.encode(message.activePopupAd, writer.uint32(34).fork()).join();
}
if (message.domains !== undefined && message.domains.length !== 0) {
for (const v of message.domains) {
Domain.encode(v!, writer.uint32(42).fork()).join();
}
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): GetVideoMetadataResponse {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseGetVideoMetadataResponse();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.video = Video.decode(reader, reader.uint32());
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.defaultPlayerConfig = PlayerConfig.decode(reader, reader.uint32());
continue;
}
case 3: {
if (tag !== 26) {
break;
}
message.adTemplate = AdTemplate.decode(reader, reader.uint32());
continue;
}
case 4: {
if (tag !== 34) {
break;
}
message.activePopupAd = PopupAd.decode(reader, reader.uint32());
continue;
}
case 5: {
if (tag !== 42) {
break;
}
const el = Domain.decode(reader, reader.uint32());
if (el !== undefined) {
message.domains!.push(el);
}
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): GetVideoMetadataResponse {
return {
video: isSet(object.video) ? Video.fromJSON(object.video) : undefined,
defaultPlayerConfig: isSet(object.defaultPlayerConfig)
? PlayerConfig.fromJSON(object.defaultPlayerConfig)
: isSet(object.default_player_config)
? PlayerConfig.fromJSON(object.default_player_config)
: undefined,
adTemplate: isSet(object.adTemplate)
? AdTemplate.fromJSON(object.adTemplate)
: isSet(object.ad_template)
? AdTemplate.fromJSON(object.ad_template)
: undefined,
activePopupAd: isSet(object.activePopupAd)
? PopupAd.fromJSON(object.activePopupAd)
: isSet(object.active_popup_ad)
? PopupAd.fromJSON(object.active_popup_ad)
: undefined,
domains: globalThis.Array.isArray(object?.domains) ? object.domains.map((e: any) => Domain.fromJSON(e)) : [],
};
},
toJSON(message: GetVideoMetadataResponse): unknown {
const obj: any = {};
if (message.video !== undefined) {
obj.video = Video.toJSON(message.video);
}
if (message.defaultPlayerConfig !== undefined) {
obj.defaultPlayerConfig = PlayerConfig.toJSON(message.defaultPlayerConfig);
}
if (message.adTemplate !== undefined) {
obj.adTemplate = AdTemplate.toJSON(message.adTemplate);
}
if (message.activePopupAd !== undefined) {
obj.activePopupAd = PopupAd.toJSON(message.activePopupAd);
}
if (message.domains?.length) {
obj.domains = message.domains.map((e) => Domain.toJSON(e));
}
return obj;
},
create<I extends Exact<DeepPartial<GetVideoMetadataResponse>, I>>(base?: I): GetVideoMetadataResponse {
return GetVideoMetadataResponse.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<GetVideoMetadataResponse>, I>>(object: I): GetVideoMetadataResponse {
const message = createBaseGetVideoMetadataResponse();
message.video = (object.video !== undefined && object.video !== null) ? Video.fromPartial(object.video) : undefined;
message.defaultPlayerConfig = (object.defaultPlayerConfig !== undefined && object.defaultPlayerConfig !== null)
? PlayerConfig.fromPartial(object.defaultPlayerConfig)
: undefined;
message.adTemplate = (object.adTemplate !== undefined && object.adTemplate !== null)
? AdTemplate.fromPartial(object.adTemplate)
: undefined;
message.activePopupAd = (object.activePopupAd !== undefined && object.activePopupAd !== null)
? PopupAd.fromPartial(object.activePopupAd)
: undefined;
message.domains = object.domains?.map((e) => Domain.fromPartial(e)) || [];
return message;
},
};
export type VideoMetadataService = typeof VideoMetadataService;
export const VideoMetadataService = {
getVideoMetadata: {
path: "/stream.app.v1.VideoMetadata/GetVideoMetadata",
requestStream: false,
responseStream: false,
requestSerialize: (value: GetVideoMetadataRequest): Buffer =>
Buffer.from(GetVideoMetadataRequest.encode(value).finish()),
requestDeserialize: (value: Buffer): GetVideoMetadataRequest => GetVideoMetadataRequest.decode(value),
responseSerialize: (value: GetVideoMetadataResponse): Buffer =>
Buffer.from(GetVideoMetadataResponse.encode(value).finish()),
responseDeserialize: (value: Buffer): GetVideoMetadataResponse => GetVideoMetadataResponse.decode(value),
},
} as const;
export interface VideoMetadataServer extends UntypedServiceImplementation {
getVideoMetadata: handleUnaryCall<GetVideoMetadataRequest, GetVideoMetadataResponse>;
}
export interface VideoMetadataClient extends Client {
getVideoMetadata(
request: GetVideoMetadataRequest,
callback: (error: ServiceError | null, response: GetVideoMetadataResponse) => void,
): ClientUnaryCall;
getVideoMetadata(
request: GetVideoMetadataRequest,
metadata: Metadata,
callback: (error: ServiceError | null, response: GetVideoMetadataResponse) => void,
): ClientUnaryCall;
getVideoMetadata(
request: GetVideoMetadataRequest,
metadata: Metadata,
options: Partial<CallOptions>,
callback: (error: ServiceError | null, response: GetVideoMetadataResponse) => void,
): ClientUnaryCall;
}
export const VideoMetadataClient = makeGenericClientConstructor(
VideoMetadataService,
"stream.app.v1.VideoMetadata",
) as unknown as {
new (address: string, credentials: ChannelCredentials, options?: Partial<ClientOptions>): VideoMetadataClient;
service: typeof VideoMetadataService;
serviceName: string;
};
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 {} ? { [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;
}

View File

@@ -1,86 +0,0 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.11.4
// protoc unknown
// source: google/protobuf/empty.proto
/* eslint-disable */
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
export const protobufPackage = "google.protobuf";
/**
* A generic empty message that you can re-use to avoid defining duplicated
* empty messages in your APIs. A typical example is to use it as the request
* or the response type of an API method. For instance:
*
* service Foo {
* rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
* }
*/
export interface Empty {
}
function createBaseEmpty(): Empty {
return {};
}
export const Empty: MessageFns<Empty> = {
encode(_: Empty, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): Empty {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseEmpty();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(_: any): Empty {
return {};
},
toJSON(_: Empty): unknown {
const obj: any = {};
return obj;
},
create<I extends Exact<DeepPartial<Empty>, I>>(base?: I): Empty {
return Empty.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<Empty>, I>>(_: I): Empty {
const message = createBaseEmpty();
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 {} ? { [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 };
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;
}

View File

@@ -1,231 +0,0 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.11.4
// protoc unknown
// source: google/protobuf/timestamp.proto
/* eslint-disable */
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
export const protobufPackage = "google.protobuf";
/**
* A Timestamp represents a point in time independent of any time zone or local
* calendar, encoded as a count of seconds and fractions of seconds at
* nanosecond resolution. The count is relative to an epoch at UTC midnight on
* January 1, 1970, in the proleptic Gregorian calendar which extends the
* Gregorian calendar backwards to year one.
*
* All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
* second table is needed for interpretation, using a [24-hour linear
* smear](https://developers.google.com/time/smear).
*
* The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
* restricting to that range, we ensure that we can convert to and from [RFC
* 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
*
* # Examples
*
* Example 1: Compute Timestamp from POSIX `time()`.
*
* Timestamp timestamp;
* timestamp.set_seconds(time(NULL));
* timestamp.set_nanos(0);
*
* Example 2: Compute Timestamp from POSIX `gettimeofday()`.
*
* struct timeval tv;
* gettimeofday(&tv, NULL);
*
* Timestamp timestamp;
* timestamp.set_seconds(tv.tv_sec);
* timestamp.set_nanos(tv.tv_usec * 1000);
*
* Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
*
* FILETIME ft;
* GetSystemTimeAsFileTime(&ft);
* UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
*
* // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
* // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
* Timestamp timestamp;
* timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
* timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
*
* Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
*
* long millis = System.currentTimeMillis();
*
* Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
* .setNanos((int) ((millis % 1000) * 1000000)).build();
*
* Example 5: Compute Timestamp from Java `Instant.now()`.
*
* Instant now = Instant.now();
*
* Timestamp timestamp =
* Timestamp.newBuilder().setSeconds(now.getEpochSecond())
* .setNanos(now.getNano()).build();
*
* Example 6: Compute Timestamp from current time in Python.
*
* timestamp = Timestamp()
* timestamp.GetCurrentTime()
*
* # JSON Mapping
*
* In JSON format, the Timestamp type is encoded as a string in the
* [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
* format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
* where {year} is always expressed using four digits while {month}, {day},
* {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
* seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
* are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
* is required. A proto3 JSON serializer should always use UTC (as indicated by
* "Z") when printing the Timestamp type and a proto3 JSON parser should be
* able to accept both UTC and other timezones (as indicated by an offset).
*
* For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
* 01:30 UTC on January 15, 2017.
*
* In JavaScript, one can convert a Date object to this format using the
* standard
* [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
* method. In Python, a standard `datetime.datetime` object can be converted
* to this format using
* [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
* the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
* the Joda Time's [`ISODateTimeFormat.dateTime()`](
* http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()
* ) to obtain a formatter capable of generating timestamps in this format.
*/
export interface Timestamp {
/**
* Represents seconds of UTC time since Unix epoch
* 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
* 9999-12-31T23:59:59Z inclusive.
*/
seconds?:
| number
| undefined;
/**
* Non-negative fractions of a second at nanosecond resolution. Negative
* second values with fractions must still have non-negative nanos values
* that count forward in time. Must be from 0 to 999,999,999
* inclusive.
*/
nanos?: number | undefined;
}
function createBaseTimestamp(): Timestamp {
return { seconds: 0, nanos: 0 };
}
export const Timestamp: MessageFns<Timestamp> = {
encode(message: Timestamp, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.seconds !== undefined && message.seconds !== 0) {
writer.uint32(8).int64(message.seconds);
}
if (message.nanos !== undefined && message.nanos !== 0) {
writer.uint32(16).int32(message.nanos);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): Timestamp {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseTimestamp();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 8) {
break;
}
message.seconds = longToNumber(reader.int64());
continue;
}
case 2: {
if (tag !== 16) {
break;
}
message.nanos = reader.int32();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): Timestamp {
return {
seconds: isSet(object.seconds) ? globalThis.Number(object.seconds) : 0,
nanos: isSet(object.nanos) ? globalThis.Number(object.nanos) : 0,
};
},
toJSON(message: Timestamp): unknown {
const obj: any = {};
if (message.seconds !== undefined && message.seconds !== 0) {
obj.seconds = Math.round(message.seconds);
}
if (message.nanos !== undefined && message.nanos !== 0) {
obj.nanos = Math.round(message.nanos);
}
return obj;
},
create<I extends Exact<DeepPartial<Timestamp>, I>>(base?: I): Timestamp {
return Timestamp.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<Timestamp>, I>>(object: I): Timestamp {
const message = createBaseTimestamp();
message.seconds = object.seconds ?? 0;
message.nanos = object.nanos ?? 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 {} ? { [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 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;
}

View File

@@ -1,719 +0,0 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.11.4
// protoc unknown
// source: v1/common.proto
/* eslint-disable */
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import { Timestamp } from "../google/protobuf/timestamp";
export const protobufPackage = "stream.common.v1";
export interface RequestContext {
userId?: string | undefined;
email?: string | undefined;
role?: string | undefined;
requestId?: string | undefined;
source?: string | undefined;
}
export interface PaginationRequest {
page?: number | undefined;
pageSize?: number | undefined;
}
export interface PaginationResponse {
page?: number | undefined;
pageSize?: number | undefined;
total?: number | undefined;
}
export interface Money {
amount?: number | undefined;
currency?: string | undefined;
}
export interface Empty {
}
export interface IdRequest {
id?: string | undefined;
}
export interface DeleteResponse {
message?: string | undefined;
}
export interface TimestampRange {
from?: string | undefined;
to?: string | undefined;
}
function createBaseRequestContext(): RequestContext {
return { userId: "", email: "", role: "", requestId: "", source: "" };
}
export const RequestContext: MessageFns<RequestContext> = {
encode(message: RequestContext, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.userId !== undefined && message.userId !== "") {
writer.uint32(10).string(message.userId);
}
if (message.email !== undefined && message.email !== "") {
writer.uint32(18).string(message.email);
}
if (message.role !== undefined && message.role !== "") {
writer.uint32(26).string(message.role);
}
if (message.requestId !== undefined && message.requestId !== "") {
writer.uint32(34).string(message.requestId);
}
if (message.source !== undefined && message.source !== "") {
writer.uint32(42).string(message.source);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): RequestContext {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRequestContext();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.userId = reader.string();
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.email = reader.string();
continue;
}
case 3: {
if (tag !== 26) {
break;
}
message.role = reader.string();
continue;
}
case 4: {
if (tag !== 34) {
break;
}
message.requestId = reader.string();
continue;
}
case 5: {
if (tag !== 42) {
break;
}
message.source = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): RequestContext {
return {
userId: isSet(object.userId)
? globalThis.String(object.userId)
: isSet(object.user_id)
? globalThis.String(object.user_id)
: "",
email: isSet(object.email) ? globalThis.String(object.email) : "",
role: isSet(object.role) ? globalThis.String(object.role) : "",
requestId: isSet(object.requestId)
? globalThis.String(object.requestId)
: isSet(object.request_id)
? globalThis.String(object.request_id)
: "",
source: isSet(object.source) ? globalThis.String(object.source) : "",
};
},
toJSON(message: RequestContext): unknown {
const obj: any = {};
if (message.userId !== undefined && message.userId !== "") {
obj.userId = message.userId;
}
if (message.email !== undefined && message.email !== "") {
obj.email = message.email;
}
if (message.role !== undefined && message.role !== "") {
obj.role = message.role;
}
if (message.requestId !== undefined && message.requestId !== "") {
obj.requestId = message.requestId;
}
if (message.source !== undefined && message.source !== "") {
obj.source = message.source;
}
return obj;
},
create<I extends Exact<DeepPartial<RequestContext>, I>>(base?: I): RequestContext {
return RequestContext.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<RequestContext>, I>>(object: I): RequestContext {
const message = createBaseRequestContext();
message.userId = object.userId ?? "";
message.email = object.email ?? "";
message.role = object.role ?? "";
message.requestId = object.requestId ?? "";
message.source = object.source ?? "";
return message;
},
};
function createBasePaginationRequest(): PaginationRequest {
return { page: 0, pageSize: 0 };
}
export const PaginationRequest: MessageFns<PaginationRequest> = {
encode(message: PaginationRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.page !== undefined && message.page !== 0) {
writer.uint32(8).int32(message.page);
}
if (message.pageSize !== undefined && message.pageSize !== 0) {
writer.uint32(16).int32(message.pageSize);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): PaginationRequest {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBasePaginationRequest();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 8) {
break;
}
message.page = reader.int32();
continue;
}
case 2: {
if (tag !== 16) {
break;
}
message.pageSize = reader.int32();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): PaginationRequest {
return {
page: isSet(object.page) ? globalThis.Number(object.page) : 0,
pageSize: isSet(object.pageSize)
? globalThis.Number(object.pageSize)
: isSet(object.page_size)
? globalThis.Number(object.page_size)
: 0,
};
},
toJSON(message: PaginationRequest): unknown {
const obj: any = {};
if (message.page !== undefined && message.page !== 0) {
obj.page = Math.round(message.page);
}
if (message.pageSize !== undefined && message.pageSize !== 0) {
obj.pageSize = Math.round(message.pageSize);
}
return obj;
},
create<I extends Exact<DeepPartial<PaginationRequest>, I>>(base?: I): PaginationRequest {
return PaginationRequest.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<PaginationRequest>, I>>(object: I): PaginationRequest {
const message = createBasePaginationRequest();
message.page = object.page ?? 0;
message.pageSize = object.pageSize ?? 0;
return message;
},
};
function createBasePaginationResponse(): PaginationResponse {
return { page: 0, pageSize: 0, total: 0 };
}
export const PaginationResponse: MessageFns<PaginationResponse> = {
encode(message: PaginationResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.page !== undefined && message.page !== 0) {
writer.uint32(8).int32(message.page);
}
if (message.pageSize !== undefined && message.pageSize !== 0) {
writer.uint32(16).int32(message.pageSize);
}
if (message.total !== undefined && message.total !== 0) {
writer.uint32(24).int64(message.total);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): PaginationResponse {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBasePaginationResponse();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 8) {
break;
}
message.page = reader.int32();
continue;
}
case 2: {
if (tag !== 16) {
break;
}
message.pageSize = reader.int32();
continue;
}
case 3: {
if (tag !== 24) {
break;
}
message.total = longToNumber(reader.int64());
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): PaginationResponse {
return {
page: isSet(object.page) ? globalThis.Number(object.page) : 0,
pageSize: isSet(object.pageSize)
? globalThis.Number(object.pageSize)
: isSet(object.page_size)
? globalThis.Number(object.page_size)
: 0,
total: isSet(object.total) ? globalThis.Number(object.total) : 0,
};
},
toJSON(message: PaginationResponse): unknown {
const obj: any = {};
if (message.page !== undefined && message.page !== 0) {
obj.page = Math.round(message.page);
}
if (message.pageSize !== undefined && message.pageSize !== 0) {
obj.pageSize = Math.round(message.pageSize);
}
if (message.total !== undefined && message.total !== 0) {
obj.total = Math.round(message.total);
}
return obj;
},
create<I extends Exact<DeepPartial<PaginationResponse>, I>>(base?: I): PaginationResponse {
return PaginationResponse.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<PaginationResponse>, I>>(object: I): PaginationResponse {
const message = createBasePaginationResponse();
message.page = object.page ?? 0;
message.pageSize = object.pageSize ?? 0;
message.total = object.total ?? 0;
return message;
},
};
function createBaseMoney(): Money {
return { amount: 0, currency: "" };
}
export const Money: MessageFns<Money> = {
encode(message: Money, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.amount !== undefined && message.amount !== 0) {
writer.uint32(9).double(message.amount);
}
if (message.currency !== undefined && message.currency !== "") {
writer.uint32(18).string(message.currency);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): Money {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseMoney();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 9) {
break;
}
message.amount = reader.double();
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.currency = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): Money {
return {
amount: isSet(object.amount) ? globalThis.Number(object.amount) : 0,
currency: isSet(object.currency) ? globalThis.String(object.currency) : "",
};
},
toJSON(message: Money): unknown {
const obj: any = {};
if (message.amount !== undefined && message.amount !== 0) {
obj.amount = message.amount;
}
if (message.currency !== undefined && message.currency !== "") {
obj.currency = message.currency;
}
return obj;
},
create<I extends Exact<DeepPartial<Money>, I>>(base?: I): Money {
return Money.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<Money>, I>>(object: I): Money {
const message = createBaseMoney();
message.amount = object.amount ?? 0;
message.currency = object.currency ?? "";
return message;
},
};
function createBaseEmpty(): Empty {
return {};
}
export const Empty: MessageFns<Empty> = {
encode(_: Empty, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): Empty {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseEmpty();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(_: any): Empty {
return {};
},
toJSON(_: Empty): unknown {
const obj: any = {};
return obj;
},
create<I extends Exact<DeepPartial<Empty>, I>>(base?: I): Empty {
return Empty.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<Empty>, I>>(_: I): Empty {
const message = createBaseEmpty();
return message;
},
};
function createBaseIdRequest(): IdRequest {
return { id: "" };
}
export const IdRequest: MessageFns<IdRequest> = {
encode(message: IdRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.id !== undefined && message.id !== "") {
writer.uint32(10).string(message.id);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): IdRequest {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseIdRequest();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.id = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): IdRequest {
return { id: isSet(object.id) ? globalThis.String(object.id) : "" };
},
toJSON(message: IdRequest): unknown {
const obj: any = {};
if (message.id !== undefined && message.id !== "") {
obj.id = message.id;
}
return obj;
},
create<I extends Exact<DeepPartial<IdRequest>, I>>(base?: I): IdRequest {
return IdRequest.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<IdRequest>, I>>(object: I): IdRequest {
const message = createBaseIdRequest();
message.id = object.id ?? "";
return message;
},
};
function createBaseDeleteResponse(): DeleteResponse {
return { message: "" };
}
export const DeleteResponse: MessageFns<DeleteResponse> = {
encode(message: DeleteResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.message !== undefined && message.message !== "") {
writer.uint32(10).string(message.message);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): DeleteResponse {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseDeleteResponse();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.message = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): DeleteResponse {
return { message: isSet(object.message) ? globalThis.String(object.message) : "" };
},
toJSON(message: DeleteResponse): unknown {
const obj: any = {};
if (message.message !== undefined && message.message !== "") {
obj.message = message.message;
}
return obj;
},
create<I extends Exact<DeepPartial<DeleteResponse>, I>>(base?: I): DeleteResponse {
return DeleteResponse.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<DeleteResponse>, I>>(object: I): DeleteResponse {
const message = createBaseDeleteResponse();
message.message = object.message ?? "";
return message;
},
};
function createBaseTimestampRange(): TimestampRange {
return { from: undefined, to: undefined };
}
export const TimestampRange: MessageFns<TimestampRange> = {
encode(message: TimestampRange, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.from !== undefined) {
Timestamp.encode(toTimestamp(message.from), writer.uint32(10).fork()).join();
}
if (message.to !== undefined) {
Timestamp.encode(toTimestamp(message.to), writer.uint32(18).fork()).join();
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): TimestampRange {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseTimestampRange();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): TimestampRange {
return {
from: isSet(object.from) ? globalThis.String(object.from) : undefined,
to: isSet(object.to) ? globalThis.String(object.to) : undefined,
};
},
toJSON(message: TimestampRange): unknown {
const obj: any = {};
if (message.from !== undefined) {
obj.from = message.from;
}
if (message.to !== undefined) {
obj.to = message.to;
}
return obj;
},
create<I extends Exact<DeepPartial<TimestampRange>, I>>(base?: I): TimestampRange {
return TimestampRange.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<TimestampRange>, I>>(object: I): TimestampRange {
const message = createBaseTimestampRange();
message.from = object.from ?? undefined;
message.to = object.to ?? 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 {} ? { [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 toTimestamp(dateStr: string): Timestamp {
const date = new globalThis.Date(dateStr);
const seconds = Math.trunc(date.getTime() / 1_000);
const nanos = (date.getTime() % 1_000) * 1_000_000;
return { seconds, nanos };
}
function fromTimestamp(t: Timestamp): string {
let millis = (t.seconds || 0) * 1_000;
millis += (t.nanos || 0) / 1_000_000;
return new globalThis.Date(millis).toISOString();
}
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 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