mirror of
https://github.com/gethomepage/homepage.git
synced 2025-12-06 21:57:48 +01:00
Compare commits
1 Commits
dev
...
0395f21116
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0395f21116 |
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -38,4 +38,3 @@ What type of change does your PR introduce to Homepage?
|
|||||||
- [ ] If applicable, I have reviewed the [feature / enhancement](https://gethomepage.dev/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/more/development/#service-widget-guidelines).
|
- [ ] If applicable, I have reviewed the [feature / enhancement](https://gethomepage.dev/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/more/development/#service-widget-guidelines).
|
||||||
- [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/more/development/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/more/development/#code-linting).
|
- [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/more/development/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/more/development/#code-linting).
|
||||||
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.
|
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.
|
||||||
- [ ] In the description above I have disclosed the use of AI tools in the coding of this PR.
|
|
||||||
|
|||||||
@@ -159,19 +159,6 @@ Widgets can tint their metric block text automatically based on rules defined al
|
|||||||
|
|
||||||
Supported numeric operators for the `when` property are `gt`, `gte`, `lt`, `lte`, `eq`, `ne`, `between`, and `outside`. String rules support `equals`, `includes`, `startsWith`, `endsWith`, and `regex`. Each rule can be inverted with `negate: true`, and string rules may pass `caseSensitive: true` or custom regex `flags`. The highlight engine does its best to coerce formatted values, but you will get the most reliable results when you pass plain numbers or strings into `<Block>`.
|
Supported numeric operators for the `when` property are `gt`, `gte`, `lt`, `lte`, `eq`, `ne`, `between`, and `outside`. String rules support `equals`, `includes`, `startsWith`, `endsWith`, and `regex`. Each rule can be inverted with `negate: true`, and string rules may pass `caseSensitive: true` or custom regex `flags`. The highlight engine does its best to coerce formatted values, but you will get the most reliable results when you pass plain numbers or strings into `<Block>`.
|
||||||
|
|
||||||
#### Value Only Highlighting
|
|
||||||
|
|
||||||
You can optionally apply highlighting only to the value portion of a block (not the label) by setting `valueOnly: true` on the field configuration. This keeps the label visible while highlighting only the metric value itself.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- Sonarr:
|
|
||||||
...
|
|
||||||
highlight:
|
|
||||||
queued:
|
|
||||||
valueOnly: true
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
## Descriptions
|
## Descriptions
|
||||||
|
|
||||||
Services may have descriptions,
|
Services may have descriptions,
|
||||||
|
|||||||
@@ -396,9 +396,7 @@ Set your desired language using:
|
|||||||
language: fr
|
language: fr
|
||||||
```
|
```
|
||||||
|
|
||||||
Currently supported languages: ca, de, en, es, fr, he, hr, hu, it, nb-NO, nl, pt, ru, sv, vi, zh-Hans (Simplified), zh-Hant (Traditional)
|
Currently supported languages: ca, de, en, es, fr, he, hr, hu, it, nb-NO, nl, pt, ru, sv, vi, zh-CN, zh-Hant
|
||||||
|
|
||||||
`zh-CN` will still work and is automatically mapped to `zh-Hans` for backwards compatibility.
|
|
||||||
|
|
||||||
You can also specify locales e.g. for the DateTime widget, e.g. en-AU, en-GB, etc.
|
You can also specify locales e.g. for the DateTime widget, e.g. en-AU, en-GB, etc.
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,4 @@ widget:
|
|||||||
type: frigate
|
type: frigate
|
||||||
url: http://frigate.host.or.ip:port
|
url: http://frigate.host.or.ip:port
|
||||||
enableRecentEvents: true # Optional, defaults to false
|
enableRecentEvents: true # Optional, defaults to false
|
||||||
username: username # optional
|
|
||||||
password: password # optional
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -12,17 +12,11 @@ Learn more about [Gluetun](https://github.com/qdm12/gluetun).
|
|||||||
Allowed fields: `["public_ip", "region", "country", "port_forwarded"]`.
|
Allowed fields: `["public_ip", "region", "country", "port_forwarded"]`.
|
||||||
Default fields: `["public_ip", "region", "country"]`.
|
Default fields: `["public_ip", "region", "country"]`.
|
||||||
|
|
||||||
To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication). Note that to use the api key method, you must add the route `GET /v1/publicip/ip` to the `routes` array in your Gluetun config.toml. Similarly, if you want to include the `port_forwarded` field, you must add the route `GET /v1/openvpn/portforwarded` (or `/v1/portforward`) to your Gluetun config.toml.
|
To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication). Note that to use the api key method, you must add the route `GET /v1/publicip/ip` to the `routes` array in your Gluetun config.toml. Similarly, if you want to include the `port_forwarded` field, you must add the route `GET /v1/openvpn/portforwarded` to your Gluetun config.toml.
|
||||||
|
|
||||||
| Gluetun Version | Homepage Widget Version |
|
|
||||||
| --------------- | ----------------------- |
|
|
||||||
| < 3.40.1 | 1 (default) |
|
|
||||||
| >= 3.40.1 | 2 |
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
widget:
|
widget:
|
||||||
type: gluetun
|
type: gluetun
|
||||||
url: http://gluetun.host.or.ip:port
|
url: http://gluetun.host.or.ip:port
|
||||||
key: gluetunkey # Not required if /v1/publicip/ip endpoint is configured with `auth = none`
|
key: gluetunkey # Not required if /v1/publicip/ip endpoint is configured with `auth = none`
|
||||||
version: 2 # optional, default is 1
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -25,18 +25,18 @@
|
|||||||
"luxon": "^3.6.1",
|
"luxon": "^3.6.1",
|
||||||
"memory-cache": "^0.2.0",
|
"memory-cache": "^0.2.0",
|
||||||
"minecraftstatuspinger": "^1.2.2",
|
"minecraftstatuspinger": "^1.2.2",
|
||||||
"next": "^15.5.7",
|
"next": "^15.5.2",
|
||||||
"next-i18next": "^12.1.0",
|
"next-i18next": "^12.1.0",
|
||||||
"ping": "^0.4.4",
|
"ping": "^0.4.4",
|
||||||
"pretty-bytes": "^7.1.0",
|
"pretty-bytes": "^7.1.0",
|
||||||
"raw-body": "^3.0.2",
|
"raw-body": "^3.0.1",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
"react-i18next": "^15.5.3",
|
"react-i18next": "^15.5.3",
|
||||||
"react-icons": "^5.4.0",
|
"react-icons": "^5.4.0",
|
||||||
"recharts": "^3.1.2",
|
"recharts": "^3.1.2",
|
||||||
"swr": "^2.3.3",
|
"swr": "^2.3.3",
|
||||||
"systeminformation": "^5.27.11",
|
"systeminformation": "^5.27.7",
|
||||||
"tough-cookie": "^6.0.0",
|
"tough-cookie": "^6.0.0",
|
||||||
"urbackup-server-api": "^0.8.9",
|
"urbackup-server-api": "^0.8.9",
|
||||||
"winston": "^3.17.0",
|
"winston": "^3.17.0",
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
"eslint-plugin-react": "^7.37.4",
|
"eslint-plugin-react": "^7.37.4",
|
||||||
"eslint-plugin-react-hooks": "^5.2.0",
|
"eslint-plugin-react-hooks": "^5.2.0",
|
||||||
"postcss": "^8.5.6",
|
"postcss": "^8.5.6",
|
||||||
"prettier": "^3.7.3",
|
"prettier": "^3.6.2",
|
||||||
"prettier-plugin-organize-imports": "^4.3.0",
|
"prettier-plugin-organize-imports": "^4.3.0",
|
||||||
"tailwind-scrollbar": "^4.0.2",
|
"tailwind-scrollbar": "^4.0.2",
|
||||||
"tailwindcss": "^4.0.9",
|
"tailwindcss": "^4.0.9",
|
||||||
|
|||||||
434
pnpm-lock.yaml
generated
434
pnpm-lock.yaml
generated
@@ -51,11 +51,11 @@ importers:
|
|||||||
specifier: ^1.2.2
|
specifier: ^1.2.2
|
||||||
version: 1.2.2
|
version: 1.2.2
|
||||||
next:
|
next:
|
||||||
specifier: ^15.5.7
|
specifier: ^15.5.2
|
||||||
version: 15.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
version: 15.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
next-i18next:
|
next-i18next:
|
||||||
specifier: ^12.1.0
|
specifier: ^12.1.0
|
||||||
version: 12.1.0(next@15.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
version: 12.1.0(next@15.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
ping:
|
ping:
|
||||||
specifier: ^0.4.4
|
specifier: ^0.4.4
|
||||||
version: 0.4.4
|
version: 0.4.4
|
||||||
@@ -63,8 +63,8 @@ importers:
|
|||||||
specifier: ^7.1.0
|
specifier: ^7.1.0
|
||||||
version: 7.1.0
|
version: 7.1.0
|
||||||
raw-body:
|
raw-body:
|
||||||
specifier: ^3.0.2
|
specifier: ^3.0.1
|
||||||
version: 3.0.2
|
version: 3.0.1
|
||||||
react:
|
react:
|
||||||
specifier: ^18.3.1
|
specifier: ^18.3.1
|
||||||
version: 18.3.1
|
version: 18.3.1
|
||||||
@@ -84,8 +84,8 @@ importers:
|
|||||||
specifier: ^2.3.3
|
specifier: ^2.3.3
|
||||||
version: 2.3.3(react@18.3.1)
|
version: 2.3.3(react@18.3.1)
|
||||||
systeminformation:
|
systeminformation:
|
||||||
specifier: ^5.27.11
|
specifier: ^5.27.7
|
||||||
version: 5.27.11
|
version: 5.27.7
|
||||||
tough-cookie:
|
tough-cookie:
|
||||||
specifier: ^6.0.0
|
specifier: ^6.0.0
|
||||||
version: 6.0.0
|
version: 6.0.0
|
||||||
@@ -122,7 +122,7 @@ importers:
|
|||||||
version: 6.10.2(eslint@9.25.1(jiti@2.6.1))
|
version: 6.10.2(eslint@9.25.1(jiti@2.6.1))
|
||||||
eslint-plugin-prettier:
|
eslint-plugin-prettier:
|
||||||
specifier: ^5.5.4
|
specifier: ^5.5.4
|
||||||
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.25.1(jiti@2.6.1)))(eslint@9.25.1(jiti@2.6.1))(prettier@3.7.3)
|
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.25.1(jiti@2.6.1)))(eslint@9.25.1(jiti@2.6.1))(prettier@3.6.2)
|
||||||
eslint-plugin-react:
|
eslint-plugin-react:
|
||||||
specifier: ^7.37.4
|
specifier: ^7.37.4
|
||||||
version: 7.37.4(eslint@9.25.1(jiti@2.6.1))
|
version: 7.37.4(eslint@9.25.1(jiti@2.6.1))
|
||||||
@@ -133,11 +133,11 @@ importers:
|
|||||||
specifier: ^8.5.6
|
specifier: ^8.5.6
|
||||||
version: 8.5.6
|
version: 8.5.6
|
||||||
prettier:
|
prettier:
|
||||||
specifier: ^3.7.3
|
specifier: ^3.6.2
|
||||||
version: 3.7.3
|
version: 3.6.2
|
||||||
prettier-plugin-organize-imports:
|
prettier-plugin-organize-imports:
|
||||||
specifier: ^4.3.0
|
specifier: ^4.3.0
|
||||||
version: 4.3.0(prettier@3.7.3)(typescript@5.7.3)
|
version: 4.3.0(prettier@3.6.2)(typescript@5.7.3)
|
||||||
tailwind-scrollbar:
|
tailwind-scrollbar:
|
||||||
specifier: ^4.0.2
|
specifier: ^4.0.2
|
||||||
version: 4.0.2(react@18.3.1)(tailwindcss@4.0.9)
|
version: 4.0.2(react@18.3.1)(tailwindcss@4.0.9)
|
||||||
@@ -183,8 +183,8 @@ packages:
|
|||||||
'@emnapi/core@1.4.0':
|
'@emnapi/core@1.4.0':
|
||||||
resolution: {integrity: sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==}
|
resolution: {integrity: sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==}
|
||||||
|
|
||||||
'@emnapi/runtime@1.7.1':
|
'@emnapi/runtime@1.5.0':
|
||||||
resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
|
resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==}
|
||||||
|
|
||||||
'@emnapi/wasi-threads@1.0.1':
|
'@emnapi/wasi-threads@1.0.1':
|
||||||
resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==}
|
resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==}
|
||||||
@@ -284,139 +284,124 @@ packages:
|
|||||||
resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
|
resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
|
||||||
engines: {node: '>=18.18'}
|
engines: {node: '>=18.18'}
|
||||||
|
|
||||||
'@img/colour@1.0.0':
|
'@img/sharp-darwin-arm64@0.34.3':
|
||||||
resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
|
resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==}
|
||||||
engines: {node: '>=18'}
|
|
||||||
|
|
||||||
'@img/sharp-darwin-arm64@0.34.5':
|
|
||||||
resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==}
|
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@img/sharp-darwin-x64@0.34.5':
|
'@img/sharp-darwin-x64@0.34.3':
|
||||||
resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==}
|
resolution: {integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@img/sharp-libvips-darwin-arm64@1.2.4':
|
'@img/sharp-libvips-darwin-arm64@1.2.0':
|
||||||
resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
|
resolution: {integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@img/sharp-libvips-darwin-x64@1.2.4':
|
'@img/sharp-libvips-darwin-x64@1.2.0':
|
||||||
resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
|
resolution: {integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@img/sharp-libvips-linux-arm64@1.2.4':
|
'@img/sharp-libvips-linux-arm64@1.2.0':
|
||||||
resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
|
resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-libvips-linux-arm@1.2.4':
|
'@img/sharp-libvips-linux-arm@1.2.0':
|
||||||
resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
|
resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-libvips-linux-ppc64@1.2.4':
|
'@img/sharp-libvips-linux-ppc64@1.2.0':
|
||||||
resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
|
resolution: {integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==}
|
||||||
cpu: [ppc64]
|
cpu: [ppc64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-libvips-linux-riscv64@1.2.4':
|
'@img/sharp-libvips-linux-s390x@1.2.0':
|
||||||
resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
|
resolution: {integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==}
|
||||||
cpu: [riscv64]
|
|
||||||
os: [linux]
|
|
||||||
|
|
||||||
'@img/sharp-libvips-linux-s390x@1.2.4':
|
|
||||||
resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
|
|
||||||
cpu: [s390x]
|
cpu: [s390x]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-libvips-linux-x64@1.2.4':
|
'@img/sharp-libvips-linux-x64@1.2.0':
|
||||||
resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
|
resolution: {integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-libvips-linuxmusl-arm64@1.2.4':
|
'@img/sharp-libvips-linuxmusl-arm64@1.2.0':
|
||||||
resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
|
resolution: {integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-libvips-linuxmusl-x64@1.2.4':
|
'@img/sharp-libvips-linuxmusl-x64@1.2.0':
|
||||||
resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
|
resolution: {integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-linux-arm64@0.34.5':
|
'@img/sharp-linux-arm64@0.34.3':
|
||||||
resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
|
resolution: {integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-linux-arm@0.34.5':
|
'@img/sharp-linux-arm@0.34.3':
|
||||||
resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
|
resolution: {integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-linux-ppc64@0.34.5':
|
'@img/sharp-linux-ppc64@0.34.3':
|
||||||
resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
|
resolution: {integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [ppc64]
|
cpu: [ppc64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-linux-riscv64@0.34.5':
|
'@img/sharp-linux-s390x@0.34.3':
|
||||||
resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
|
resolution: {integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
|
||||||
cpu: [riscv64]
|
|
||||||
os: [linux]
|
|
||||||
|
|
||||||
'@img/sharp-linux-s390x@0.34.5':
|
|
||||||
resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
|
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [s390x]
|
cpu: [s390x]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-linux-x64@0.34.5':
|
'@img/sharp-linux-x64@0.34.3':
|
||||||
resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
|
resolution: {integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-linuxmusl-arm64@0.34.5':
|
'@img/sharp-linuxmusl-arm64@0.34.3':
|
||||||
resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
|
resolution: {integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-linuxmusl-x64@0.34.5':
|
'@img/sharp-linuxmusl-x64@0.34.3':
|
||||||
resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
|
resolution: {integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@img/sharp-wasm32@0.34.5':
|
'@img/sharp-wasm32@0.34.3':
|
||||||
resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
|
resolution: {integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [wasm32]
|
cpu: [wasm32]
|
||||||
|
|
||||||
'@img/sharp-win32-arm64@0.34.5':
|
'@img/sharp-win32-arm64@0.34.3':
|
||||||
resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==}
|
resolution: {integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@img/sharp-win32-ia32@0.34.5':
|
'@img/sharp-win32-ia32@0.34.3':
|
||||||
resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==}
|
resolution: {integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [ia32]
|
cpu: [ia32]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@img/sharp-win32-x64@0.34.5':
|
'@img/sharp-win32-x64@0.34.3':
|
||||||
resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==}
|
resolution: {integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@@ -466,56 +451,56 @@ packages:
|
|||||||
'@napi-rs/wasm-runtime@0.2.8':
|
'@napi-rs/wasm-runtime@0.2.8':
|
||||||
resolution: {integrity: sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==}
|
resolution: {integrity: sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==}
|
||||||
|
|
||||||
'@next/env@15.5.7':
|
'@next/env@15.5.2':
|
||||||
resolution: {integrity: sha512-4h6Y2NyEkIEN7Z8YxkA27pq6zTkS09bUSYC0xjd0NpwFxjnIKeZEeH591o5WECSmjpUhLn3H2QLJcDye3Uzcvg==}
|
resolution: {integrity: sha512-Qe06ew4zt12LeO6N7j8/nULSOe3fMXE4dM6xgpBQNvdzyK1sv5y4oAP3bq4LamrvGCZtmRYnW8URFCeX5nFgGg==}
|
||||||
|
|
||||||
'@next/eslint-plugin-next@15.2.4':
|
'@next/eslint-plugin-next@15.2.4':
|
||||||
resolution: {integrity: sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==}
|
resolution: {integrity: sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==}
|
||||||
|
|
||||||
'@next/swc-darwin-arm64@15.5.7':
|
'@next/swc-darwin-arm64@15.5.2':
|
||||||
resolution: {integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==}
|
resolution: {integrity: sha512-8bGt577BXGSd4iqFygmzIfTYizHb0LGWqH+qgIF/2EDxS5JsSdERJKA8WgwDyNBZgTIIA4D8qUtoQHmxIIquoQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@next/swc-darwin-x64@15.5.7':
|
'@next/swc-darwin-x64@15.5.2':
|
||||||
resolution: {integrity: sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==}
|
resolution: {integrity: sha512-2DjnmR6JHK4X+dgTXt5/sOCu/7yPtqpYt8s8hLkHFK3MGkka2snTv3yRMdHvuRtJVkPwCGsvBSwmoQCHatauFQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@next/swc-linux-arm64-gnu@15.5.7':
|
'@next/swc-linux-arm64-gnu@15.5.2':
|
||||||
resolution: {integrity: sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==}
|
resolution: {integrity: sha512-3j7SWDBS2Wov/L9q0mFJtEvQ5miIqfO4l7d2m9Mo06ddsgUK8gWfHGgbjdFlCp2Ek7MmMQZSxpGFqcC8zGh2AA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-arm64-musl@15.5.7':
|
'@next/swc-linux-arm64-musl@15.5.2':
|
||||||
resolution: {integrity: sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==}
|
resolution: {integrity: sha512-s6N8k8dF9YGc5T01UPQ08yxsK6fUow5gG1/axWc1HVVBYQBgOjca4oUZF7s4p+kwhkB1bDSGR8QznWrFZ/Rt5g==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-x64-gnu@15.5.7':
|
'@next/swc-linux-x64-gnu@15.5.2':
|
||||||
resolution: {integrity: sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==}
|
resolution: {integrity: sha512-o1RV/KOODQh6dM6ZRJGZbc+MOAHww33Vbs5JC9Mp1gDk8cpEO+cYC/l7rweiEalkSm5/1WGa4zY7xrNwObN4+Q==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-x64-musl@15.5.7':
|
'@next/swc-linux-x64-musl@15.5.2':
|
||||||
resolution: {integrity: sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==}
|
resolution: {integrity: sha512-/VUnh7w8RElYZ0IV83nUcP/J4KJ6LLYliiBIri3p3aW2giF+PAVgZb6mk8jbQSB3WlTai8gEmCAr7kptFa1H6g==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-win32-arm64-msvc@15.5.7':
|
'@next/swc-win32-arm64-msvc@15.5.2':
|
||||||
resolution: {integrity: sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==}
|
resolution: {integrity: sha512-sMPyTvRcNKXseNQ/7qRfVRLa0VhR0esmQ29DD6pqvG71+JdVnESJaHPA8t7bc67KD5spP3+DOCNLhqlEI2ZgQg==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@next/swc-win32-x64-msvc@15.5.7':
|
'@next/swc-win32-x64-msvc@15.5.2':
|
||||||
resolution: {integrity: sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==}
|
resolution: {integrity: sha512-W5VvyZHnxG/2ukhZF/9Ikdra5fdNftxI6ybeVKYvBPDtyx7x4jPPSNduUkfH5fo3zG0JQ0bPxgy41af2JX5D4Q==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@@ -1120,8 +1105,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001759:
|
caniuse-lite@1.0.30001739:
|
||||||
resolution: {integrity: sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==}
|
resolution: {integrity: sha512-y+j60d6ulelrNSwpPyrHdl+9mJnQzHBr08xm48Qno0nSk4h3Qojh+ziv2qE6rXf4k3tadF4o1J/1tAbVm1NtnA==}
|
||||||
|
|
||||||
chalk@4.1.2:
|
chalk@4.1.2:
|
||||||
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
||||||
@@ -1167,6 +1152,10 @@ packages:
|
|||||||
color@3.2.1:
|
color@3.2.1:
|
||||||
resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
|
resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
|
||||||
|
|
||||||
|
color@4.2.3:
|
||||||
|
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
|
||||||
|
engines: {node: '>=12.5.0'}
|
||||||
|
|
||||||
colorspace@1.1.4:
|
colorspace@1.1.4:
|
||||||
resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==}
|
resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==}
|
||||||
|
|
||||||
@@ -1320,12 +1309,12 @@ packages:
|
|||||||
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
|
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
detect-libc@2.1.1:
|
detect-libc@2.0.4:
|
||||||
resolution: {integrity: sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==}
|
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
detect-libc@2.1.2:
|
detect-libc@2.1.1:
|
||||||
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
|
resolution: {integrity: sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
docker-modem@5.0.6:
|
docker-modem@5.0.6:
|
||||||
@@ -1760,8 +1749,8 @@ packages:
|
|||||||
http-cache-semantics@4.2.0:
|
http-cache-semantics@4.2.0:
|
||||||
resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
|
resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
|
||||||
|
|
||||||
http-errors@2.0.1:
|
http-errors@2.0.0:
|
||||||
resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
|
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
|
||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
http2-wrapper@2.2.1:
|
http2-wrapper@2.2.1:
|
||||||
@@ -2212,8 +2201,8 @@ packages:
|
|||||||
next: '>= 10.0.0'
|
next: '>= 10.0.0'
|
||||||
react: '>= 16.8.0'
|
react: '>= 16.8.0'
|
||||||
|
|
||||||
next@15.5.7:
|
next@15.5.2:
|
||||||
resolution: {integrity: sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==}
|
resolution: {integrity: sha512-H8Otr7abj1glFhbGnvUt3gz++0AF1+QoCXEBmd/6aKbfdFwrn0LpA836Ed5+00va/7HQSDD+mOoVhn3tNy3e/Q==}
|
||||||
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
|
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -2382,8 +2371,8 @@ packages:
|
|||||||
vue-tsc:
|
vue-tsc:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
prettier@3.7.3:
|
prettier@3.6.2:
|
||||||
resolution: {integrity: sha512-QgODejq9K3OzoBbuyobZlUhznP5SKwPqp+6Q6xw6o8gnhr4O85L2U915iM2IDcfF2NPXVaM9zlo9tdwipnYwzg==}
|
resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
@@ -2420,8 +2409,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
|
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
raw-body@3.0.2:
|
raw-body@3.0.1:
|
||||||
resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
|
resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==}
|
||||||
engines: {node: '>= 0.10'}
|
engines: {node: '>= 0.10'}
|
||||||
|
|
||||||
react-dom@18.3.1:
|
react-dom@18.3.1:
|
||||||
@@ -2608,8 +2597,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
|
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
semver@7.7.3:
|
semver@7.7.2:
|
||||||
resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
|
resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
@@ -2628,8 +2617,8 @@ packages:
|
|||||||
setprototypeof@1.2.0:
|
setprototypeof@1.2.0:
|
||||||
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
|
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
|
||||||
|
|
||||||
sharp@0.34.5:
|
sharp@0.34.3:
|
||||||
resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
|
resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
|
|
||||||
shebang-command@2.0.0:
|
shebang-command@2.0.0:
|
||||||
@@ -2680,8 +2669,8 @@ packages:
|
|||||||
stack-trace@0.0.10:
|
stack-trace@0.0.10:
|
||||||
resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==}
|
resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==}
|
||||||
|
|
||||||
statuses@2.0.2:
|
statuses@2.0.1:
|
||||||
resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
|
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
|
||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
stop-iteration-iterator@1.1.0:
|
stop-iteration-iterator@1.1.0:
|
||||||
@@ -2787,8 +2776,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==}
|
resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
|
|
||||||
systeminformation@5.27.11:
|
systeminformation@5.27.7:
|
||||||
resolution: {integrity: sha512-K3Lto/2m3K2twmKHdgx5B+0in9qhXK4YnoT9rIlgwN/4v7OV5c8IjbeAUkuky/6VzCQC7iKCAqi8rZathCdjHg==}
|
resolution: {integrity: sha512-saaqOoVEEFaux4v0K8Q7caiauRwjXC4XbD2eH60dxHXbpKxQ8kH9Rf7Jh+nryKpOUSEFxtCdBlSUx0/lO6rwRg==}
|
||||||
engines: {node: '>=8.0.0'}
|
engines: {node: '>=8.0.0'}
|
||||||
os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android]
|
os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android]
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -3089,7 +3078,7 @@ snapshots:
|
|||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@emnapi/runtime@1.7.1':
|
'@emnapi/runtime@1.5.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
optional: true
|
optional: true
|
||||||
@@ -3203,101 +3192,90 @@ snapshots:
|
|||||||
|
|
||||||
'@humanwhocodes/retry@0.4.2': {}
|
'@humanwhocodes/retry@0.4.2': {}
|
||||||
|
|
||||||
'@img/colour@1.0.0':
|
'@img/sharp-darwin-arm64@0.34.3':
|
||||||
optional: true
|
|
||||||
|
|
||||||
'@img/sharp-darwin-arm64@0.34.5':
|
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@img/sharp-libvips-darwin-arm64': 1.2.4
|
'@img/sharp-libvips-darwin-arm64': 1.2.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-darwin-x64@0.34.5':
|
'@img/sharp-darwin-x64@0.34.3':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@img/sharp-libvips-darwin-x64': 1.2.4
|
'@img/sharp-libvips-darwin-x64': 1.2.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-libvips-darwin-arm64@1.2.4':
|
'@img/sharp-libvips-darwin-arm64@1.2.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-libvips-darwin-x64@1.2.4':
|
'@img/sharp-libvips-darwin-x64@1.2.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-libvips-linux-arm64@1.2.4':
|
'@img/sharp-libvips-linux-arm64@1.2.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-libvips-linux-arm@1.2.4':
|
'@img/sharp-libvips-linux-arm@1.2.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-libvips-linux-ppc64@1.2.4':
|
'@img/sharp-libvips-linux-ppc64@1.2.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-libvips-linux-riscv64@1.2.4':
|
'@img/sharp-libvips-linux-s390x@1.2.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-libvips-linux-s390x@1.2.4':
|
'@img/sharp-libvips-linux-x64@1.2.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-libvips-linux-x64@1.2.4':
|
'@img/sharp-libvips-linuxmusl-arm64@1.2.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-libvips-linuxmusl-arm64@1.2.4':
|
'@img/sharp-libvips-linuxmusl-x64@1.2.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-libvips-linuxmusl-x64@1.2.4':
|
'@img/sharp-linux-arm64@0.34.3':
|
||||||
optional: true
|
|
||||||
|
|
||||||
'@img/sharp-linux-arm64@0.34.5':
|
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@img/sharp-libvips-linux-arm64': 1.2.4
|
'@img/sharp-libvips-linux-arm64': 1.2.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-linux-arm@0.34.5':
|
'@img/sharp-linux-arm@0.34.3':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@img/sharp-libvips-linux-arm': 1.2.4
|
'@img/sharp-libvips-linux-arm': 1.2.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-linux-ppc64@0.34.5':
|
'@img/sharp-linux-ppc64@0.34.3':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@img/sharp-libvips-linux-ppc64': 1.2.4
|
'@img/sharp-libvips-linux-ppc64': 1.2.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-linux-riscv64@0.34.5':
|
'@img/sharp-linux-s390x@0.34.3':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@img/sharp-libvips-linux-riscv64': 1.2.4
|
'@img/sharp-libvips-linux-s390x': 1.2.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-linux-s390x@0.34.5':
|
'@img/sharp-linux-x64@0.34.3':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@img/sharp-libvips-linux-s390x': 1.2.4
|
'@img/sharp-libvips-linux-x64': 1.2.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-linux-x64@0.34.5':
|
'@img/sharp-linuxmusl-arm64@0.34.3':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@img/sharp-libvips-linux-x64': 1.2.4
|
'@img/sharp-libvips-linuxmusl-arm64': 1.2.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-linuxmusl-arm64@0.34.5':
|
'@img/sharp-linuxmusl-x64@0.34.3':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@img/sharp-libvips-linuxmusl-arm64': 1.2.4
|
'@img/sharp-libvips-linuxmusl-x64': 1.2.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-linuxmusl-x64@0.34.5':
|
'@img/sharp-wasm32@0.34.3':
|
||||||
optionalDependencies:
|
|
||||||
'@img/sharp-libvips-linuxmusl-x64': 1.2.4
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
'@img/sharp-wasm32@0.34.5':
|
|
||||||
dependencies:
|
dependencies:
|
||||||
'@emnapi/runtime': 1.7.1
|
'@emnapi/runtime': 1.5.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-win32-arm64@0.34.5':
|
'@img/sharp-win32-arm64@0.34.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-win32-ia32@0.34.5':
|
'@img/sharp-win32-ia32@0.34.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@img/sharp-win32-x64@0.34.5':
|
'@img/sharp-win32-x64@0.34.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@isaacs/cliui@8.0.2':
|
'@isaacs/cliui@8.0.2':
|
||||||
@@ -3370,38 +3348,38 @@ snapshots:
|
|||||||
'@napi-rs/wasm-runtime@0.2.8':
|
'@napi-rs/wasm-runtime@0.2.8':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@emnapi/core': 1.4.0
|
'@emnapi/core': 1.4.0
|
||||||
'@emnapi/runtime': 1.7.1
|
'@emnapi/runtime': 1.5.0
|
||||||
'@tybys/wasm-util': 0.9.0
|
'@tybys/wasm-util': 0.9.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/env@15.5.7': {}
|
'@next/env@15.5.2': {}
|
||||||
|
|
||||||
'@next/eslint-plugin-next@15.2.4':
|
'@next/eslint-plugin-next@15.2.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
fast-glob: 3.3.1
|
fast-glob: 3.3.1
|
||||||
|
|
||||||
'@next/swc-darwin-arm64@15.5.7':
|
'@next/swc-darwin-arm64@15.5.2':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-darwin-x64@15.5.7':
|
'@next/swc-darwin-x64@15.5.2':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-arm64-gnu@15.5.7':
|
'@next/swc-linux-arm64-gnu@15.5.2':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-arm64-musl@15.5.7':
|
'@next/swc-linux-arm64-musl@15.5.2':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-x64-gnu@15.5.7':
|
'@next/swc-linux-x64-gnu@15.5.2':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-x64-musl@15.5.7':
|
'@next/swc-linux-x64-musl@15.5.2':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-win32-arm64-msvc@15.5.7':
|
'@next/swc-win32-arm64-msvc@15.5.2':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-win32-x64-msvc@15.5.7':
|
'@next/swc-win32-x64-msvc@15.5.2':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@nodelib/fs.scandir@2.1.5':
|
'@nodelib/fs.scandir@2.1.5':
|
||||||
@@ -3749,7 +3727,7 @@ snapshots:
|
|||||||
fast-glob: 3.3.3
|
fast-glob: 3.3.3
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
minimatch: 9.0.5
|
minimatch: 9.0.5
|
||||||
semver: 7.7.3
|
semver: 7.7.2
|
||||||
ts-api-utils: 2.1.0(typescript@5.7.3)
|
ts-api-utils: 2.1.0(typescript@5.7.3)
|
||||||
typescript: 5.7.3
|
typescript: 5.7.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -4024,7 +4002,7 @@ snapshots:
|
|||||||
|
|
||||||
callsites@3.1.0: {}
|
callsites@3.1.0: {}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001759: {}
|
caniuse-lite@1.0.30001739: {}
|
||||||
|
|
||||||
chalk@4.1.2:
|
chalk@4.1.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -4069,6 +4047,12 @@ snapshots:
|
|||||||
color-convert: 1.9.3
|
color-convert: 1.9.3
|
||||||
color-string: 1.9.1
|
color-string: 1.9.1
|
||||||
|
|
||||||
|
color@4.2.3:
|
||||||
|
dependencies:
|
||||||
|
color-convert: 2.0.1
|
||||||
|
color-string: 1.9.1
|
||||||
|
optional: true
|
||||||
|
|
||||||
colorspace@1.1.4:
|
colorspace@1.1.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
color: 3.2.1
|
color: 3.2.1
|
||||||
@@ -4200,11 +4184,11 @@ snapshots:
|
|||||||
|
|
||||||
dequal@2.0.3: {}
|
dequal@2.0.3: {}
|
||||||
|
|
||||||
detect-libc@2.1.1: {}
|
detect-libc@2.0.4:
|
||||||
|
|
||||||
detect-libc@2.1.2:
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
detect-libc@2.1.1: {}
|
||||||
|
|
||||||
docker-modem@5.0.6:
|
docker-modem@5.0.6:
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 4.4.1
|
debug: 4.4.1
|
||||||
@@ -4522,10 +4506,10 @@ snapshots:
|
|||||||
safe-regex-test: 1.1.0
|
safe-regex-test: 1.1.0
|
||||||
string.prototype.includes: 2.0.1
|
string.prototype.includes: 2.0.1
|
||||||
|
|
||||||
eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.25.1(jiti@2.6.1)))(eslint@9.25.1(jiti@2.6.1))(prettier@3.7.3):
|
eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.25.1(jiti@2.6.1)))(eslint@9.25.1(jiti@2.6.1))(prettier@3.6.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.25.1(jiti@2.6.1)
|
eslint: 9.25.1(jiti@2.6.1)
|
||||||
prettier: 3.7.3
|
prettier: 3.6.2
|
||||||
prettier-linter-helpers: 1.0.0
|
prettier-linter-helpers: 1.0.0
|
||||||
synckit: 0.11.11
|
synckit: 0.11.11
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -4866,12 +4850,12 @@ snapshots:
|
|||||||
|
|
||||||
http-cache-semantics@4.2.0: {}
|
http-cache-semantics@4.2.0: {}
|
||||||
|
|
||||||
http-errors@2.0.1:
|
http-errors@2.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
depd: 2.0.0
|
depd: 2.0.0
|
||||||
inherits: 2.0.4
|
inherits: 2.0.4
|
||||||
setprototypeof: 1.2.0
|
setprototypeof: 1.2.0
|
||||||
statuses: 2.0.2
|
statuses: 2.0.1
|
||||||
toidentifier: 1.0.1
|
toidentifier: 1.0.1
|
||||||
|
|
||||||
http2-wrapper@2.2.1:
|
http2-wrapper@2.2.1:
|
||||||
@@ -4947,7 +4931,7 @@ snapshots:
|
|||||||
|
|
||||||
is-bun-module@2.0.0:
|
is-bun-module@2.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
semver: 7.7.3
|
semver: 7.7.2
|
||||||
|
|
||||||
is-callable@1.2.7: {}
|
is-callable@1.2.7: {}
|
||||||
|
|
||||||
@@ -5259,7 +5243,7 @@ snapshots:
|
|||||||
|
|
||||||
net@1.0.2: {}
|
net@1.0.2: {}
|
||||||
|
|
||||||
next-i18next@12.1.0(next@15.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
next-i18next@12.1.0(next@15.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.26.9
|
'@babel/runtime': 7.26.9
|
||||||
'@types/hoist-non-react-statics': 3.3.6
|
'@types/hoist-non-react-statics': 3.3.6
|
||||||
@@ -5267,32 +5251,32 @@ snapshots:
|
|||||||
hoist-non-react-statics: 3.3.2
|
hoist-non-react-statics: 3.3.2
|
||||||
i18next: 21.10.0
|
i18next: 21.10.0
|
||||||
i18next-fs-backend: 1.2.0
|
i18next-fs-backend: 1.2.0
|
||||||
next: 15.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
next: 15.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-i18next: 11.18.6(i18next@21.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
react-i18next: 11.18.6(i18next@21.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- react-dom
|
- react-dom
|
||||||
- react-native
|
- react-native
|
||||||
|
|
||||||
next@15.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
next@15.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/env': 15.5.7
|
'@next/env': 15.5.2
|
||||||
'@swc/helpers': 0.5.15
|
'@swc/helpers': 0.5.15
|
||||||
caniuse-lite: 1.0.30001759
|
caniuse-lite: 1.0.30001739
|
||||||
postcss: 8.4.31
|
postcss: 8.4.31
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
styled-jsx: 5.1.6(react@18.3.1)
|
styled-jsx: 5.1.6(react@18.3.1)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@next/swc-darwin-arm64': 15.5.7
|
'@next/swc-darwin-arm64': 15.5.2
|
||||||
'@next/swc-darwin-x64': 15.5.7
|
'@next/swc-darwin-x64': 15.5.2
|
||||||
'@next/swc-linux-arm64-gnu': 15.5.7
|
'@next/swc-linux-arm64-gnu': 15.5.2
|
||||||
'@next/swc-linux-arm64-musl': 15.5.7
|
'@next/swc-linux-arm64-musl': 15.5.2
|
||||||
'@next/swc-linux-x64-gnu': 15.5.7
|
'@next/swc-linux-x64-gnu': 15.5.2
|
||||||
'@next/swc-linux-x64-musl': 15.5.7
|
'@next/swc-linux-x64-musl': 15.5.2
|
||||||
'@next/swc-win32-arm64-msvc': 15.5.7
|
'@next/swc-win32-arm64-msvc': 15.5.2
|
||||||
'@next/swc-win32-x64-msvc': 15.5.7
|
'@next/swc-win32-x64-msvc': 15.5.2
|
||||||
sharp: 0.34.5
|
sharp: 0.34.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@babel/core'
|
- '@babel/core'
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
@@ -5432,12 +5416,12 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
fast-diff: 1.3.0
|
fast-diff: 1.3.0
|
||||||
|
|
||||||
prettier-plugin-organize-imports@4.3.0(prettier@3.7.3)(typescript@5.7.3):
|
prettier-plugin-organize-imports@4.3.0(prettier@3.6.2)(typescript@5.7.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
prettier: 3.7.3
|
prettier: 3.6.2
|
||||||
typescript: 5.7.3
|
typescript: 5.7.3
|
||||||
|
|
||||||
prettier@3.7.3: {}
|
prettier@3.6.2: {}
|
||||||
|
|
||||||
pretty-bytes@7.1.0: {}
|
pretty-bytes@7.1.0: {}
|
||||||
|
|
||||||
@@ -5481,10 +5465,10 @@ snapshots:
|
|||||||
|
|
||||||
quick-lru@5.1.1: {}
|
quick-lru@5.1.1: {}
|
||||||
|
|
||||||
raw-body@3.0.2:
|
raw-body@3.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
bytes: 3.1.2
|
bytes: 3.1.2
|
||||||
http-errors: 2.0.1
|
http-errors: 2.0.0
|
||||||
iconv-lite: 0.7.0
|
iconv-lite: 0.7.0
|
||||||
unpipe: 1.0.0
|
unpipe: 1.0.0
|
||||||
|
|
||||||
@@ -5684,7 +5668,7 @@ snapshots:
|
|||||||
|
|
||||||
semver@6.3.1: {}
|
semver@6.3.1: {}
|
||||||
|
|
||||||
semver@7.7.3: {}
|
semver@7.7.2: {}
|
||||||
|
|
||||||
set-function-length@1.2.2:
|
set-function-length@1.2.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -5710,36 +5694,34 @@ snapshots:
|
|||||||
|
|
||||||
setprototypeof@1.2.0: {}
|
setprototypeof@1.2.0: {}
|
||||||
|
|
||||||
sharp@0.34.5:
|
sharp@0.34.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@img/colour': 1.0.0
|
color: 4.2.3
|
||||||
detect-libc: 2.1.2
|
detect-libc: 2.0.4
|
||||||
semver: 7.7.3
|
semver: 7.7.2
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@img/sharp-darwin-arm64': 0.34.5
|
'@img/sharp-darwin-arm64': 0.34.3
|
||||||
'@img/sharp-darwin-x64': 0.34.5
|
'@img/sharp-darwin-x64': 0.34.3
|
||||||
'@img/sharp-libvips-darwin-arm64': 1.2.4
|
'@img/sharp-libvips-darwin-arm64': 1.2.0
|
||||||
'@img/sharp-libvips-darwin-x64': 1.2.4
|
'@img/sharp-libvips-darwin-x64': 1.2.0
|
||||||
'@img/sharp-libvips-linux-arm': 1.2.4
|
'@img/sharp-libvips-linux-arm': 1.2.0
|
||||||
'@img/sharp-libvips-linux-arm64': 1.2.4
|
'@img/sharp-libvips-linux-arm64': 1.2.0
|
||||||
'@img/sharp-libvips-linux-ppc64': 1.2.4
|
'@img/sharp-libvips-linux-ppc64': 1.2.0
|
||||||
'@img/sharp-libvips-linux-riscv64': 1.2.4
|
'@img/sharp-libvips-linux-s390x': 1.2.0
|
||||||
'@img/sharp-libvips-linux-s390x': 1.2.4
|
'@img/sharp-libvips-linux-x64': 1.2.0
|
||||||
'@img/sharp-libvips-linux-x64': 1.2.4
|
'@img/sharp-libvips-linuxmusl-arm64': 1.2.0
|
||||||
'@img/sharp-libvips-linuxmusl-arm64': 1.2.4
|
'@img/sharp-libvips-linuxmusl-x64': 1.2.0
|
||||||
'@img/sharp-libvips-linuxmusl-x64': 1.2.4
|
'@img/sharp-linux-arm': 0.34.3
|
||||||
'@img/sharp-linux-arm': 0.34.5
|
'@img/sharp-linux-arm64': 0.34.3
|
||||||
'@img/sharp-linux-arm64': 0.34.5
|
'@img/sharp-linux-ppc64': 0.34.3
|
||||||
'@img/sharp-linux-ppc64': 0.34.5
|
'@img/sharp-linux-s390x': 0.34.3
|
||||||
'@img/sharp-linux-riscv64': 0.34.5
|
'@img/sharp-linux-x64': 0.34.3
|
||||||
'@img/sharp-linux-s390x': 0.34.5
|
'@img/sharp-linuxmusl-arm64': 0.34.3
|
||||||
'@img/sharp-linux-x64': 0.34.5
|
'@img/sharp-linuxmusl-x64': 0.34.3
|
||||||
'@img/sharp-linuxmusl-arm64': 0.34.5
|
'@img/sharp-wasm32': 0.34.3
|
||||||
'@img/sharp-linuxmusl-x64': 0.34.5
|
'@img/sharp-win32-arm64': 0.34.3
|
||||||
'@img/sharp-wasm32': 0.34.5
|
'@img/sharp-win32-ia32': 0.34.3
|
||||||
'@img/sharp-win32-arm64': 0.34.5
|
'@img/sharp-win32-x64': 0.34.3
|
||||||
'@img/sharp-win32-ia32': 0.34.5
|
|
||||||
'@img/sharp-win32-x64': 0.34.5
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
shebang-command@2.0.0:
|
shebang-command@2.0.0:
|
||||||
@@ -5798,7 +5780,7 @@ snapshots:
|
|||||||
|
|
||||||
stack-trace@0.0.10: {}
|
stack-trace@0.0.10: {}
|
||||||
|
|
||||||
statuses@2.0.2: {}
|
statuses@2.0.1: {}
|
||||||
|
|
||||||
stop-iteration-iterator@1.1.0:
|
stop-iteration-iterator@1.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -5923,7 +5905,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@pkgr/core': 0.2.9
|
'@pkgr/core': 0.2.9
|
||||||
|
|
||||||
systeminformation@5.27.11: {}
|
systeminformation@5.27.7: {}
|
||||||
|
|
||||||
tabbable@6.3.0: {}
|
tabbable@6.3.0: {}
|
||||||
|
|
||||||
|
|||||||
750
public/locales/zh-CN/common.json
Normal file
750
public/locales/zh-CN/common.json
Normal file
@@ -0,0 +1,750 @@
|
|||||||
|
{
|
||||||
|
"widget": {
|
||||||
|
"missing_type": "缺少小部件类型:{{type}}",
|
||||||
|
"api_error": "API错误",
|
||||||
|
"status": "状态",
|
||||||
|
"information": "信息",
|
||||||
|
"url": "URL",
|
||||||
|
"raw_error": "原始错误",
|
||||||
|
"response_data": "返回数据"
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"placeholder": "搜索…"
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"total": "总计",
|
||||||
|
"free": "空闲",
|
||||||
|
"used": "已用",
|
||||||
|
"load": "负载",
|
||||||
|
"cpu": "处理器",
|
||||||
|
"mem": "内存",
|
||||||
|
"temp": "温度",
|
||||||
|
"max": "最大",
|
||||||
|
"uptime": "运行时间",
|
||||||
|
"months": "月",
|
||||||
|
"days": "天",
|
||||||
|
"hours": "时",
|
||||||
|
"minutes": "分"
|
||||||
|
},
|
||||||
|
"docker": {
|
||||||
|
"rx": "接收",
|
||||||
|
"tx": "发送",
|
||||||
|
"mem": "内存",
|
||||||
|
"cpu": "处理器",
|
||||||
|
"offline": "离线",
|
||||||
|
"error": "错误",
|
||||||
|
"unknown": "未知问题",
|
||||||
|
"starting": "启动中",
|
||||||
|
"unhealthy": "不健康的",
|
||||||
|
"not_found": "未找到",
|
||||||
|
"running": "运行中",
|
||||||
|
"exited": "已退出",
|
||||||
|
"partial": "部分",
|
||||||
|
"healthy": "健康的"
|
||||||
|
},
|
||||||
|
"emby": {
|
||||||
|
"playing": "播放中",
|
||||||
|
"transcoding": "转码",
|
||||||
|
"bitrate": "比特率",
|
||||||
|
"no_active": "暂无播放",
|
||||||
|
"movies": "电影",
|
||||||
|
"series": "系列",
|
||||||
|
"episodes": "剧集",
|
||||||
|
"songs": "歌曲"
|
||||||
|
},
|
||||||
|
"tautulli": {
|
||||||
|
"playing": "播放中",
|
||||||
|
"transcoding": "转码",
|
||||||
|
"bitrate": "比特率",
|
||||||
|
"no_active": "暂无播放",
|
||||||
|
"plex_connection_error": "Check Plex Connection"
|
||||||
|
},
|
||||||
|
"rutorrent": {
|
||||||
|
"active": "活动中",
|
||||||
|
"upload": "上传",
|
||||||
|
"download": "下载"
|
||||||
|
},
|
||||||
|
"sonarr": {
|
||||||
|
"wanted": "想看",
|
||||||
|
"queued": "排队",
|
||||||
|
"series": "系列",
|
||||||
|
"queue": "Queue",
|
||||||
|
"unknown": "Unknown"
|
||||||
|
},
|
||||||
|
"radarr": {
|
||||||
|
"wanted": "想看",
|
||||||
|
"queued": "队列",
|
||||||
|
"movies": "电影",
|
||||||
|
"missing": "丢失",
|
||||||
|
"queue": "Queue",
|
||||||
|
"unknown": "Unknown"
|
||||||
|
},
|
||||||
|
"readarr": {
|
||||||
|
"wanted": "订阅",
|
||||||
|
"queued": "队列",
|
||||||
|
"books": "书籍"
|
||||||
|
},
|
||||||
|
"ombi": {
|
||||||
|
"pending": "待办的",
|
||||||
|
"approved": "已批准",
|
||||||
|
"available": "可用的"
|
||||||
|
},
|
||||||
|
"jellyseerr": {
|
||||||
|
"pending": "待办的",
|
||||||
|
"approved": "得到正式认可的",
|
||||||
|
"available": "可用的"
|
||||||
|
},
|
||||||
|
"pihole": {
|
||||||
|
"queries": "查询",
|
||||||
|
"blocked": "阻止",
|
||||||
|
"gravity": "重力",
|
||||||
|
"blocked_percent": "拦截 %"
|
||||||
|
},
|
||||||
|
"speedtest": {
|
||||||
|
"upload": "上传",
|
||||||
|
"download": "下载",
|
||||||
|
"ping": "ping"
|
||||||
|
},
|
||||||
|
"portainer": {
|
||||||
|
"running": "运行中",
|
||||||
|
"stopped": "停止",
|
||||||
|
"total": "总计"
|
||||||
|
},
|
||||||
|
"traefik": {
|
||||||
|
"routers": "路由器",
|
||||||
|
"services": "服务",
|
||||||
|
"middleware": "中间件"
|
||||||
|
},
|
||||||
|
"npm": {
|
||||||
|
"enabled": "已启用",
|
||||||
|
"disabled": "禁用",
|
||||||
|
"total": "全部的"
|
||||||
|
},
|
||||||
|
"weather": {
|
||||||
|
"current": "当前定位",
|
||||||
|
"allow": "点击并允许",
|
||||||
|
"updating": "更新中",
|
||||||
|
"wait": "请稍候"
|
||||||
|
},
|
||||||
|
"overseerr": {
|
||||||
|
"pending": "待办",
|
||||||
|
"approved": "已批准",
|
||||||
|
"available": "可用",
|
||||||
|
"processing": "处理中"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"rate": "速率",
|
||||||
|
"queue": "队列",
|
||||||
|
"timeleft": "剩余时间"
|
||||||
|
},
|
||||||
|
"nzbget": {
|
||||||
|
"rate": "速率",
|
||||||
|
"remaining": "剩余",
|
||||||
|
"downloaded": "下载"
|
||||||
|
},
|
||||||
|
"coinmarketcap": {
|
||||||
|
"configure": "配置一个或多个需要追踪的加密",
|
||||||
|
"1hour": "1小时",
|
||||||
|
"1day": "1天",
|
||||||
|
"7days": "7天",
|
||||||
|
"30days": "30天"
|
||||||
|
},
|
||||||
|
"gotify": {
|
||||||
|
"apps": "应用",
|
||||||
|
"clients": "客户端",
|
||||||
|
"messages": "信息"
|
||||||
|
},
|
||||||
|
"prowlarr": {
|
||||||
|
"enableIndexers": "索引器",
|
||||||
|
"numberOfGrabs": "抓取",
|
||||||
|
"numberOfQueries": "查询",
|
||||||
|
"numberOfFailGrabs": "抓取失败",
|
||||||
|
"numberOfFailQueries": "查询失败"
|
||||||
|
},
|
||||||
|
"transmission": {
|
||||||
|
"download": "下载",
|
||||||
|
"upload": "上传",
|
||||||
|
"leech": "下载中",
|
||||||
|
"seed": "做种"
|
||||||
|
},
|
||||||
|
"jackett": {
|
||||||
|
"configured": "已配置",
|
||||||
|
"errored": "出错了"
|
||||||
|
},
|
||||||
|
"bazarr": {
|
||||||
|
"missingEpisodes": "缺少的剧集",
|
||||||
|
"missingMovies": "缺少的电影"
|
||||||
|
},
|
||||||
|
"lidarr": {
|
||||||
|
"wanted": "订阅",
|
||||||
|
"queued": "队列",
|
||||||
|
"artists": "Artists"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "查询",
|
||||||
|
"blocked": "阻止",
|
||||||
|
"filtered": "过滤",
|
||||||
|
"latency": "延迟"
|
||||||
|
},
|
||||||
|
"qbittorrent": {
|
||||||
|
"download": "下载",
|
||||||
|
"upload": "上传",
|
||||||
|
"leech": "下载中",
|
||||||
|
"seed": "做种"
|
||||||
|
},
|
||||||
|
"mastodon": {
|
||||||
|
"user_count": "用户",
|
||||||
|
"status_count": "帖子",
|
||||||
|
"domain_count": "域"
|
||||||
|
},
|
||||||
|
"strelaysrv": {
|
||||||
|
"numActiveSessions": "会话",
|
||||||
|
"dataRelayed": "中继",
|
||||||
|
"numConnections": "连接",
|
||||||
|
"transferRate": "速度"
|
||||||
|
},
|
||||||
|
"authentik": {
|
||||||
|
"users": "用户",
|
||||||
|
"loginsLast24H": "登录 (24h)",
|
||||||
|
"failedLoginsLast24H": "登录失败 (24h)"
|
||||||
|
},
|
||||||
|
"proxmox": {
|
||||||
|
"mem": "内存",
|
||||||
|
"cpu": "处理器",
|
||||||
|
"lxc": "容器",
|
||||||
|
"vms": "虚拟机"
|
||||||
|
},
|
||||||
|
"unifi": {
|
||||||
|
"users": "用户",
|
||||||
|
"uptime": "系统运行时间",
|
||||||
|
"days": "天",
|
||||||
|
"wan": "广域网",
|
||||||
|
"lan_users": "局域网用户",
|
||||||
|
"wlan_users": "无线局域网用户",
|
||||||
|
"up": "向上",
|
||||||
|
"down": "向下",
|
||||||
|
"wait": "请稍候",
|
||||||
|
"lan": "局域网",
|
||||||
|
"wlan": "无线局域网",
|
||||||
|
"devices": "设备",
|
||||||
|
"lan_devices": "局域网设备",
|
||||||
|
"wlan_devices": "无线局域网设备",
|
||||||
|
"empty_data": "子系统状态未知"
|
||||||
|
},
|
||||||
|
"plex": {
|
||||||
|
"streams": "活动流",
|
||||||
|
"movies": "电影",
|
||||||
|
"tv": "电视节目",
|
||||||
|
"albums": "专辑"
|
||||||
|
},
|
||||||
|
"glances": {
|
||||||
|
"cpu": "处理器",
|
||||||
|
"wait": "请稍等",
|
||||||
|
"temp": "温度",
|
||||||
|
"uptime": "运行时间",
|
||||||
|
"days": "天",
|
||||||
|
"hours": "时",
|
||||||
|
"load": "Load",
|
||||||
|
"warn": "Warn",
|
||||||
|
"total": "Total",
|
||||||
|
"free": "Free",
|
||||||
|
"used": "Used",
|
||||||
|
"crit": "Crit",
|
||||||
|
"read": "Read",
|
||||||
|
"write": "Write",
|
||||||
|
"gpu": "GPU",
|
||||||
|
"mem": "Mem",
|
||||||
|
"swap": "Swap",
|
||||||
|
"_temp": "Temp"
|
||||||
|
},
|
||||||
|
"changedetectionio": {
|
||||||
|
"totalObserved": "观察到的总数",
|
||||||
|
"diffsDetected": "检测到差异"
|
||||||
|
},
|
||||||
|
"wmo": {
|
||||||
|
"0-day": "晴天",
|
||||||
|
"0-night": "晴朗",
|
||||||
|
"1-day": "主要是晴天",
|
||||||
|
"3-day": "阴天",
|
||||||
|
"3-night": "阴天",
|
||||||
|
"45-day": "有雾",
|
||||||
|
"48-day": "有雾",
|
||||||
|
"51-day": "小雨",
|
||||||
|
"73-night": "中雪",
|
||||||
|
"75-day": "大雪",
|
||||||
|
"1-night": "大部晴朗",
|
||||||
|
"2-day": "多云",
|
||||||
|
"2-night": "多云",
|
||||||
|
"45-night": "有雾",
|
||||||
|
"48-night": "有雾",
|
||||||
|
"51-night": "小雨",
|
||||||
|
"53-day": "小雨",
|
||||||
|
"53-night": "小雨",
|
||||||
|
"55-day": "毛毛雨",
|
||||||
|
"55-night": "毛毛雨",
|
||||||
|
"56-day": "小冻毛雨",
|
||||||
|
"56-night": "小冻毛雨",
|
||||||
|
"57-day": "冻毛雨",
|
||||||
|
"57-night": "冻毛雨",
|
||||||
|
"61-day": "小雨",
|
||||||
|
"61-night": "小雨",
|
||||||
|
"63-day": "雨",
|
||||||
|
"63-night": "雨",
|
||||||
|
"65-day": "大雨",
|
||||||
|
"65-night": "大雨",
|
||||||
|
"66-day": "冻雨",
|
||||||
|
"66-night": "冻雨",
|
||||||
|
"67-day": "冻雨",
|
||||||
|
"67-night": "冻雨",
|
||||||
|
"71-day": "小雪",
|
||||||
|
"71-night": "小雪",
|
||||||
|
"73-day": "中雪",
|
||||||
|
"75-night": "大雪",
|
||||||
|
"77-day": "雪粒",
|
||||||
|
"77-night": "雪粒",
|
||||||
|
"80-day": "微阵雨",
|
||||||
|
"80-night": "微阵雨",
|
||||||
|
"81-day": "阵雨",
|
||||||
|
"81-night": "阵雨",
|
||||||
|
"82-day": "强阵雨",
|
||||||
|
"82-night": "强阵雨",
|
||||||
|
"85-day": "阵雪",
|
||||||
|
"85-night": "阵雪",
|
||||||
|
"86-day": "阵雪",
|
||||||
|
"86-night": "阵雪",
|
||||||
|
"95-day": "雷雨",
|
||||||
|
"95-night": "雷雨",
|
||||||
|
"96-day": "雷雨伴随冰雹",
|
||||||
|
"96-night": "雷雨伴随冰雹",
|
||||||
|
"99-day": "雷雨伴随冰雹",
|
||||||
|
"99-night": "雷雨伴随冰雹"
|
||||||
|
},
|
||||||
|
"quicklaunch": {
|
||||||
|
"bookmark": "书签",
|
||||||
|
"service": "服务",
|
||||||
|
"search": "搜索",
|
||||||
|
"custom": "自定",
|
||||||
|
"visit": "访问",
|
||||||
|
"url": "网址"
|
||||||
|
},
|
||||||
|
"homebridge": {
|
||||||
|
"available_update": "System",
|
||||||
|
"updates": "更新",
|
||||||
|
"update_available": "有可用的更新",
|
||||||
|
"up_to_date": "Up to Date",
|
||||||
|
"child_bridges": "子网桥",
|
||||||
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
|
"up": "Up",
|
||||||
|
"pending": "待定中",
|
||||||
|
"down": "Down"
|
||||||
|
},
|
||||||
|
"autobrr": {
|
||||||
|
"approvedPushes": "已核准",
|
||||||
|
"rejectedPushes": "拒绝",
|
||||||
|
"filters": "Filters",
|
||||||
|
"indexers": "索引器"
|
||||||
|
},
|
||||||
|
"watchtower": {
|
||||||
|
"containers_scanned": "已扫描",
|
||||||
|
"containers_updated": "已升级",
|
||||||
|
"containers_failed": "失败"
|
||||||
|
},
|
||||||
|
"tubearchivist": {
|
||||||
|
"downloads": "队列",
|
||||||
|
"videos": "影片",
|
||||||
|
"channels": "频道",
|
||||||
|
"playlists": "播放清单"
|
||||||
|
},
|
||||||
|
"truenas": {
|
||||||
|
"load": "系统负载",
|
||||||
|
"uptime": "运行时间",
|
||||||
|
"alerts": "警报",
|
||||||
|
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
|
||||||
|
},
|
||||||
|
"navidrome": {
|
||||||
|
"nothing_streaming": "暂无播放",
|
||||||
|
"please_wait": "请等待"
|
||||||
|
},
|
||||||
|
"pyload": {
|
||||||
|
"speed": "速度",
|
||||||
|
"active": "Active",
|
||||||
|
"queue": "队列",
|
||||||
|
"total": "Total"
|
||||||
|
},
|
||||||
|
"gluetun": {
|
||||||
|
"public_ip": "公网 IP",
|
||||||
|
"region": "区域",
|
||||||
|
"country": "国家"
|
||||||
|
},
|
||||||
|
"hdhomerun": {
|
||||||
|
"channels": "频道",
|
||||||
|
"hd": "HD"
|
||||||
|
},
|
||||||
|
"ping": {
|
||||||
|
"error": "错误",
|
||||||
|
"ping": "Ping",
|
||||||
|
"up": "Up",
|
||||||
|
"down": "Down"
|
||||||
|
},
|
||||||
|
"scrutiny": {
|
||||||
|
"passed": "通过",
|
||||||
|
"failed": "失败",
|
||||||
|
"unknown": "未知的"
|
||||||
|
},
|
||||||
|
"paperlessngx": {
|
||||||
|
"inbox": "收件箱",
|
||||||
|
"total": "Total"
|
||||||
|
},
|
||||||
|
"deluge": {
|
||||||
|
"download": "下载",
|
||||||
|
"upload": "上传",
|
||||||
|
"leech": "下载中",
|
||||||
|
"seed": "做种"
|
||||||
|
},
|
||||||
|
"flood": {
|
||||||
|
"leech": "下载中",
|
||||||
|
"download": "下载",
|
||||||
|
"upload": "上传",
|
||||||
|
"seed": "做种"
|
||||||
|
},
|
||||||
|
"tdarr": {
|
||||||
|
"saved": "已保存",
|
||||||
|
"queue": "队列",
|
||||||
|
"processed": "已处理",
|
||||||
|
"errored": "出错"
|
||||||
|
},
|
||||||
|
"miniflux": {
|
||||||
|
"read": "已读",
|
||||||
|
"unread": "未读"
|
||||||
|
},
|
||||||
|
"nextdns": {
|
||||||
|
"wait": "请稍候",
|
||||||
|
"no_devices": "没有接收到设备数据"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
|
||||||
|
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
|
||||||
|
},
|
||||||
|
"omada": {
|
||||||
|
"connectedAp": "连接中的AP",
|
||||||
|
"activeUser": "活跃设备",
|
||||||
|
"alerts": "警报",
|
||||||
|
"connectedGateway": "已连接网关",
|
||||||
|
"connectedSwitches": "已连接开关"
|
||||||
|
},
|
||||||
|
"downloadstation": {
|
||||||
|
"download": "下载",
|
||||||
|
"upload": "上传",
|
||||||
|
"leech": "下载中",
|
||||||
|
"seed": "做种"
|
||||||
|
},
|
||||||
|
"mikrotik": {
|
||||||
|
"cpuLoad": "处理器",
|
||||||
|
"memoryUsed": "内存",
|
||||||
|
"uptime": "运行时间",
|
||||||
|
"numberOfLeases": "租约"
|
||||||
|
},
|
||||||
|
"xteve": {
|
||||||
|
"streams_all": "所有播放活动",
|
||||||
|
"streams_active": "正在播放",
|
||||||
|
"streams_xepg": "XEPG 频道"
|
||||||
|
},
|
||||||
|
"opnsense": {
|
||||||
|
"cpu": "处理器",
|
||||||
|
"memory": "内存",
|
||||||
|
"wanUpload": "WAN上传",
|
||||||
|
"wanDownload": "WAN下载"
|
||||||
|
},
|
||||||
|
"moonraker": {
|
||||||
|
"printer_state": "打印机状态",
|
||||||
|
"print_status": "打印状态",
|
||||||
|
"print_progress": "打印进程",
|
||||||
|
"layers": "层"
|
||||||
|
},
|
||||||
|
"medusa": {
|
||||||
|
"wanted": "关注中",
|
||||||
|
"queued": "已加入队列",
|
||||||
|
"series": "Series"
|
||||||
|
},
|
||||||
|
"octoprint": {
|
||||||
|
"printer_state": "打印机状态",
|
||||||
|
"temp_tool": "喷头温度",
|
||||||
|
"temp_bed": "平台温度",
|
||||||
|
"job_completion": "完成度"
|
||||||
|
},
|
||||||
|
"cloudflared": {
|
||||||
|
"origin_ip": "源IP",
|
||||||
|
"status": "状态"
|
||||||
|
},
|
||||||
|
"proxmoxbackupserver": {
|
||||||
|
"datastore_usage": "数据存储",
|
||||||
|
"failed_tasks_24h": "24h失败任务",
|
||||||
|
"cpu_usage": "处理器",
|
||||||
|
"memory_usage": "内存"
|
||||||
|
},
|
||||||
|
"immich": {
|
||||||
|
"users": "使用者",
|
||||||
|
"photos": "照片",
|
||||||
|
"videos": "影片",
|
||||||
|
"storage": "储存空间"
|
||||||
|
},
|
||||||
|
"uptimekuma": {
|
||||||
|
"up": "在线网站",
|
||||||
|
"down": "离线网站",
|
||||||
|
"uptime": "运行时间",
|
||||||
|
"incident": "严重事件",
|
||||||
|
"m": "m"
|
||||||
|
},
|
||||||
|
"komga": {
|
||||||
|
"libraries": "书库",
|
||||||
|
"series": "系列",
|
||||||
|
"books": "书刊"
|
||||||
|
},
|
||||||
|
"mylar": {
|
||||||
|
"series": "系列",
|
||||||
|
"issues": "问题",
|
||||||
|
"wanted": "关注中"
|
||||||
|
},
|
||||||
|
"photoprism": {
|
||||||
|
"albums": "相册",
|
||||||
|
"photos": "照片",
|
||||||
|
"videos": "视频",
|
||||||
|
"people": "人物"
|
||||||
|
},
|
||||||
|
"diskstation": {
|
||||||
|
"uptime": "运行时间",
|
||||||
|
"volumeAvailable": "剩余存储",
|
||||||
|
"days": "天"
|
||||||
|
},
|
||||||
|
"fileflows": {
|
||||||
|
"queue": "队列",
|
||||||
|
"processing": "处理中",
|
||||||
|
"processed": "已处理",
|
||||||
|
"time": "时间"
|
||||||
|
},
|
||||||
|
"grafana": {
|
||||||
|
"totalalerts": "警报总数",
|
||||||
|
"dashboards": "控制面板",
|
||||||
|
"datasources": "数据来源",
|
||||||
|
"alertstriggered": "触发的警报"
|
||||||
|
},
|
||||||
|
"nextcloud": {
|
||||||
|
"cpuload": "处理器",
|
||||||
|
"memoryusage": "内存",
|
||||||
|
"freespace": "剩余空间",
|
||||||
|
"activeusers": "活跃用户",
|
||||||
|
"numfiles": "Files",
|
||||||
|
"numshares": "共享项目"
|
||||||
|
},
|
||||||
|
"kopia": {
|
||||||
|
"status": "状态",
|
||||||
|
"size": "大小",
|
||||||
|
"lastrun": "最后运行",
|
||||||
|
"nextrun": "下次运行",
|
||||||
|
"failed": "失败"
|
||||||
|
},
|
||||||
|
"unmanic": {
|
||||||
|
"active_workers": "在线工作节点",
|
||||||
|
"total_workers": "工作节点总数",
|
||||||
|
"records_total": "队列长度"
|
||||||
|
},
|
||||||
|
"healthchecks": {
|
||||||
|
"new": "新建立",
|
||||||
|
"up": "在线的",
|
||||||
|
"grace": "延缓中",
|
||||||
|
"down": "离线",
|
||||||
|
"paused": "暂停",
|
||||||
|
"status": "状态",
|
||||||
|
"last_ping": "上次检查",
|
||||||
|
"never": "尚未检查"
|
||||||
|
},
|
||||||
|
"pterodactyl": {
|
||||||
|
"servers": "服务器",
|
||||||
|
"nodes": "节点"
|
||||||
|
},
|
||||||
|
"prometheus": {
|
||||||
|
"targets_up": "目标上线",
|
||||||
|
"targets_down": "目标在线",
|
||||||
|
"targets_total": "总目标"
|
||||||
|
},
|
||||||
|
"minecraft": {
|
||||||
|
"players": "玩家",
|
||||||
|
"version": "版本",
|
||||||
|
"status": "状态",
|
||||||
|
"up": "在线的",
|
||||||
|
"down": "离线"
|
||||||
|
},
|
||||||
|
"ghostfolio": {
|
||||||
|
"gross_percent_today": "今天",
|
||||||
|
"gross_percent_1y": "一年",
|
||||||
|
"gross_percent_max": "所有时间"
|
||||||
|
},
|
||||||
|
"audiobookshelf": {
|
||||||
|
"podcasts": "播客",
|
||||||
|
"books": "图书",
|
||||||
|
"podcastsDuration": "持续时间",
|
||||||
|
"booksDuration": "持续时间"
|
||||||
|
},
|
||||||
|
"homeassistant": {
|
||||||
|
"people_home": "房间",
|
||||||
|
"lights_on": "照明开",
|
||||||
|
"switches_on": "开关开"
|
||||||
|
},
|
||||||
|
"freshrss": {
|
||||||
|
"subscriptions": "订阅",
|
||||||
|
"unread": "未读"
|
||||||
|
},
|
||||||
|
"channelsdvrserver": {
|
||||||
|
"shows": "节目",
|
||||||
|
"recordings": "录像",
|
||||||
|
"scheduled": "已计划的",
|
||||||
|
"passes": "通行证"
|
||||||
|
},
|
||||||
|
"whatsupdocker": {
|
||||||
|
"monitoring": "监测中",
|
||||||
|
"updates": "可更新"
|
||||||
|
},
|
||||||
|
"tailscale": {
|
||||||
|
"address": "地址",
|
||||||
|
"expires": "失效",
|
||||||
|
"never": "从不",
|
||||||
|
"last_seen": "最后上线",
|
||||||
|
"days": "{{number}}d",
|
||||||
|
"hours": "{{number}}h",
|
||||||
|
"minutes": "{{number}}m",
|
||||||
|
"seconds": "{{number}}s",
|
||||||
|
"ago": "{{value}} 以前",
|
||||||
|
"now": "现在",
|
||||||
|
"years": "{{number}}年",
|
||||||
|
"weeks": "{{number}}周"
|
||||||
|
},
|
||||||
|
"qnap": {
|
||||||
|
"cpuUsage": "处理器",
|
||||||
|
"memUsage": "内存",
|
||||||
|
"systemTempC": "系统温度",
|
||||||
|
"poolUsage": "存储池",
|
||||||
|
"volumeUsage": "Volume Usage",
|
||||||
|
"invalid": "Invalid"
|
||||||
|
},
|
||||||
|
"pfsense": {
|
||||||
|
"load": "平均负载",
|
||||||
|
"memory": "内存",
|
||||||
|
"wanStatus": "WAN 状态",
|
||||||
|
"up": "上传",
|
||||||
|
"down": "下载",
|
||||||
|
"temp": "温度",
|
||||||
|
"disk": "磁盘",
|
||||||
|
"wanIP": "WAN IP"
|
||||||
|
},
|
||||||
|
"caddy": {
|
||||||
|
"upstreams": "上游",
|
||||||
|
"requests": "当前请求",
|
||||||
|
"requests_failed": "失败请求"
|
||||||
|
},
|
||||||
|
"evcc": {
|
||||||
|
"pv_power": "正式环境",
|
||||||
|
"battery_soc": "Battery",
|
||||||
|
"grid_power": "Grid",
|
||||||
|
"home_power": "Consumption",
|
||||||
|
"charge_power": "Charger",
|
||||||
|
"watt_hour": "Wh"
|
||||||
|
},
|
||||||
|
"pialert": {
|
||||||
|
"total": "Total",
|
||||||
|
"connected": "Connected",
|
||||||
|
"new_devices": "New Devices",
|
||||||
|
"down_alerts": "Down Alerts"
|
||||||
|
},
|
||||||
|
"jdownloader": {
|
||||||
|
"downloadCount": "Queue Count",
|
||||||
|
"downloadSpeed": "Download Speed",
|
||||||
|
"downloadBytesRemaining": "Remaining",
|
||||||
|
"downloadTotalBytes": "Size"
|
||||||
|
},
|
||||||
|
"kavita": {
|
||||||
|
"seriesCount": "系列",
|
||||||
|
"totalFiles": "文件"
|
||||||
|
},
|
||||||
|
"gamedig": {
|
||||||
|
"name": "Name",
|
||||||
|
"map": "Map",
|
||||||
|
"currentPlayers": "Current players",
|
||||||
|
"players": "Players",
|
||||||
|
"maxPlayers": "Max players",
|
||||||
|
"bots": "Bots",
|
||||||
|
"ping": "Ping",
|
||||||
|
"status": "Status",
|
||||||
|
"online": "Online",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"azuredevops": {
|
||||||
|
"canceled": "Canceled",
|
||||||
|
"inProgress": "In Progress",
|
||||||
|
"result": "Result",
|
||||||
|
"status": "Status",
|
||||||
|
"buildId": "Build ID",
|
||||||
|
"succeeded": "Succeeded",
|
||||||
|
"notStarted": "Not Started",
|
||||||
|
"failed": "Failed",
|
||||||
|
"totalPrs": "Total PRs",
|
||||||
|
"myPrs": "My PRs",
|
||||||
|
"approved": "Approved"
|
||||||
|
},
|
||||||
|
"urbackup": {
|
||||||
|
"ok": "Ok",
|
||||||
|
"errored": "Errors",
|
||||||
|
"noRecent": "Out of Date",
|
||||||
|
"totalUsed": "Used Storage"
|
||||||
|
},
|
||||||
|
"openmediavault": {
|
||||||
|
"downloading": "Downloading",
|
||||||
|
"total": "Total",
|
||||||
|
"running": "Running",
|
||||||
|
"stopped": "Stopped",
|
||||||
|
"passed": "Passed",
|
||||||
|
"failed": "Failed"
|
||||||
|
},
|
||||||
|
"mealie": {
|
||||||
|
"recipes": "Recipes",
|
||||||
|
"users": "Users",
|
||||||
|
"categories": "Categories",
|
||||||
|
"tags": "Tags"
|
||||||
|
},
|
||||||
|
"atsumeru": {
|
||||||
|
"series": "Series",
|
||||||
|
"archives": "Archives",
|
||||||
|
"chapters": "Chapters",
|
||||||
|
"categories": "Categories"
|
||||||
|
},
|
||||||
|
"calibreweb": {
|
||||||
|
"books": "书籍",
|
||||||
|
"authors": "作者",
|
||||||
|
"categories": "分类",
|
||||||
|
"series": "丛书"
|
||||||
|
},
|
||||||
|
"uptimerobot": {
|
||||||
|
"status": "Status",
|
||||||
|
"uptime": "Uptime",
|
||||||
|
"lastDown": "Last Downtime",
|
||||||
|
"downDuration": "Downtime Duration",
|
||||||
|
"sitesUp": "Sites Up",
|
||||||
|
"sitesDown": "Sites Down",
|
||||||
|
"paused": "Paused",
|
||||||
|
"notyetchecked": "Not Yet Checked",
|
||||||
|
"up": "Up",
|
||||||
|
"seemsdown": "Seems Down",
|
||||||
|
"down": "Down",
|
||||||
|
"unknown": "Unknown"
|
||||||
|
},
|
||||||
|
"opendtu": {
|
||||||
|
"relativePower": "Power %",
|
||||||
|
"yieldDay": "Today",
|
||||||
|
"limit": "Limit",
|
||||||
|
"absolutePower": "Power"
|
||||||
|
},
|
||||||
|
"calendar": {
|
||||||
|
"physicalRelease": "Physical release",
|
||||||
|
"inCinemas": "In cinemas",
|
||||||
|
"digitalRelease": "Digital release"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -32,8 +32,6 @@ export default function Block({ value, label, field }) {
|
|||||||
return getHighlightClass(highlight.level, highlightConfig);
|
return getHighlightClass(highlight.level, highlightConfig);
|
||||||
}, [highlight, highlightConfig]);
|
}, [highlight, highlightConfig]);
|
||||||
|
|
||||||
const applyToValueOnly = highlight?.valueOnly === true;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={classNames(
|
className={classNames(
|
||||||
@@ -46,11 +44,7 @@ export default function Block({ value, label, field }) {
|
|||||||
data-highlight-source={highlight?.source}
|
data-highlight-source={highlight?.source}
|
||||||
>
|
>
|
||||||
<div className="font-thin text-sm">{value === undefined || value === null ? "-" : value}</div>
|
<div className="font-thin text-sm">{value === undefined || value === null ? "-" : value}</div>
|
||||||
<div
|
<div className="font-bold text-xs uppercase">{t(label)}</div>
|
||||||
className={classNames("font-bold text-xs uppercase", applyToValueOnly && "text-theme-700 dark:text-theme-200")}
|
|
||||||
>
|
|
||||||
{t(label)}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,8 +14,6 @@ export default function Error({ error }) {
|
|||||||
|
|
||||||
if (typeof error === "string") {
|
if (typeof error === "string") {
|
||||||
error = { message: error }; // eslint-disable-line no-param-reassign
|
error = { message: error }; // eslint-disable-line no-param-reassign
|
||||||
} else if (typeof error === "number") {
|
|
||||||
error = { message: `Error ${error}` }; // eslint-disable-line no-param-reassign
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (error?.data?.error) {
|
if (error?.data?.error) {
|
||||||
|
|||||||
@@ -41,17 +41,6 @@ const Version = dynamic(() => import("components/version"), {
|
|||||||
|
|
||||||
const rightAlignedWidgets = ["weatherapi", "openweathermap", "weather", "openmeteo", "search", "datetime"];
|
const rightAlignedWidgets = ["weatherapi", "openweathermap", "weather", "openmeteo", "search", "datetime"];
|
||||||
|
|
||||||
// Normalize language codes so older config values like zh-CN still point to Crowdin-provided ones
|
|
||||||
const LANGUAGE_ALIASES = {
|
|
||||||
"zh-cn": "zh-Hans",
|
|
||||||
};
|
|
||||||
|
|
||||||
const normalizeLanguage = (language) => {
|
|
||||||
if (!language) return "en";
|
|
||||||
const alias = LANGUAGE_ALIASES[language.toLowerCase()];
|
|
||||||
return alias || language;
|
|
||||||
};
|
|
||||||
|
|
||||||
export async function getStaticProps() {
|
export async function getStaticProps() {
|
||||||
let logger;
|
let logger;
|
||||||
try {
|
try {
|
||||||
@@ -61,7 +50,6 @@ export async function getStaticProps() {
|
|||||||
const services = await servicesResponse();
|
const services = await servicesResponse();
|
||||||
const bookmarks = await bookmarksResponse();
|
const bookmarks = await bookmarksResponse();
|
||||||
const widgets = await widgetsResponse();
|
const widgets = await widgetsResponse();
|
||||||
const language = normalizeLanguage(settings.language);
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
@@ -72,7 +60,7 @@ export async function getStaticProps() {
|
|||||||
"/api/widgets": widgets,
|
"/api/widgets": widgets,
|
||||||
"/api/hash": false,
|
"/api/hash": false,
|
||||||
},
|
},
|
||||||
...(await serverSideTranslations(language)),
|
...(await serverSideTranslations(settings.language ?? "en")),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -230,9 +218,8 @@ function Home({ initialSettings }) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const language = normalizeLanguage(settings.language);
|
if (settings.language) {
|
||||||
if (language) {
|
i18n.changeLanguage(settings.language);
|
||||||
i18n.changeLanguage(language);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings.theme && theme !== settings.theme) {
|
if (settings.theme && theme !== settings.theme) {
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ export async function servicesFromDocker() {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
let substitutedVal = substituteEnvironmentVars(containerLabels[label]);
|
let substitutedVal = substituteEnvironmentVars(containerLabels[label]);
|
||||||
if (value === "widget.version" || /^widgets\[\d+\]\.version$/.test(value)) {
|
if (value === "widget.version") {
|
||||||
substitutedVal = parseInt(substitutedVal, 10);
|
substitutedVal = parseInt(substitutedVal, 10);
|
||||||
}
|
}
|
||||||
shvl.set(constructedService, value, substitutedVal);
|
shvl.set(constructedService, value, substitutedVal);
|
||||||
@@ -563,7 +563,6 @@ export function cleanServiceGroups(groups) {
|
|||||||
"speedtest",
|
"speedtest",
|
||||||
"wgeasy",
|
"wgeasy",
|
||||||
"grafana",
|
"grafana",
|
||||||
"gluetun",
|
|
||||||
].includes(type)
|
].includes(type)
|
||||||
) {
|
) {
|
||||||
if (version) widget.version = parseInt(version, 10);
|
if (version) widget.version = parseInt(version, 10);
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ const ensureArray = (value) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const findHighlightLevel = (ruleSet, numericValue, stringValue) => {
|
const findHighlightLevel = (ruleSet, numericValue, stringValue) => {
|
||||||
const { numeric, string, valueOnly } = ruleSet;
|
const { numeric, string } = ruleSet;
|
||||||
|
|
||||||
if (numeric && numericValue !== undefined) {
|
if (numeric && numericValue !== undefined) {
|
||||||
const numericRules = ensureArray(numeric);
|
const numericRules = ensureArray(numeric);
|
||||||
@@ -208,7 +208,7 @@ const findHighlightLevel = (ruleSet, numericValue, stringValue) => {
|
|||||||
for (const candidate of numericCandidates) {
|
for (const candidate of numericCandidates) {
|
||||||
for (const rule of numericRules) {
|
for (const rule of numericRules) {
|
||||||
if (rule?.level && evaluateNumericRule(candidate, rule)) {
|
if (rule?.level && evaluateNumericRule(candidate, rule)) {
|
||||||
return { level: rule.level, source: "numeric", rule, valueOnly };
|
return { level: rule.level, source: "numeric", rule };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -218,7 +218,7 @@ const findHighlightLevel = (ruleSet, numericValue, stringValue) => {
|
|||||||
const stringRules = ensureArray(string);
|
const stringRules = ensureArray(string);
|
||||||
for (const rule of stringRules) {
|
for (const rule of stringRules) {
|
||||||
if (rule?.level && evaluateStringRule(stringValue, rule)) {
|
if (rule?.level && evaluateStringRule(stringValue, rule)) {
|
||||||
return { level: rule.level, source: "string", rule, valueOnly };
|
return { level: rule.level, source: "string", rule };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -166,11 +166,7 @@ export default function Component({ service }) {
|
|||||||
refreshInterval: Math.max(1000, refreshInterval),
|
refreshInterval: Math.max(1000, refreshInterval),
|
||||||
});
|
});
|
||||||
|
|
||||||
// if mappings includes an error field and the data contains an error field then show data even if there is an error
|
if (customError) {
|
||||||
const mappingsIncludesError = Array.isArray(mappings) && mappings.find((mapping) => mapping.field === "error");
|
|
||||||
const errorIsData = customData && typeof customData === "object" && "error" in customData;
|
|
||||||
|
|
||||||
if (customError && !(mappingsIncludesError && errorIsData)) {
|
|
||||||
return <Container service={service} error={customError} />;
|
return <Container service={service} error={customError} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,95 +0,0 @@
|
|||||||
import getServiceWidget from "utils/config/service-helpers";
|
|
||||||
import createLogger from "utils/logger";
|
|
||||||
import { asJson, formatApiCall, sanitizeErrorURL } from "utils/proxy/api-helpers";
|
|
||||||
import { addCookieToJar } from "utils/proxy/cookie-jar";
|
|
||||||
import { httpProxy } from "utils/proxy/http";
|
|
||||||
import widgets from "widgets/widgets";
|
|
||||||
|
|
||||||
const proxyName = "frigateProxyHandler";
|
|
||||||
const logger = createLogger(proxyName);
|
|
||||||
|
|
||||||
export default async function frigateProxyHandler(req, res, map) {
|
|
||||||
const { group, service, endpoint, index } = req.query;
|
|
||||||
|
|
||||||
if (group && service) {
|
|
||||||
const widget = await getServiceWidget(group, service, index);
|
|
||||||
|
|
||||||
if (!widgets?.[widget.type]?.api) {
|
|
||||||
return res.status(403).json({ error: "Service does not support API calls" });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (widget) {
|
|
||||||
const url = formatApiCall(widgets[widget.type].api, { endpoint, ...widget });
|
|
||||||
|
|
||||||
const params = {
|
|
||||||
method: "GET",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
let [status, , data] = await httpProxy(url, params);
|
|
||||||
|
|
||||||
if (status === 401 && widget.username && widget.password) {
|
|
||||||
const loginUrl = `${widget.url}/api/login`;
|
|
||||||
logger.debug("Attempting login to Frigate at %s", loginUrl);
|
|
||||||
const [loginStatus, , , loginResponseHeaders] = await httpProxy(loginUrl, {
|
|
||||||
method: "POST",
|
|
||||||
body: JSON.stringify({ user: widget.username, password: widget.password }),
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (loginStatus !== 200) {
|
|
||||||
logger.error("HTTP Error %d calling %s", loginStatus, sanitizeErrorURL(loginUrl));
|
|
||||||
return res.status(status).json({
|
|
||||||
error: {
|
|
||||||
message: `HTTP Error ${status} while trying to login to Frigate`,
|
|
||||||
url: sanitizeErrorURL(url),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
addCookieToJar(url, loginResponseHeaders);
|
|
||||||
// Retry original request with cookie set
|
|
||||||
[status, , data] = await httpProxy(url, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (status >= 400) {
|
|
||||||
logger.error("HTTP Error %d calling %s", status, sanitizeErrorURL(url));
|
|
||||||
return res.status(status).json({
|
|
||||||
error: {
|
|
||||||
message: `HTTP Error ${status} from Frigate`,
|
|
||||||
url: sanitizeErrorURL(url),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
data = asJson(data);
|
|
||||||
|
|
||||||
if (endpoint == "stats") {
|
|
||||||
res.status(status).send({
|
|
||||||
num_cameras: data?.cameras !== undefined ? Object.keys(data?.cameras).length : 0,
|
|
||||||
uptime: data?.service?.uptime,
|
|
||||||
version: data?.service.version,
|
|
||||||
});
|
|
||||||
} else if (endpoint == "events") {
|
|
||||||
return res.status(status).send(
|
|
||||||
data.slice(0, 5).map((event) => ({
|
|
||||||
id: event.id,
|
|
||||||
camera: event.camera,
|
|
||||||
label: event.label,
|
|
||||||
start_time: new Date(event.start_time * 1000),
|
|
||||||
thumbnail: event.thumbnail,
|
|
||||||
score: event.data.score,
|
|
||||||
type: event.data.type,
|
|
||||||
})),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.debug("Invalid or missing proxy service type '%s' in group '%s'", service, group);
|
|
||||||
return res.status(400).json({ error: "Invalid proxy service type" });
|
|
||||||
}
|
|
||||||
@@ -1,12 +1,37 @@
|
|||||||
import frigateProxyHandler from "./proxy";
|
import { asJson } from "utils/proxy/api-helpers";
|
||||||
|
import genericProxyHandler from "utils/proxy/handlers/generic";
|
||||||
|
|
||||||
const widget = {
|
const widget = {
|
||||||
api: "{url}/api/{endpoint}",
|
api: "{url}/api/{endpoint}",
|
||||||
proxyHandler: frigateProxyHandler,
|
proxyHandler: genericProxyHandler,
|
||||||
|
|
||||||
mappings: {
|
mappings: {
|
||||||
stats: { endpoint: "stats" },
|
stats: {
|
||||||
events: { endpoint: "events" },
|
endpoint: "stats",
|
||||||
|
map: (data) => {
|
||||||
|
const jsonData = asJson(data);
|
||||||
|
return {
|
||||||
|
num_cameras: jsonData?.cameras !== undefined ? Object.keys(jsonData?.cameras).length : 0,
|
||||||
|
uptime: jsonData?.service?.uptime,
|
||||||
|
version: jsonData?.service.version,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
events: {
|
||||||
|
endpoint: "events",
|
||||||
|
map: (data) =>
|
||||||
|
asJson(data)
|
||||||
|
.slice(0, 5)
|
||||||
|
.map((event) => ({
|
||||||
|
id: event.id,
|
||||||
|
camera: event.camera,
|
||||||
|
label: event.label,
|
||||||
|
start_time: new Date(event.start_time * 1000),
|
||||||
|
thumbnail: event.thumbnail,
|
||||||
|
score: event.data.score,
|
||||||
|
type: event.data.type,
|
||||||
|
})),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,11 @@ export default function Component({ service }) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const status = serverData.online ? t("gamedig.online") : t("gamedig.offline");
|
const status = serverData.online ? (
|
||||||
|
<span className="text-green-500">{t("gamedig.online")}</span>
|
||||||
|
) : (
|
||||||
|
<span className="text-red-500">{t("gamedig.offline")}</span>
|
||||||
|
);
|
||||||
const name = serverData.online ? serverData.name : "-";
|
const name = serverData.online ? serverData.name : "-";
|
||||||
const map = serverData.online ? serverData.map : "-";
|
const map = serverData.online ? serverData.map : "-";
|
||||||
const currentPlayers = serverData.online ? `${serverData.players} / ${serverData.maxplayers}` : "-";
|
const currentPlayers = serverData.online ? `${serverData.players} / ${serverData.maxplayers}` : "-";
|
||||||
|
|||||||
@@ -12,8 +12,10 @@ export default function Component({ service }) {
|
|||||||
|
|
||||||
const { data: gluetunData, error: gluetunError } = useWidgetAPI(widget, "ip");
|
const { data: gluetunData, error: gluetunError } = useWidgetAPI(widget, "ip");
|
||||||
const includePF = widget.fields.includes("port_forwarded");
|
const includePF = widget.fields.includes("port_forwarded");
|
||||||
const pfEndpoint = widget.version > 1 ? "port_forwarded_v2" : "port_forwarded";
|
const { data: portForwardedData, error: portForwardedError } = useWidgetAPI(
|
||||||
const { data: portForwardedData, error: portForwardedError } = useWidgetAPI(widget, includePF ? pfEndpoint : "");
|
widget,
|
||||||
|
includePF ? "port_forwarded" : "",
|
||||||
|
);
|
||||||
|
|
||||||
if (gluetunError || (includePF && portForwardedError)) {
|
if (gluetunError || (includePF && portForwardedError)) {
|
||||||
return <Container service={service} error={gluetunError || portForwardedError} />;
|
return <Container service={service} error={gluetunError || portForwardedError} />;
|
||||||
|
|||||||
@@ -13,10 +13,6 @@ const widget = {
|
|||||||
endpoint: "openvpn/portforwarded",
|
endpoint: "openvpn/portforwarded",
|
||||||
validate: ["port"],
|
validate: ["port"],
|
||||||
},
|
},
|
||||||
port_forwarded_v2: {
|
|
||||||
endpoint: "portforward",
|
|
||||||
validate: ["port"],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,11 @@ export default function Component({ service }) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const statusIndicator = serverData.online ? t("minecraft.up") : t("minecraft.down");
|
const statusIndicator = serverData.online ? (
|
||||||
|
<span className="text-green-500">{t("minecraft.up")}</span>
|
||||||
|
) : (
|
||||||
|
<span className="text-red-500">{t("minecraft.down")}</span>
|
||||||
|
);
|
||||||
const players = serverData.players ? `${serverData.players.online} / ${serverData.players.max}` : "-";
|
const players = serverData.players ? `${serverData.players.online} / ${serverData.players.max}` : "-";
|
||||||
const version = serverData.version || "-";
|
const version = serverData.version || "-";
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,16 @@ export default function Component({ service }) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Container service={service}>
|
<Container service={service}>
|
||||||
<Block label="widget.status" value={up ? t("openwrt.up") : t("openwrt.down")} />
|
<Block
|
||||||
|
label="widget.status"
|
||||||
|
value={
|
||||||
|
up ? (
|
||||||
|
<span className="text-green-500">{t("openwrt.up")}</span>
|
||||||
|
) : (
|
||||||
|
<span className="text-red-500">{t("openwrt.down")}</span>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
/>
|
||||||
<Block label="openwrt.bytesTx" value={t("common.bytes", { value: bytesTx })} />
|
<Block label="openwrt.bytesTx" value={t("common.bytes", { value: bytesTx })} />
|
||||||
<Block label="openwrt.bytesRx" value={t("common.bytes", { value: bytesRx })} />
|
<Block label="openwrt.bytesRx" value={t("common.bytes", { value: bytesRx })} />
|
||||||
</Container>
|
</Container>
|
||||||
|
|||||||
@@ -56,7 +56,16 @@ export default function Component({ service }) {
|
|||||||
label="pfsense.temp"
|
label="pfsense.temp"
|
||||||
value={t("common.number", { value: systemData.data.temp_c, style: "unit", unit: "celsius" })}
|
value={t("common.number", { value: systemData.data.temp_c, style: "unit", unit: "celsius" })}
|
||||||
/>
|
/>
|
||||||
<Block label="pfsense.wanStatus" value={wan.status === "up" ? t("pfsense.up") : t("pfsense.down")} />
|
<Block
|
||||||
|
label="pfsense.wanStatus"
|
||||||
|
value={
|
||||||
|
wan.status === "up" ? (
|
||||||
|
<span className="text-green-500">{t("pfsense.up")}</span>
|
||||||
|
) : (
|
||||||
|
<span className="text-red-500">{t("pfsense.down")}</span>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
/>
|
||||||
{showWanIP && <Block label="pfsense.wanIP" value={wan.ipaddr} />}
|
{showWanIP && <Block label="pfsense.wanIP" value={wan.ipaddr} />}
|
||||||
{showDiskUsage && <Block label="pfsense.disk" value={t("common.percent", { value: diskUsage.toFixed(2) })} />}
|
{showDiskUsage && <Block label="pfsense.disk" value={t("common.percent", { value: diskUsage.toFixed(2) })} />}
|
||||||
</Container>
|
</Container>
|
||||||
|
|||||||
Reference in New Issue
Block a user