From ad5da4e8acc8207f46929676b5e51da9ad748a8a Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 19 Apr 2025 12:26:25 +0000 Subject: [PATCH 01/38] chore(deps): update dependency @vitejs/plugin-react to ^4.4.1 (#2902) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index ba9d74b09..93f521be0 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@semantic-release/npm": "^12.0.1", "@semantic-release/release-notes-generator": "^14.0.3", "@turbo/gen": "^2.5.0", - "@vitejs/plugin-react": "^4.4.0", + "@vitejs/plugin-react": "^4.4.1", "@vitest/coverage-v8": "^3.1.1", "@vitest/ui": "^3.1.1", "conventional-changelog-conventionalcommits": "^8.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c968d0c9..32a8123a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,8 +41,8 @@ importers: specifier: ^2.5.0 version: 2.5.0(@types/node@22.14.1)(typescript@5.8.3) '@vitejs/plugin-react': - specifier: ^4.4.0 - version: 4.4.0(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + specifier: ^4.4.1 + version: 4.4.1(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/coverage-v8': specifier: ^3.1.1 version: 3.1.1(vitest@3.1.1) @@ -5005,8 +5005,8 @@ packages: '@videojs/xhr@2.7.0': resolution: {integrity: sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==} - '@vitejs/plugin-react@4.4.0': - resolution: {integrity: sha512-x/EztcTKVj+TDeANY1WjNeYsvZjZdfWRMP/KXi5Yn8BoTzpa13ZltaQqKfvWYbX8CE10GOHHdC5v86jY9x8i/g==} + '@vitejs/plugin-react@4.4.1': + resolution: {integrity: sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 @@ -10785,7 +10785,7 @@ snapshots: '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.27.0 '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color @@ -13222,8 +13222,8 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 @@ -13575,7 +13575,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.4.0(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitejs/plugin-react@4.4.1(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) From 593e3ee5a6f9cb8d50a51262c85c3c067fce0691 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 19 Apr 2025 13:03:16 +0000 Subject: [PATCH 02/38] fix(deps): update dependency dockerode to ^4.0.6 (#2901) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/docker/package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/docker/package.json b/packages/docker/package.json index 588918040..f063c1176 100644 --- a/packages/docker/package.json +++ b/packages/docker/package.json @@ -25,7 +25,7 @@ "dependencies": { "@homarr/common": "workspace:^0.1.0", "@homarr/env": "workspace:^0.1.0", - "dockerode": "^4.0.5" + "dockerode": "^4.0.6" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 32a8123a4..906c57f4e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1110,8 +1110,8 @@ importers: specifier: workspace:^0.1.0 version: link:../env dockerode: - specifier: ^4.0.5 - version: 4.0.5 + specifier: ^4.0.6 + version: 4.0.6 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -6141,8 +6141,8 @@ packages: resolution: {integrity: sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==} engines: {node: '>= 8.0'} - dockerode@4.0.5: - resolution: {integrity: sha512-ZPmKSr1k1571Mrh7oIBS/j0AqAccoecY2yH420ni5j1KyNMgnoTh4Nu4FWunh0HZIJmRSmSysJjBIpa/zyWUEA==} + dockerode@4.0.6: + resolution: {integrity: sha512-FbVf3Z8fY/kALB9s+P9epCpWhfi/r0N2DgYYcYpsAUlaTxPjdsitsFobnltb+lyCgAIvf9C+4PSWlTnHlJMf1w==} engines: {node: '>= 8.0'} doctrine@2.1.0: @@ -14804,7 +14804,7 @@ snapshots: transitivePeerDependencies: - supports-color - dockerode@4.0.5: + dockerode@4.0.6: dependencies: '@balena/dockerignore': 1.0.2 '@grpc/grpc-js': 1.12.5 @@ -18986,7 +18986,7 @@ snapshots: byline: 5.0.0 debug: 4.4.0 docker-compose: 0.24.8 - dockerode: 4.0.5 + dockerode: 4.0.6 get-port: 7.1.0 proper-lockfile: 4.1.2 properties-reader: 2.3.0 From 2bf67c3de8609eb504e322d830f507973a55d6fc Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 19 Apr 2025 23:19:45 +0000 Subject: [PATCH 03/38] fix(deps): update dependency trpc-to-openapi to ^2.2.0 (#2903) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/api/package.json | 2 +- pnpm-lock.yaml | 63 ++++++++++++++------------------------- 2 files changed, 23 insertions(+), 42 deletions(-) diff --git a/packages/api/package.json b/packages/api/package.json index 339e4c0c4..647a908c0 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -50,7 +50,7 @@ "react": "19.1.0", "react-dom": "19.1.0", "superjson": "2.2.2", - "trpc-to-openapi": "^2.1.5", + "trpc-to-openapi": "^2.2.0", "zod": "^3.24.3" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 906c57f4e..678bb9c4d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -609,8 +609,8 @@ importers: specifier: 2.2.2 version: 2.2.2 trpc-to-openapi: - specifier: ^2.1.5 - version: 2.1.5(@trpc/server@11.1.0(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3) + specifier: ^2.2.0 + version: 2.2.0(@trpc/server@11.1.0(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3) zod: specifier: ^3.24.3 version: 3.24.3 @@ -5776,10 +5776,6 @@ packages: resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} engines: {node: '>=8'} - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} - console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -5898,8 +5894,8 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crossws@0.3.1: - resolution: {integrity: sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==} + crossws@0.3.4: + resolution: {integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==} crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} @@ -6992,8 +6988,8 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - h3@1.13.0: - resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==} + h3@1.15.1: + resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} @@ -7884,11 +7880,6 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - mime@4.0.4: resolution: {integrity: sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==} engines: {node: '>=16'} @@ -8141,6 +8132,7 @@ packages: node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead node-emoji@2.2.0: resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} @@ -8182,6 +8174,9 @@ packages: peerDependencies: webpack: ^5.0.0 + node-mock-http@1.0.0: + resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==} + node-plop@0.26.3: resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} engines: {node: '>=8.9.4'} @@ -9886,12 +9881,12 @@ packages: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} - trpc-to-openapi@2.1.5: - resolution: {integrity: sha512-cX6AlrIBEK0FJe8XJ0wFCroXFqTRpF3J5v4vU5D0Tq7YI1vj8oOIY50iaJX4Gv1PZTA6Dm9DMF7R1MUtlPZ4dQ==} + trpc-to-openapi@2.2.0: + resolution: {integrity: sha512-tIKpykAKsZqad/AQXc0JKDd1Evq8fm8j3jVMVVJ+keo2KUb67uyucHRzEsJWSN99RPf6esuytsmnetx7Q0S9wg==} peerDependencies: - '@trpc/server': ^11.0.0-rc.648 + '@trpc/server': ^11.1.0 zod: ^3.23.8 - zod-openapi: ^4.1.0 + zod-openapi: 4.2.4 ts-api-utils@2.0.1: resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} @@ -10115,9 +10110,6 @@ packages: resolution: {integrity: sha512-vFv1GA99b7eKO1HG/4RPu2Is3FBTWBrmzqzO0mz+rLxN3yXkE4mqRcb8g8fHxzX4blEysrNZLqg5RbJLqX5buA==} engines: {node: '>=20.18.1'} - unenv@1.10.0: - resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} - unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} engines: {node: '>=4'} @@ -14472,8 +14464,6 @@ snapshots: write-file-atomic: 3.0.3 xdg-basedir: 4.0.0 - consola@3.2.3: {} - console-control-strings@1.1.0: {} constant-case@2.0.0: @@ -14591,7 +14581,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crossws@0.3.1: + crossws@0.3.4: dependencies: uncrypto: 0.1.3 @@ -15931,18 +15921,17 @@ snapshots: graphemer@1.4.0: {} - h3@1.13.0: + h3@1.15.1: dependencies: cookie-es: 1.2.2 - crossws: 0.3.1 + crossws: 0.3.4 defu: 6.1.4 destr: 2.0.3 iron-webcrypto: 1.2.1 - ohash: 1.1.4 + node-mock-http: 1.0.0 radix3: 1.1.2 ufo: 1.5.4 uncrypto: 0.1.3 - unenv: 1.10.0 handlebars@4.7.8: dependencies: @@ -16837,8 +16826,6 @@ snapshots: dependencies: mime-db: 1.52.0 - mime@3.0.0: {} - mime@4.0.4: {} mimic-fn@2.1.0: {} @@ -17123,6 +17110,8 @@ snapshots: loader-utils: 2.0.4 webpack: 5.94.0 + node-mock-http@1.0.0: {} + node-plop@0.26.3: dependencies: '@babel/runtime-corejs3': 7.27.0 @@ -19118,11 +19107,11 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.1.5(@trpc/server@11.1.0(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3): + trpc-to-openapi@2.2.0(@trpc/server@11.1.0(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3): dependencies: '@trpc/server': 11.1.0(typescript@5.8.3) co-body: 6.2.0 - h3: 1.13.0 + h3: 1.15.1 openapi3-ts: 4.4.0 zod: 3.24.3 zod-openapi: 2.19.0(zod@3.24.3) @@ -19365,14 +19354,6 @@ snapshots: undici@7.8.0: {} - unenv@1.10.0: - dependencies: - consola: 3.2.3 - defu: 6.1.4 - mime: 3.0.0 - node-fetch-native: 1.6.6 - pathe: 1.1.2 - unicode-emoji-modifier-base@1.0.0: {} unicorn-magic@0.1.0: {} From fdf700dba51d0bc4e72cdd63a63acb99c2196329 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 20 Apr 2025 06:24:43 +0000 Subject: [PATCH 04/38] fix(deps): update dependency @auth/drizzle-adapter to ^1.9.0 (#2905) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/auth/package.json | 2 +- pnpm-lock.yaml | 34 ++++++++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/packages/auth/package.json b/packages/auth/package.json index 4ab2b2dde..cedca1ada 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -24,7 +24,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@auth/core": "^0.38.0", - "@auth/drizzle-adapter": "^1.8.0", + "@auth/drizzle-adapter": "^1.9.0", "@homarr/certificates": "workspace:^0.1.0", "@homarr/common": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 678bb9c4d..acbdf90d6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -640,8 +640,8 @@ importers: specifier: ^0.38.0 version: 0.38.0 '@auth/drizzle-adapter': - specifier: ^1.8.0 - version: 1.8.0 + specifier: ^1.9.0 + version: 1.9.0 '@homarr/certificates': specifier: workspace:^0.1.0 version: link:../certificates @@ -2292,8 +2292,22 @@ packages: nodemailer: optional: true - '@auth/drizzle-adapter@1.8.0': - resolution: {integrity: sha512-cxApE0h5WcyDsgGix9hzmWmCz0qxvmMJexAOQmI6R/YXYxrZ/mKBKu0BlfgQBR6z2XvNWl4wbEGchwSenSCksQ==} + '@auth/core@0.39.0': + resolution: {integrity: sha512-jusviw/sUSfAh6S/wjY5tRmJOq0Itd3ImF+c/b4HB9DfmfChtcfVJTNJeqCeExeCG8oh4PBKRsMQJsn2W6NhFQ==} + peerDependencies: + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + nodemailer: ^6.8.0 + peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true + nodemailer: + optional: true + + '@auth/drizzle-adapter@1.9.0': + resolution: {integrity: sha512-uRQjT9b66vOvkS5vgzK2ZFT3Ubg0JhcYPzOZtrNdwrsfQZ7hmnh+6rZntkl1s2TrKxwxHVTIfndON7+CgsHRkw==} '@axiomhq/js@1.0.0-rc.3': resolution: {integrity: sha512-Zm10TczcMLounWqC42nMkXQ7XKLqjzLrd5ia022oBKDUZqAFVg2y9d1quQVNV4FlXyg9MKDdfMjpKQRmzEGaog==} @@ -10680,9 +10694,17 @@ snapshots: preact: 10.24.3 preact-render-to-string: 6.5.11(preact@10.24.3) - '@auth/drizzle-adapter@1.8.0': + '@auth/core@0.39.0': dependencies: - '@auth/core': 0.38.0 + '@panva/hkdf': 1.2.1 + jose: 6.0.8 + oauth4webapi: 3.3.0 + preact: 10.24.3 + preact-render-to-string: 6.5.11(preact@10.24.3) + + '@auth/drizzle-adapter@1.9.0': + dependencies: + '@auth/core': 0.39.0 transitivePeerDependencies: - '@simplewebauthn/browser' - '@simplewebauthn/server' From b0d7f9a48c05d380ff84ed7f48c9a9fd8dc33602 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 20 Apr 2025 08:56:24 +0000 Subject: [PATCH 05/38] fix(deps): update dependency @auth/core to ^0.39.0 (#2904) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/auth/package.json | 2 +- packages/db/package.json | 2 +- pnpm-lock.yaml | 30 ++++-------------------------- 3 files changed, 6 insertions(+), 28 deletions(-) diff --git a/packages/auth/package.json b/packages/auth/package.json index cedca1ada..8011d7251 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -23,7 +23,7 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@auth/core": "^0.38.0", + "@auth/core": "^0.39.0", "@auth/drizzle-adapter": "^1.9.0", "@homarr/certificates": "workspace:^0.1.0", "@homarr/common": "workspace:^0.1.0", diff --git a/packages/db/package.json b/packages/db/package.json index 3734e4e14..97196488d 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -38,7 +38,7 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@auth/core": "^0.38.0", + "@auth/core": "^0.39.0", "@homarr/common": "workspace:^0.1.0", "@homarr/definitions": "workspace:^0.1.0", "@homarr/env": "workspace:^0.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index acbdf90d6..1a3a8f233 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -637,8 +637,8 @@ importers: packages/auth: dependencies: '@auth/core': - specifier: ^0.38.0 - version: 0.38.0 + specifier: ^0.39.0 + version: 0.39.0 '@auth/drizzle-adapter': specifier: ^1.9.0 version: 1.9.0 @@ -1006,8 +1006,8 @@ importers: packages/db: dependencies: '@auth/core': - specifier: ^0.38.0 - version: 0.38.0 + specifier: ^0.39.0 + version: 0.39.0 '@homarr/common': specifier: workspace:^0.1.0 version: link:../common @@ -2278,20 +2278,6 @@ packages: nodemailer: optional: true - '@auth/core@0.38.0': - resolution: {integrity: sha512-ClHl44x4cY3wfJmHLpW+XrYqED0fZIzbHmwbExltzroCjR5ts3DLTWzADRba8mJFYZ8JIEJDa+lXnGl0E9Bl7Q==} - peerDependencies: - '@simplewebauthn/browser': ^9.0.1 - '@simplewebauthn/server': ^9.0.2 - nodemailer: ^6.8.0 - peerDependenciesMeta: - '@simplewebauthn/browser': - optional: true - '@simplewebauthn/server': - optional: true - nodemailer: - optional: true - '@auth/core@0.39.0': resolution: {integrity: sha512-jusviw/sUSfAh6S/wjY5tRmJOq0Itd3ImF+c/b4HB9DfmfChtcfVJTNJeqCeExeCG8oh4PBKRsMQJsn2W6NhFQ==} peerDependencies: @@ -10686,14 +10672,6 @@ snapshots: preact: 10.11.3 preact-render-to-string: 5.2.3(preact@10.11.3) - '@auth/core@0.38.0': - dependencies: - '@panva/hkdf': 1.2.1 - jose: 6.0.8 - oauth4webapi: 3.3.0 - preact: 10.24.3 - preact-render-to-string: 6.5.11(preact@10.24.3) - '@auth/core@0.39.0': dependencies: '@panva/hkdf': 1.2.1 From 6e6edc8a0d809614588967b51751257929a6ccd3 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 20 Apr 2025 12:21:33 +0000 Subject: [PATCH 06/38] fix(deps): update dependency next-auth to v5.0.0-beta.26 (#2906) * fix(deps): update dependency next-auth to v5.0.0-beta.26 * fix(deps): update dependency next-auth to v5.0.0-beta.26 * fix: lint issue * fix: format issue * fix: login with oidc no longer working --------- Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> Co-authored-by: Meier Lukas --- .../app/[locale]/auth/login/_login-form.tsx | 37 ++++++--- packages/auth/package.json | 2 +- pnpm-lock.yaml | 77 ++----------------- 3 files changed, 34 insertions(+), 82 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx b/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx index a494c42cb..8523eb043 100644 --- a/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx +++ b/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx @@ -2,7 +2,7 @@ import type { PropsWithChildren } from "react"; import { useCallback, useEffect, useRef, useState } from "react"; -import { useRouter } from "next/navigation"; +import { useRouter, useSearchParams } from "next/navigation"; import { Anchor, Button, Card, Code, Collapse, Divider, PasswordInput, Stack, Text, TextInput } from "@mantine/core"; import { useDisclosure } from "@mantine/hooks"; import { z } from "zod"; @@ -15,6 +15,8 @@ import { showErrorNotification, showSuccessNotification } from "@homarr/notifica import { useScopedI18n } from "@homarr/translation/client"; import { userSignInSchema } from "@homarr/validation/user"; +type Provider = "credentials" | "ldap" | "oidc"; + interface LoginFormProps { providers: string[]; oidcClientName: string; @@ -26,6 +28,8 @@ const extendedValidation = userSignInSchema.extend({ provider: z.enum(["credenti export const LoginForm = ({ providers, oidcClientName, isOidcAutoLoginEnabled, callbackUrl }: LoginFormProps) => { const t = useScopedI18n("user"); + const searchParams = useSearchParams(); + const isError = searchParams.has("error"); const router = useRouter(); const [isPending, setIsPending] = useState(false); const form = useZodForm(extendedValidation, { @@ -39,22 +43,34 @@ export const LoginForm = ({ providers, oidcClientName, isOidcAutoLoginEnabled, c const credentialInputsVisible = providers.includes("credentials") || providers.includes("ldap"); const onSuccess = useCallback( - async (response: Awaited>) => { - if (response && (!response.ok || response.error)) { + async (provider: Provider, response: Awaited>) => { + if (!response.ok || response.error) { // eslint-disable-next-line @typescript-eslint/only-throw-error throw response.error; } + if (provider === "oidc") { + if (!response.url) { + showErrorNotification({ + title: t("action.login.notification.error.title"), + message: t("action.login.notification.error.message"), + autoClose: 10000, + }); + return; + } + + router.push(response.url); + return; + } + showSuccessNotification({ title: t("action.login.notification.success.title"), message: t("action.login.notification.success.message"), }); // Redirect to the callback URL if the response is defined and comes from a credentials provider (ldap or credentials). oidc is redirected automatically. - if (response) { - await revalidatePathActionAsync("/"); - router.push(callbackUrl); - } + await revalidatePathActionAsync("/"); + router.push(callbackUrl); }, [t, router, callbackUrl], ); @@ -70,14 +86,14 @@ export const LoginForm = ({ providers, oidcClientName, isOidcAutoLoginEnabled, c }, [t]); const signInAsync = useCallback( - async (provider: string, options?: Parameters[1]) => { + async (provider: Provider, options?: Parameters[1]) => { setIsPending(true); await signIn(provider, { ...options, redirect: false, callbackUrl: new URL(callbackUrl, window.location.href).href, }) - .then(onSuccess) + .then((response) => onSuccess(provider, response)) .catch(onError); }, [setIsPending, onSuccess, onError, callbackUrl], @@ -86,11 +102,12 @@ export const LoginForm = ({ providers, oidcClientName, isOidcAutoLoginEnabled, c const isLoginInProgress = useRef(false); useEffect(() => { + if (isError) return; if (isOidcAutoLoginEnabled && !isPending && !isLoginInProgress.current) { isLoginInProgress.current = true; void signInAsync("oidc"); } - }, [signInAsync, isOidcAutoLoginEnabled, isPending]); + }, [signInAsync, isOidcAutoLoginEnabled, isPending, isError]); return ( diff --git a/packages/auth/package.json b/packages/auth/package.json index 8011d7251..b500fb869 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -36,7 +36,7 @@ "cookies": "^0.9.1", "ldapts": "7.4.0", "next": "15.3.1", - "next-auth": "5.0.0-beta.25", + "next-auth": "5.0.0-beta.26", "pretty-print-error": "^1.1.2", "react": "19.1.0", "react-dom": "19.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1a3a8f233..58085e01c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -676,8 +676,8 @@ importers: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) next-auth: - specifier: 5.0.0-beta.25 - version: 5.0.0-beta.25(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3))(react@19.1.0) + specifier: 5.0.0-beta.26 + version: 5.0.0-beta.26(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3))(react@19.1.0) pretty-print-error: specifier: ^1.1.2 version: 1.1.2(patch_hash=d1432e02330bdaf8359eb0e54528a74ed6b7e5cce6bb65c13310c82e34fd1e4d) @@ -2264,20 +2264,6 @@ packages: '@asamuzakjp/css-color@2.8.2': resolution: {integrity: sha512-RtWv9jFN2/bLExuZgFFZ0I3pWWeezAHGgrmjqGGWclATl1aDe3yhCUaI0Ilkp6OCk9zX7+FjvDasEX8Q9Rxc5w==} - '@auth/core@0.37.2': - resolution: {integrity: sha512-kUvzyvkcd6h1vpeMAojK2y7+PAV5H+0Cc9+ZlKYDFhDY31AlvsB+GW5vNO4qE3Y07KeQgvNO9U0QUx/fN62kBw==} - peerDependencies: - '@simplewebauthn/browser': ^9.0.1 - '@simplewebauthn/server': ^9.0.2 - nodemailer: ^6.8.0 - peerDependenciesMeta: - '@simplewebauthn/browser': - optional: true - '@simplewebauthn/server': - optional: true - nodemailer: - optional: true - '@auth/core@0.39.0': resolution: {integrity: sha512-jusviw/sUSfAh6S/wjY5tRmJOq0Itd3ImF+c/b4HB9DfmfChtcfVJTNJeqCeExeCG8oh4PBKRsMQJsn2W6NhFQ==} peerDependencies: @@ -4750,9 +4736,6 @@ packages: '@types/cookie@0.4.1': resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - '@types/cookies@0.9.0': resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==} @@ -5814,10 +5797,6 @@ packages: cookie-es@1.2.2: resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} @@ -7545,9 +7524,6 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jose@5.9.3: - resolution: {integrity: sha512-egLIoYSpcd+QUF+UHgobt5YzI2Pkw/H39ou9suW687MY6PmCwPmkNV/4TNjn1p2tX5xO3j0d0sq5hiYE24bSlg==} - jose@6.0.8: resolution: {integrity: sha512-EyUPtOKyTYq+iMOszO42eobQllaIjJnwkZ2U93aJzNyPibCy7CEvT9UQnaCVB51IAd49gbNdCew1c0LcLTCB2g==} @@ -8051,8 +8027,8 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - next-auth@5.0.0-beta.25: - resolution: {integrity: sha512-2dJJw1sHQl2qxCrRk+KTQbeH+izFbGFPuJj5eGgBZFYyiYYtvlrBeUw1E/OJJxTRjuxbSYGnCTkUIRsIIW0bog==} + next-auth@5.0.0-beta.26: + resolution: {integrity: sha512-yAQLIP2x6FAM+GX6FTlQjoPph6msO/9HI3pjI1z1yws3VnvS77atetcxQOmCpxSLTO4jzvpQqPaBZMgRxDgsYg==} peerDependencies: '@simplewebauthn/browser': ^9.0.1 '@simplewebauthn/server': ^9.0.2 @@ -8297,9 +8273,6 @@ packages: nwsapi@2.2.16: resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} - oauth4webapi@3.0.0: - resolution: {integrity: sha512-Rw9SxQYuQX9J41VgM4rVNGtm1ng0Qcd8ndv7JmhmwqQ3hHBokX+WjV379IJhKk7bVPHefgvrDgHoO/rB2dY7YA==} - oauth4webapi@3.3.0: resolution: {integrity: sha512-ZlozhPlFfobzh3hB72gnBFLjXpugl/dljz1fJSRdqaV2r3D5dmi5lg2QWI0LmUYuazmE+b5exsloEv6toUtw9g==} @@ -8657,19 +8630,11 @@ packages: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} - preact-render-to-string@5.2.3: - resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} - peerDependencies: - preact: '>=10' - preact-render-to-string@6.5.11: resolution: {integrity: sha512-ubnauqoGczeGISiOh6RjX0/cdaF8v/oDXIjO85XALCQjwQP+SB4RDXXtvZ6yTYSjG+PC1QRP2AhPgCEsM2EvUw==} peerDependencies: preact: '>=10' - preact@10.11.3: - resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} - preact@10.24.3: resolution: {integrity: sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==} @@ -8695,9 +8660,6 @@ packages: engines: {node: '>=14'} hasBin: true - pretty-format@3.8.0: - resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} - pretty-ms@8.0.0: resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} engines: {node: '>=14.16'} @@ -10662,16 +10624,6 @@ snapshots: '@csstools/css-tokenizer': 3.0.3 lru-cache: 11.0.2 - '@auth/core@0.37.2': - dependencies: - '@panva/hkdf': 1.2.1 - '@types/cookie': 0.6.0 - cookie: 0.7.1 - jose: 5.9.3 - oauth4webapi: 3.0.0 - preact: 10.11.3 - preact-render-to-string: 5.2.3(preact@10.11.3) - '@auth/core@0.39.0': dependencies: '@panva/hkdf': 1.2.1 @@ -13254,8 +13206,6 @@ snapshots: '@types/cookie@0.4.1': {} - '@types/cookie@0.6.0': {} - '@types/cookies@0.9.0': dependencies: '@types/connect': 3.4.38 @@ -14499,8 +14449,6 @@ snapshots: cookie-es@1.2.2: {} - cookie@0.7.1: {} - cookie@0.7.2: {} cookie@1.0.2: {} @@ -16500,8 +16448,6 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jose@5.9.3: {} - jose@6.0.8: {} jotai@2.12.3(@types/react@19.1.2)(react@19.1.0): @@ -16967,9 +16913,9 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.25(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3))(react@19.1.0): + next-auth@5.0.0-beta.26(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3))(react@19.1.0): dependencies: - '@auth/core': 0.37.2 + '@auth/core': 0.39.0 next: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) react: 19.1.0 @@ -17168,8 +17114,6 @@ snapshots: nwsapi@2.2.16: {} - oauth4webapi@3.0.0: {} - oauth4webapi@3.3.0: {} object-assign@4.1.1: {} @@ -17557,17 +17501,10 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact-render-to-string@5.2.3(preact@10.11.3): - dependencies: - preact: 10.11.3 - pretty-format: 3.8.0 - preact-render-to-string@6.5.11(preact@10.24.3): dependencies: preact: 10.24.3 - preact@10.11.3: {} - preact@10.24.3: {} prebuild-install@7.1.2: @@ -17596,8 +17533,6 @@ snapshots: prettier@3.5.3: {} - pretty-format@3.8.0: {} - pretty-ms@8.0.0: dependencies: parse-ms: 3.0.0 From ac3c2a63773088897edf91e8e90acc56c5490061 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Mon, 21 Apr 2025 00:34:42 +0200 Subject: [PATCH 07/38] chore(issue-template): add missing homarr version 1.17.0 --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 4b088d510..bbd217e07 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -31,6 +31,7 @@ body: label: Version description: What version of Homarr are you running? options: + - 1.17.0 - 1.16.0 - 1.15.0 - 1.14.0 From 37484ce032edf5afb435ccb0aa24d963196b1711 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Mon, 21 Apr 2025 00:52:28 +0000 Subject: [PATCH 08/38] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/ca.json | 4 + packages/translation/src/lang/cn.json | 4 + packages/translation/src/lang/cs.json | 4 + packages/translation/src/lang/da.json | 4 + packages/translation/src/lang/de-CH.json | 4 + packages/translation/src/lang/de.json | 4 + packages/translation/src/lang/el.json | 4 + packages/translation/src/lang/en-gb.json | 4 + packages/translation/src/lang/es.json | 4 + packages/translation/src/lang/et.json | 4 + packages/translation/src/lang/fr.json | 4 + packages/translation/src/lang/he.json | 4 + packages/translation/src/lang/hr.json | 4 + packages/translation/src/lang/hu.json | 4 + packages/translation/src/lang/it.json | 4 + packages/translation/src/lang/ja.json | 4 + packages/translation/src/lang/ko.json | 4 + packages/translation/src/lang/lt.json | 4 + packages/translation/src/lang/lv.json | 4 + packages/translation/src/lang/nl.json | 4 + packages/translation/src/lang/no.json | 4 + packages/translation/src/lang/pl.json | 4 + packages/translation/src/lang/pt.json | 4 + packages/translation/src/lang/ro.json | 4 + packages/translation/src/lang/ru.json | 4 + packages/translation/src/lang/sk.json | 4 + packages/translation/src/lang/sl.json | 4 + packages/translation/src/lang/sv.json | 362 ++++++++++++----------- packages/translation/src/lang/tr.json | 4 + packages/translation/src/lang/uk.json | 4 + packages/translation/src/lang/vi.json | 4 + packages/translation/src/lang/zh.json | 4 + 32 files changed, 307 insertions(+), 179 deletions(-) diff --git a/packages/translation/src/lang/ca.json b/packages/translation/src/lang/ca.json index 4d548be0e..2f28c16a6 100644 --- a/packages/translation/src/lang/ca.json +++ b/packages/translation/src/lang/ca.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index 036fb9db8..5514577e7 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "还没有证书" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "到期时间 {when}" } }, diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index 75ed63279..d465b58b5 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index 61ff4bacc..386093864 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "Der er endnu ingen certifikater" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "Udløber {when}" } }, diff --git a/packages/translation/src/lang/de-CH.json b/packages/translation/src/lang/de-CH.json index 259a05043..659f4e167 100644 --- a/packages/translation/src/lang/de-CH.json +++ b/packages/translation/src/lang/de-CH.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "Es gibt noch keine Zertifikate" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "Gültig bis {when}" } }, diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index 4dc052f8b..e058e2e97 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "Es gibt noch keine Zertifikate" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "Gültig bis {when}" } }, diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index bb37fe42d..4b590151b 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/en-gb.json b/packages/translation/src/lang/en-gb.json index a27f6875d..d83f895ff 100644 --- a/packages/translation/src/lang/en-gb.json +++ b/packages/translation/src/lang/en-gb.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index 75a46a93f..28288db1d 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index 456b1d1a8..d198136c5 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 2acf4a3ca..7d94d52bf 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "Il n'y a pas encore de certificats" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "Expire le {when}" } }, diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index 631ba8cd1..ab9f778fd 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "אין עדיין תעודות אבטחה" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "פג ב- {when}" } }, diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index 87485f6cf..7c7b0921e 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 502b3f4a0..6a97c9e4d 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index 8462e5247..3619cf27d 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index 42a14573b..e19b35bb2 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index 6305069f7..117d9ec62 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index cc861c083..66aa74d1d 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index 21dba59db..bf576972a 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index 12b97dccc..453999202 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "Er zijn nog geen certificaten" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "Verloopt {when}" } }, diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index 95bcf5847..fcbfba6a9 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "Det er ingen sertifikater enda" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "Utløper {when}" } }, diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 027323246..3acf19e5a 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index f02210b20..e38e9c4b6 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index 4f7bedd7c..3d7f3892a 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index aefc8154f..a598800c2 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "Доверенные сертификаты отсутствуют" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "Истекает {when}" } }, diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 0d09c75b1..1152bbd42 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index b458d661a..cbf70dde5 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index 458bd0db9..2eea94823 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -209,46 +209,46 @@ "changeHomeBoard": { "notification": { "success": { - "message": "" + "message": "Startsidan har uppdaterats" }, "error": { - "message": "" + "message": "Misslyckades med att ändra startsidan" } } }, "changeSearchPreferences": { "notification": { "success": { - "message": "" + "message": "Inställningar för sökning har sparats" }, "error": { - "message": "" + "message": "Det gick inte att spara inställningar för sökning" } } }, "changeFirstDayOfWeek": { "notification": { "success": { - "message": "" + "message": "Inställning av veckans första dag har sparats" }, "error": { - "message": "" + "message": "Det gick inte att spara veckans första dag" } } }, "changePingIconsEnabled": { "notification": { "success": { - "message": "" + "message": "Inställning av ikon för onlinekontroll har sparats" }, "error": { - "message": "" + "message": "Inställning av onlinekontroll kunde inte sparas" } } }, "manageAvatar": { "changeImage": { - "label": "", + "label": "Byt bild", "notification": { "success": { "message": "" @@ -263,8 +263,8 @@ } }, "removeImage": { - "label": "", - "confirm": "", + "label": "Ta bort bild", + "confirm": "Är du säker på att du vill ta bort bilden?", "notification": { "success": { "message": "" @@ -286,9 +286,9 @@ } }, "delete": { - "label": "", - "description": "", - "confirm": "" + "label": "Ta bort användare permanent", + "description": "Att radera användaren inkluderar användarens inställningar. Inga tavlor kommer att raderas. Användaren kommer inte att underrättas.", + "confirm": "Är du säker på att du vill ta bort användaren {username} och användarens inställningar?" }, "select": { "label": "", @@ -301,26 +301,26 @@ }, "group": { "title": "Grupper", - "name": "", - "search": "", + "name": "Grupp", + "search": "Hitta en grupp", "field": { "name": "Namn", - "members": "", + "members": "Medlemmar", "homeBoard": { "label": "Starttavla", - "description": "" + "description": "Endast tavlor tillgängliga för gruppen kan väljas" }, "mobileBoard": { - "label": "", - "description": "" + "label": "Mobil starttavla", + "description": "Endast tavlor tillgängliga för gruppen kan väljas" } }, "permission": { "admin": { - "title": "", + "title": "Administratör", "item": { "admin": { - "label": "", + "label": "Administratör", "description": "" } } @@ -330,11 +330,11 @@ "item": { "create": { "label": "", - "description": "" + "description": "Tillåt medlemmar att addera appar" }, "use-all": { "label": "", - "description": "" + "description": "Tillåt medlemmar att addera valfri applikation på sina tavlor" }, "modify-all": { "label": "", @@ -441,7 +441,7 @@ }, "action": { "create": { - "label": "", + "label": "Addera en grupp", "notification": { "success": { "message": "" @@ -452,35 +452,35 @@ } }, "transfer": { - "label": "", - "description": "", - "confirm": "", + "label": "Överför ägarskap", + "description": "Överför ägarskapet av denna grupp till en annan användare.", + "confirm": "Är du säker på att du vill överföra ägarskapet för gruppen {name} till {username}?", "notification": { "success": { "message": "" }, "error": { - "message": "" + "message": "Kunde inte överföra ägarskap" } } }, "addMember": { - "label": "" + "label": "Lägg till en medlem" }, "removeMember": { "label": "", - "confirm": "" + "confirm": "Är du säker på att du vill ta bort användaren {user} från denna grupp?" }, "delete": { - "label": "", - "description": "", - "confirm": "", + "label": "Radera gruppen", + "description": "När du raderar en grupp går det inte att ångra. Var därför säker innan du tar bort gruppen.", + "confirm": "Är du säker på att du vill ta bort gruppen {name}?", "notification": { "success": { - "message": "" + "message": "Gruppen {name} har raderats" }, "error": { - "message": "" + "message": "Det gick inte att radera gruppen {name}" } } }, @@ -564,7 +564,7 @@ } }, "edit": { - "title": "", + "title": "Redigera applikationen", "notification": { "success": { "title": "Ändringarna har sparats", @@ -577,8 +577,8 @@ } }, "delete": { - "title": "", - "message": "", + "title": "Ta bort applikationen", + "message": "Är du säker på att du vill ta bort applikationen {name}?", "notification": { "success": { "title": "", @@ -651,7 +651,7 @@ "title": "", "notification": { "success": { - "title": "", + "title": "Ändringarna har sparats", "message": "" }, "error": { @@ -661,8 +661,8 @@ } }, "delete": { - "title": "", - "message": "", + "title": "Ta bort integration", + "message": "Är du säker på att du vill ta bort integrationen {name}?", "notification": { "success": { "title": "", @@ -784,7 +784,7 @@ "secureNotice": "", "reset": { "title": "", - "message": "" + "message": "Är du säker på att du vill återställa denna hemlighet?" }, "noSecretsRequired": { "segmentTitle": "", @@ -915,7 +915,7 @@ "error": "" }, "update": { - "success": "", + "success": "Ändringarna har sparats", "error": "" }, "transfer": { @@ -927,19 +927,19 @@ "placeholder": "" }, "multiText": { - "placeholder": "", + "placeholder": "Lägg till fler värden", "addLabel": "" }, "select": { "placeholder": "", "badge": { - "recommended": "" + "recommended": "Rekommenderas" } }, "userAvatar": { "menu": { - "switchToDarkMode": "", - "switchToLightMode": "", + "switchToDarkMode": "Byt till mörkt läge", + "switchToLightMode": "Byt till ljust läge", "management": "", "preferences": "Dina inställningar", "logout": "Logga ut", @@ -953,7 +953,7 @@ "noResults": "Hittade inga resultat", "unsavedChanges": "", "preview": { - "show": "", + "show": "Förhandsgranska", "hide": "" }, "zod": { @@ -1028,7 +1028,7 @@ }, "remove": { "title": "", - "message": "" + "message": "Är du säker du vill ta bort kategorin {name}?" }, "edit": { "title": "", @@ -1102,7 +1102,7 @@ }, "remove": { "title": "", - "message": "" + "message": "Är du säker på att du vill ta bort detta objekt?" } }, "widget": { @@ -1183,7 +1183,7 @@ "label": "", "option": { "row": { - "label": "Horisontal" + "label": "Horisontell" }, "column": { "label": "Vertikal" @@ -1211,7 +1211,7 @@ }, "dnsHoleControls": { "name": "", - "description": "Styr PiHole eller AdGuard från din instrumentpanel", + "description": "Styr PiHole eller AdGuard från din tavla", "option": { "layout": { "label": "", @@ -1343,10 +1343,10 @@ "decreaseIndent": "Minska indrag", "link": "Länk", "unlink": "Ta bort länk", - "image": "Bädda in bild", + "image": "Infoga en bild", "addTable": "Lägg till tabell", "deleteTable": "Ta bort tabell", - "colorCell": "Färga cell", + "colorCell": "Färg på cell", "mergeCell": "Växla sammanslagning av celler", "addColumnLeft": "Lägg till kolumn före", "addColumnRight": "Lägg till kolumn efter", @@ -1372,40 +1372,40 @@ }, "iframe": { "name": "", - "description": "Bädda in valfritt innehåll från internet. Vissa webbplatser kan begränsa åtkomsten.", + "description": "Infoga valfritt innehåll från internet. Vissa webbplatser kan ha begränsad åtkomst.", "option": { "embedUrl": { - "label": "Inbäddad URL" + "label": "Infoga URL-adress" }, "allowFullScreen": { - "label": "Tillåt helskärm" + "label": "Tillåt helskärmsläge" }, "allowTransparency": { - "label": "Tillåt opacitet" + "label": "Tillåt transparens" }, "allowScrolling": { "label": "Tillåt scrollning" }, "allowPayment": { - "label": "Tillåt betalning" + "label": "Tillåt att använda betalning" }, "allowAutoPlay": { "label": "Tillåt automatisk uppspelning" }, "allowMicrophone": { - "label": "Tillåt mikrofon" + "label": "Tillåt att använda mikrofon" }, "allowCamera": { - "label": "Tillåt kamera" + "label": "Tillåt att använda kamera" }, "allowGeolocation": { - "label": "Tillåt geolokalisering" + "label": "Tillåt geografisk lokalisering" } }, "error": { "noUrl": "", "unsupportedProtocol": "", - "noBrowerSupport": "Din webbläsare stöder inte iframes. Vänligen uppdatera din webbläsare." + "noBrowerSupport": "Din webbläsare saknar stöd för iframes. Vänligen uppdatera din webbläsare." } }, "smartHome-entityState": { @@ -1413,7 +1413,7 @@ "description": "", "option": { "entityId": { - "label": "Enhets-ID" + "label": "ID för entitet" }, "displayName": { "label": "" @@ -1434,7 +1434,7 @@ "label": "Visningsnamn" }, "automationId": { - "label": "Automations-ID" + "label": "ID för automation" } }, "spotlightAction": { @@ -1522,21 +1522,21 @@ "description": "", "option": { "releaseType": { - "label": "Radarr releasetyp", + "label": "Radarr - händelse att visa i kalendern", "options": { - "inCinemas": "", - "digitalRelease": "", - "physicalRelease": "" + "inCinemas": "Visas på biografer", + "digitalRelease": "Digital utgåva", + "physicalRelease": "Fysisk utgåva" } }, "filterPastMonths": { - "label": "" + "label": "Börjar från (antal dagar tillbaka)" }, "filterFutureMonths": { - "label": "" + "label": "Avsluta (antal dagar framåt)" }, "showUnmonitored": { - "label": "" + "label": "Visa även det som ej monitoreras" } } }, @@ -1581,30 +1581,30 @@ }, "kind": { "clear": "Klart", - "mainlyClear": "Främst klart", + "mainlyClear": "Huvudsakligen klart", "fog": "Dimma", "drizzle": "Duggregn", "freezingDrizzle": "Underkylt duggregn", "rain": "Regn", "freezingRain": "Underkylt regn", "snowFall": "Snöfall", - "snowGrains": "Snökorn", + "snowGrains": "Kornsnö", "rainShowers": "Regnskurar", "snowShowers": "Snöblandat regn", "thunderstorm": "Åska", "thunderstormWithHail": "Åskväder med hagel", - "unknown": "Okänd" + "unknown": "Okänt" } }, "indexerManager": { - "name": "Status för indexeringshanteraren", + "name": "Status för hantering av index", "description": "", "option": { "openIndexerSiteInNewTab": { "label": "" } }, - "title": "Indexeringshanterare", + "title": "Hantering av index", "testAll": "Testa alla", "error": { "internalServerError": "" @@ -1742,10 +1742,10 @@ }, "video": { "name": "Videoström", - "description": "Bädda in en videoström eller video från en kamera eller en webbplats", + "description": "Infoga en videoström eller video från en kamera eller en webbplats", "option": { "feedUrl": { - "label": "Flödes-URL" + "label": "URL-adress för flödet" }, "hasAutoPlay": { "label": "Automatisk uppspelning", @@ -1829,7 +1829,7 @@ "detailsTitle": "" }, "downSpeed": { - "columnTitle": "Ned", + "columnTitle": "Ner", "detailsTitle": "Nedladdningshastighet " }, "index": { @@ -1884,7 +1884,7 @@ }, "states": { "downloading": "Laddar ner", - "queued": "Köad", + "queued": "Placerad i kö", "paused": "Pausad", "completed": "Slutförd", "failed": "", @@ -1919,7 +1919,7 @@ }, "mediaRequests-requestList": { "name": "", - "description": "Se en lista över alla medieförfrågningar från din Overseerr- eller Jellyseerr-instans", + "description": "Se en lista över alla medieförfrågningar från din installation av Overseerr- eller Jellyseerr", "option": { "linksTargetNewTab": { "label": "Öppna länkar i ny flik" @@ -1934,7 +1934,7 @@ "unknown": "Okänd", "pending": "", "processing": "", - "partiallyAvailable": "Delvis", + "partiallyAvailable": "Delmängd", "available": "Tillgänglig" }, "status": { @@ -1962,7 +1962,7 @@ "total": "Totalt" }, "users": { - "main": "Toppanvändare", + "main": "Mest aktiva användare", "requests": "" } } @@ -1986,10 +1986,10 @@ "currentIndex": "", "healthCheck": { "title": "", - "queued": "Köad", + "queued": "Placerad i kö", "status": { "healthy": "Hälsosam", - "unhealthy": "Ohälsosam" + "unhealthy": "Ej hälsosam" } }, "panel": { @@ -2118,7 +2118,7 @@ "notification": { "success": { "title": "", - "message": "Tavlan har duplicerats" + "message": "Tavlan har kopierats" }, "error": { "title": "", @@ -2129,7 +2129,7 @@ "edit": { "notification": { "success": { - "title": "", + "title": "Ändringarna har sparats", "message": "Tavlan sparades" }, "error": { @@ -2139,7 +2139,7 @@ }, "confirmLeave": { "title": "", - "message": "" + "message": "Du har ändringar som inte har sparats. Är du säker på att du vill fortsätta?" } }, "oldImport": { @@ -2191,7 +2191,7 @@ "description": "" }, "removeItems": { - "label": "", + "label": "Ta bort objekt", "description": "" } } @@ -2207,13 +2207,13 @@ }, "field": { "pageTitle": { - "label": "" + "label": "Namn på sidan" }, "metaTitle": { "label": "" }, "logoImageUrl": { - "label": "" + "label": "URL-adress till logo för tavlan" }, "faviconImageUrl": { "label": "" @@ -2227,7 +2227,7 @@ } }, "backgroundImageAttachment": { - "label": "Bilaga till bakgrundsbild", + "label": "Bilaga med bakgrundsbild", "option": { "fixed": { "label": "", @@ -2283,39 +2283,39 @@ "label": "" }, "iconColor": { - "label": "" + "label": "Färg på ikoner" }, "customCss": { "label": "", - "description": "Vidare kan du anpassa din instrumentpanel med CSS, vilket endast rekommenderas för erfarna användare", + "description": "Du kan anpassa din tavla genom att använda CSS, vilket endast rekommenderas för erfarna användare", "customClassesAlert": { "title": "", "description": "" } }, "disableStatus": { - "label": "", - "description": "" + "label": "Visa ej status för applikationerna", + "description": "Inaktiverar statuskontroll för alla applikationer på tavlan" }, "columnCount": { - "label": "" + "label": "Antal kolumner" }, "itemRadius": { - "label": "", - "description": "", + "label": "Radie på objekt", + "description": "Ändrar radien för objekten på din tavla", "option": { - "xs": "", - "sm": "", - "md": "", - "lg": "", - "xl": "" + "xs": "Mycket liten", + "sm": "Liten", + "md": "Mellan", + "lg": "Stor", + "xl": "Mycket stor" } }, "name": { "label": "Namn" }, "isPublic": { - "label": "Publik", + "label": "Allmän", "description": "" } }, @@ -2323,18 +2323,18 @@ "metaTitle": "" }, "setting": { - "title": "", + "title": "Inställningar för tavlan {boardName}", "section": { "general": { - "title": "Allmänt", + "title": "Generellt", "unrecognizedLink": "" }, "layout": { "title": "", "responsive": { - "title": "", + "title": "Responsiv layout", "action": { - "add": "" + "add": "Lägg till layout" } } }, @@ -2348,10 +2348,10 @@ "title": "" }, "behavior": { - "title": "" + "title": "Beteende" }, "access": { - "title": "", + "title": "Behörighet", "permission": { "item": { "view": { @@ -2367,7 +2367,7 @@ } }, "dangerZone": { - "title": "Farozon", + "title": "Kritiska inställningar", "action": { "rename": { "label": "", @@ -2390,11 +2390,11 @@ "confirm": { "public": { "title": "", - "description": "" + "description": "Är du säker på att du vill göra denna tavla privat? Det kommer att dölja tavlan för allmänheten. Länkar för gästanvändare kommer att plockas bort." }, "private": { "title": "", - "description": "" + "description": "Är du säker på att du vill göra den här tavlan allmän? Detta kommer att göra tavlan tillgänglig för alla." } } }, @@ -2404,7 +2404,7 @@ "button": "", "confirm": { "title": "Ta bort tavla", - "description": "" + "description": "Är du säker på att du vill ta bort denna tavla? Detta kommer att permanent ta bort tavlan och allt dess innehåll." } } } @@ -2438,7 +2438,7 @@ }, "anonymous": { "description": "", - "link": "", + "link": "Visa offentliga tavlor", "notice": "" } } @@ -2450,11 +2450,11 @@ "label": "" }, "columnCount": { - "label": "" + "label": "Antal kolumner" }, "breakpoint": { - "label": "", - "description": "" + "label": "Gränsvärde", + "description": "Layouten kommer att användas på alla skärmar större än detta gränsvärde tills nästa större gränsvärde." } } }, @@ -2475,14 +2475,14 @@ "boards": "Tavlor", "apps": "Applikationer", "integrations": "", - "searchEngies": "", + "searchEngies": "Sökmotorer", "medias": "", "users": { "label": "Användare", "items": { "manage": "Hantera", "invites": "Inbjudningar", - "groups": "" + "groups": "Grupper" } }, "tools": { @@ -2502,8 +2502,8 @@ "items": { "documentation": "Dokumentation", "submitIssue": "", - "discord": "Gemenskapens Discord", - "sourceCode": "" + "discord": "Community Discord", + "sourceCode": "Källkod" } }, "about": "Om" @@ -2517,7 +2517,7 @@ "invite": "Inbjudningar", "integration": "", "app": "Applikationer", - "group": "" + "group": "Grupper" }, "statisticLabel": { "boards": "Tavlor", @@ -2542,14 +2542,14 @@ "label": "Ange som din starttavla", "badge": { "label": "Hem", - "tooltip": "Den här tavlan kommer att visas som din starttavla" + "tooltip": "Den här tavlan kommer att användas som din starttavla" } }, "setMobileHomeBoard": { - "label": "", + "label": "Ange som din mobila starttavla", "badge": { "label": "", - "tooltip": "" + "tooltip": "Den här tavlan kommer att användas som din mobila starttavla" } }, "duplicate": { @@ -2559,7 +2559,7 @@ "label": "Radera permanent", "confirm": { "title": "Ta bort tavla", - "description": "" + "description": "Är du säker på att du vill ta bort tavlan {name}?" } } }, @@ -2587,16 +2587,16 @@ "general": { "title": "Allmänt", "item": { - "language": "", + "language": "Språk och region", "board": { - "title": "", + "title": "Starttavla", "type": { "general": "", "mobile": "" } }, - "search": "", - "firstDayOfWeek": "Första veckodagen", + "search": "Sökning", + "firstDayOfWeek": "Första dag på veckan", "accessibility": "Tillgänglighet" } }, @@ -2616,7 +2616,7 @@ }, "create": { "metaTitle": "Addera användare", - "title": "", + "title": "Addera ny användare", "step": { "personalInformation": { "label": "" @@ -2625,36 +2625,36 @@ "label": "Säkerhet" }, "groups": { - "label": "", - "title": "", + "label": "Grupper", + "title": "Välj alla grupper användare skall tillhöra", "description": "" }, "review": { "label": "" }, "completed": { - "title": "" + "title": "Användare har adderats" }, "error": { - "title": "" + "title": "Misslyckades med att addera användaren" } }, "action": { - "createAnother": "", - "back": "" + "createAnother": "Addera ytterligare en användare", + "back": "Tillbaka till användarlistan" } }, "invite": { - "title": "Hantera användarinbjudningar", + "title": "Hantera inbjudningar till användare", "action": { "new": { - "title": "", - "description": "Efter utgångsdatumet är en inbjudan inte längre giltig och mottagaren kan inte addera ett konto." + "title": "Ny inbjudan", + "description": "Efter giltighetsdatumet är en inbjudan inte längre giltig och mottagaren kan inte addera ett konto." }, "copy": { "title": "", "description": "", - "link": "Inbjudningslänk", + "link": "Länk till inbjudan", "button": "" }, "delete": { @@ -2670,7 +2670,7 @@ "label": "Adderad av" }, "expirationDate": { - "label": "Utgångsdatum" + "label": "Giltighetsdatum" }, "token": { "label": "" @@ -2684,23 +2684,23 @@ "general": { "title": "Allmänt", "owner": "Ägare", - "ownerOfGroup": "", - "ownerOfGroupDeleted": "" + "ownerOfGroup": "Ägare av denna grupp", + "ownerOfGroupDeleted": "Ägaren av denna grupp har tagits bort. Den har för närvarande ingen ägare." }, "setting": { "title": "", "alert": "", "board": { - "title": "" + "title": "Tavlor" } }, "members": { - "title": "", + "title": "Medlemmar", "search": "", "notFound": "" }, "permissions": { - "title": "", + "title": "Behörigheter", "form": { "unsavedChanges": "" } @@ -2750,7 +2750,7 @@ }, "noTranslate": { "title": "", - "text": "När webbplatsens språk sannolikt inte att användaren vill läsa, kommer Google att visa en översättningslänk i sökresultaten" + "text": "När webbplatsens språk sannolikt inte är vad användaren vill läsa, kommer Google att visa en översättningslänk i sökresultaten" }, "noSiteLinksSearchBox": { "title": "", @@ -2760,9 +2760,9 @@ "board": { "title": "Tavlor", "homeBoard": { - "label": "", + "label": "Global starttavla", "mobileLabel": "", - "description": "" + "description": "Endast offentliga tavlor kan väljas" }, "status": { "title": "", @@ -2772,12 +2772,12 @@ }, "forceDisableStatus": { "label": "", - "description": "" + "description": "Status för applikationerna kommer att inaktiveras för alla användare och kan inte aktiveras" } } }, "search": { - "title": "", + "title": "Sökning", "defaultSearchEngine": { "label": "", "description": "" @@ -2788,8 +2788,8 @@ "defaultColorScheme": { "label": "", "options": { - "light": "", - "dark": "" + "light": "Ljus", + "dark": "Mörk" } } }, @@ -2911,8 +2911,8 @@ "subtitle": "" }, "translators": { - "title": "", - "subtitle": "" + "title": "Översättare", + "subtitle": "{count} bidrar med översättningar på flera olika språk" }, "libraries": { "title": "", @@ -3289,15 +3289,15 @@ }, "tab": { "user": "Användare", - "group": "", - "inherited": "" + "group": "Grupper", + "inherited": "Ärvda grupper" }, "field": { "user": { "label": "Användare" }, "group": { - "label": "" + "label": "Grupp" }, "permission": { "label": "" @@ -3353,7 +3353,7 @@ "security": "Säkerhet", "board": "Tavlor", "groups": { - "label": "" + "label": "Grupper" }, "invites": { "label": "Inbjudningar" @@ -3407,7 +3407,7 @@ } }, "search": { - "placeholder": "", + "placeholder": "Sök efter vad som helst", "nothingFound": "", "error": { "fetch": "" @@ -3440,7 +3440,7 @@ "label": "" }, "homeBoard": { - "label": "" + "label": "Ange som starttavla" }, "mobileBoard": { "label": "" @@ -3469,8 +3469,8 @@ "title": "", "option": { "colorScheme": { - "light": "", - "dark": "" + "light": "Byt till ljust läge", + "dark": "Byt till mörkt läge" }, "language": { "label": "", @@ -3481,7 +3481,7 @@ } }, "newBoard": { - "label": "" + "label": "Addera en grupp" }, "importBoard": { "label": "" @@ -3498,13 +3498,13 @@ } }, "newUser": { - "label": "" + "label": "Addera ny användare" }, "newInvite": { "label": "" }, "newGroup": { - "label": "" + "label": "Addera en grupp" } } } @@ -3573,7 +3573,7 @@ "label": "" }, "discord": { - "label": "Gemenskapens Discord" + "label": "Community Discord" } } } @@ -3635,7 +3635,7 @@ "label": "" }, "manageGroup": { - "label": "" + "label": "Hantera grupper" }, "manageDocker": { "label": "" @@ -3656,10 +3656,10 @@ "label": "Om" }, "homeBoard": { - "label": "" + "label": "Starttavla" }, "preferences": { - "label": "Dina Inställningar" + "label": "Dina inställningar" } } } @@ -3682,7 +3682,7 @@ } }, "group": { - "title": "", + "title": "Grupper", "children": { "action": { "detail": { @@ -3745,7 +3745,7 @@ "title": "", "notification": { "success": { - "title": "", + "title": "Ändringarna har sparats", "message": "" }, "error": { @@ -3761,7 +3761,7 @@ }, "delete": { "title": "", - "message": "", + "message": "Är du säker på att du vill ta bort sökmotorn {name}?", "notification": { "success": { "title": "", @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, @@ -3819,7 +3823,7 @@ }, "remove": { "label": "", - "confirm": "", + "confirm": "Är du säker du vill ta bort certifikatet?", "notification": { "success": { "title": "", diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 1efbe9d24..ab7abfa8c 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "Henüz sertifika yok" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "{when} süresi doluyor" } }, diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index e8c5828a2..7288d8be4 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "Сертифікати відсутні" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index dc8112c4c..f31a32ee3 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "" } }, diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 65964dbad..dea381467 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "尚無憑證" }, + "invalid": { + "title": "", + "description": "" + }, "expires": "到期 {when}" } }, From 3d508088d5a7d7fda53f49c196c2c6dd84d598d1 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 21 Apr 2025 03:13:01 +0000 Subject: [PATCH 09/38] fix(deps): update dependency @ctrl/qbittorrent to ^9.6.0 (#2914) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/integrations/package.json | 2 +- pnpm-lock.yaml | 25 ++++++++++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/packages/integrations/package.json b/packages/integrations/package.json index a0e62517e..5b13d839a 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -25,7 +25,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@ctrl/deluge": "^7.1.0", - "@ctrl/qbittorrent": "^9.5.2", + "@ctrl/qbittorrent": "^9.6.0", "@ctrl/transmission": "^7.2.0", "@homarr/certificates": "workspace:^0.1.0", "@homarr/common": "workspace:^0.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 58085e01c..5064a11a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1274,8 +1274,8 @@ importers: specifier: ^7.1.0 version: 7.1.0 '@ctrl/qbittorrent': - specifier: ^9.5.2 - version: 9.5.2 + specifier: ^9.6.0 + version: 9.6.0 '@ctrl/transmission': specifier: ^7.2.0 version: 7.2.0 @@ -2484,8 +2484,8 @@ packages: resolution: {integrity: sha512-wENP7LH4BmCjz+gXVq7Nzz20zMjY/huuG7aDk/yu/LhFdC84e/l8222rCIAo0lwhU451lFcJKLcOmtG6TNrBAQ==} engines: {node: '>=18'} - '@ctrl/qbittorrent@9.5.2': - resolution: {integrity: sha512-hfArVXAdGmOpCOkSzLBbUpalSniAJkACHk9oH0n/x77WrbF4SlPaRbWtMOzoixoa3hutwBtS5x/zHbOs8Eoj9g==} + '@ctrl/qbittorrent@9.6.0': + resolution: {integrity: sha512-/8HnjvHEx8tFNhWdtjkPGN+rCpBtNatk0kAFPNe7w4pExKjbpQHsJ3AvItcn1F7j04npn4MzCs5mYP7oBtyYig==} engines: {node: '>=18'} '@ctrl/shared-torrent@6.2.1': @@ -9979,6 +9979,10 @@ packages: resolution: {integrity: sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==} engines: {node: '>=16'} + type-fest@4.40.0: + resolution: {integrity: sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==} + engines: {node: '>=16'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -10039,6 +10043,9 @@ packages: ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} @@ -10918,7 +10925,7 @@ snapshots: rfc4648: 1.5.3 uint8array-extras: 1.4.0 - '@ctrl/qbittorrent@9.5.2': + '@ctrl/qbittorrent@9.6.0': dependencies: '@ctrl/magnet-link': 4.0.2 '@ctrl/shared-torrent': 6.2.1 @@ -10926,8 +10933,8 @@ snapshots: cookie: 1.0.2 node-fetch-native: 1.6.6 ofetch: 1.4.1 - type-fest: 4.39.1 - ufo: 1.5.4 + type-fest: 4.40.0 + ufo: 1.6.1 uint8array-extras: 1.4.0 '@ctrl/shared-torrent@6.2.1': {} @@ -19164,6 +19171,8 @@ snapshots: type-fest@4.39.1: {} + type-fest@4.40.0: {} + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -19258,6 +19267,8 @@ snapshots: ufo@1.5.4: {} + ufo@1.6.1: {} + uglify-js@3.19.3: optional: true From 6040f063cac7f0c132f758c0170c095614c834f4 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 21 Apr 2025 09:21:11 +0000 Subject: [PATCH 10/38] chore(deps): update pnpm to v10.9.0 (#2916) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 93f521be0..189c63eb9 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.1.1" }, - "packageManager": "pnpm@10.8.1", + "packageManager": "pnpm@10.9.0", "engines": { "node": ">=22.14.0" }, From 09718b82587a270221739513c91fd217f90a2a0f Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 21 Apr 2025 09:22:24 +0000 Subject: [PATCH 11/38] chore(deps): update vitest monorepo to ^3.1.2 (#2915) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 6 +- pnpm-lock.yaml | 188 +++++++++++++++++++++++++------------------------ 2 files changed, 99 insertions(+), 95 deletions(-) diff --git a/package.json b/package.json index 189c63eb9..57531fd60 100644 --- a/package.json +++ b/package.json @@ -40,8 +40,8 @@ "@semantic-release/release-notes-generator": "^14.0.3", "@turbo/gen": "^2.5.0", "@vitejs/plugin-react": "^4.4.1", - "@vitest/coverage-v8": "^3.1.1", - "@vitest/ui": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", + "@vitest/ui": "^3.1.2", "conventional-changelog-conventionalcommits": "^8.0.0", "cross-env": "^7.0.3", "jsdom": "^26.1.0", @@ -51,7 +51,7 @@ "turbo": "^2.5.0", "typescript": "^5.8.3", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^3.1.1" + "vitest": "^3.1.2" }, "packageManager": "pnpm@10.9.0", "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5064a11a3..3283cee9f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,11 +44,11 @@ importers: specifier: ^4.4.1 version: 4.4.1(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/coverage-v8': - specifier: ^3.1.1 - version: 3.1.1(vitest@3.1.1) + specifier: ^3.1.2 + version: 3.1.2(vitest@3.1.2) '@vitest/ui': - specifier: ^3.1.1 - version: 3.1.1(vitest@3.1.1) + specifier: ^3.1.2 + version: 3.1.2(vitest@3.1.2) conventional-changelog-conventionalcommits: specifier: ^8.0.0 version: 8.0.0 @@ -77,8 +77,8 @@ importers: specifier: ^5.1.4 version: 5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) vitest: - specifier: ^3.1.1 - version: 3.1.1(@types/node@22.14.1)(@vitest/ui@3.1.1)(jsdom@26.1.0)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + specifier: ^3.1.2 + version: 3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) apps/nextjs: dependencies: @@ -2360,11 +2360,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.26.9': - resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.27.0': resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} engines: {node: '>=6.0.0'} @@ -2410,10 +2405,6 @@ packages: resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.9': - resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} - engines: {node: '>=6.9.0'} - '@babel/types@7.27.0': resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} engines: {node: '>=6.9.0'} @@ -4994,20 +4985,20 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - '@vitest/coverage-v8@3.1.1': - resolution: {integrity: sha512-MgV6D2dhpD6Hp/uroUoAIvFqA8AuvXEFBC2eepG3WFc1pxTfdk1LEqqkWoWhjz+rytoqrnUUCdf6Lzco3iHkLQ==} + '@vitest/coverage-v8@3.1.2': + resolution: {integrity: sha512-XDdaDOeaTMAMYW7N63AqoK32sYUWbXnTkC6tEbVcu3RlU1bB9of32T+PGf8KZvxqLNqeXhafDFqCkwpf2+dyaQ==} peerDependencies: - '@vitest/browser': 3.1.1 - vitest: 3.1.1 + '@vitest/browser': 3.1.2 + vitest: 3.1.2 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.1.1': - resolution: {integrity: sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==} + '@vitest/expect@3.1.2': + resolution: {integrity: sha512-O8hJgr+zREopCAqWl3uCVaOdqJwZ9qaDwUP7vy3Xigad0phZe9APxKhPcDNqYYi0rX5oMvwJMSCAXY2afqeTSA==} - '@vitest/mocker@3.1.1': - resolution: {integrity: sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==} + '@vitest/mocker@3.1.2': + resolution: {integrity: sha512-kOtd6K2lc7SQ0mBqYv/wdGedlqPdM/B38paPY+OwJ1XiNi44w3Fpog82UfOibmHaV9Wod18A09I9SCKLyDMqgw==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -5017,25 +5008,25 @@ packages: vite: optional: true - '@vitest/pretty-format@3.1.1': - resolution: {integrity: sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==} + '@vitest/pretty-format@3.1.2': + resolution: {integrity: sha512-R0xAiHuWeDjTSB3kQ3OQpT8Rx3yhdOAIm/JM4axXxnG7Q/fS8XUwggv/A4xzbQA+drYRjzkMnpYnOGAc4oeq8w==} - '@vitest/runner@3.1.1': - resolution: {integrity: sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==} + '@vitest/runner@3.1.2': + resolution: {integrity: sha512-bhLib9l4xb4sUMPXnThbnhX2Yi8OutBMA8Yahxa7yavQsFDtwY/jrUZwpKp2XH9DhRFJIeytlyGpXCqZ65nR+g==} - '@vitest/snapshot@3.1.1': - resolution: {integrity: sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==} + '@vitest/snapshot@3.1.2': + resolution: {integrity: sha512-Q1qkpazSF/p4ApZg1vfZSQ5Yw6OCQxVMVrLjslbLFA1hMDrT2uxtqMaw8Tc/jy5DLka1sNs1Y7rBcftMiaSH/Q==} - '@vitest/spy@3.1.1': - resolution: {integrity: sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==} + '@vitest/spy@3.1.2': + resolution: {integrity: sha512-OEc5fSXMws6sHVe4kOFyDSj/+4MSwst0ib4un0DlcYgQvRuYQ0+M2HyqGaauUMnjq87tmUaMNDxKQx7wNfVqPA==} - '@vitest/ui@3.1.1': - resolution: {integrity: sha512-2HpiRIYg3dlvAJBV9RtsVswFgUSJK4Sv7QhpxoP0eBGkYwzGIKP34PjaV00AULQi9Ovl6LGyZfsetxDWY5BQdQ==} + '@vitest/ui@3.1.2': + resolution: {integrity: sha512-+YPgKiLpFEyBVJNHDkRcSDcLrrnr20lyU4HQoI9Jtq1MdvoX8usql9h38mQw82MBU1Zo5BPC6sw+sXZ6NS18CQ==} peerDependencies: - vitest: 3.1.1 + vitest: 3.1.2 - '@vitest/utils@3.1.1': - resolution: {integrity: sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==} + '@vitest/utils@3.1.2': + resolution: {integrity: sha512-5GGd0ytZ7BH3H6JTj9Kw7Prn1Nbg0wZVrIvou+UWxm54d+WoXXgAgjFJ8wn3LdagWLFSEfpPeyYrByZaGEZHLg==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -6598,8 +6589,8 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - expect-type@1.2.0: - resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} external-editor@3.1.0: @@ -6667,6 +6658,14 @@ packages: picomatch: optional: true + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fecha@4.2.3: resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} @@ -9473,8 +9472,8 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.8.1: - resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} stream-buffers@3.0.3: resolution: {integrity: sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==} @@ -9747,6 +9746,10 @@ packages: resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + tinygradient@1.1.5: resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} @@ -10269,8 +10272,8 @@ packages: videojs-vtt.js@0.15.5: resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} - vite-node@3.1.1: - resolution: {integrity: sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==} + vite-node@3.1.2: + resolution: {integrity: sha512-/8iMryv46J3aK13iUXsei5G/A3CUlW4665THCPS+K8xAaqrVWiGB4RfXMQXCLjpK9P2eK//BczrVkn5JLAk6DA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -10313,16 +10316,16 @@ packages: terser: optional: true - vitest@3.1.1: - resolution: {integrity: sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==} + vitest@3.1.2: + resolution: {integrity: sha512-WaxpJe092ID1C0mr+LH9MmNrhfzi8I65EX/NRU/Ld016KqQNRgxSOlGNP1hHN+a/F8L15Mh8klwaF77zR3GeDQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.1.1 - '@vitest/ui': 3.1.1 + '@vitest/browser': 3.1.2 + '@vitest/ui': 3.1.2 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -10781,10 +10784,6 @@ snapshots: dependencies: '@babel/types': 7.26.0 - '@babel/parser@7.26.9': - dependencies: - '@babel/types': 7.27.0 - '@babel/parser@7.27.0': dependencies: '@babel/types': 7.27.0 @@ -10849,11 +10848,6 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.26.9': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.27.0': dependencies: '@babel/helper-string-parser': 7.25.9 @@ -13535,7 +13529,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.1.1(vitest@3.1.1)': + '@vitest/coverage-v8@3.1.2(vitest@3.1.2)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -13546,61 +13540,61 @@ snapshots: istanbul-reports: 3.1.7 magic-string: 0.30.17 magicast: 0.3.5 - std-env: 3.8.1 + std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.1.1(@types/node@22.14.1)(@vitest/ui@3.1.1)(jsdom@26.1.0)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color - '@vitest/expect@3.1.1': + '@vitest/expect@3.1.2': dependencies: - '@vitest/spy': 3.1.1 - '@vitest/utils': 3.1.1 + '@vitest/spy': 3.1.2 + '@vitest/utils': 3.1.2 chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.1(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitest/mocker@3.1.2(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: - '@vitest/spy': 3.1.1 + '@vitest/spy': 3.1.2 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: vite: 5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) - '@vitest/pretty-format@3.1.1': + '@vitest/pretty-format@3.1.2': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.1.1': + '@vitest/runner@3.1.2': dependencies: - '@vitest/utils': 3.1.1 + '@vitest/utils': 3.1.2 pathe: 2.0.3 - '@vitest/snapshot@3.1.1': + '@vitest/snapshot@3.1.2': dependencies: - '@vitest/pretty-format': 3.1.1 + '@vitest/pretty-format': 3.1.2 magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@3.1.1': + '@vitest/spy@3.1.2': dependencies: tinyspy: 3.0.2 - '@vitest/ui@3.1.1(vitest@3.1.1)': + '@vitest/ui@3.1.2(vitest@3.1.2)': dependencies: - '@vitest/utils': 3.1.1 + '@vitest/utils': 3.1.2 fflate: 0.8.2 flatted: 3.3.3 pathe: 2.0.3 sirv: 3.0.1 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 tinyrainbow: 2.0.0 - vitest: 3.1.1(@types/node@22.14.1)(@vitest/ui@3.1.1)(jsdom@26.1.0)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) - '@vitest/utils@3.1.1': + '@vitest/utils@3.1.2': dependencies: - '@vitest/pretty-format': 3.1.1 + '@vitest/pretty-format': 3.1.2 loupe: 3.1.3 tinyrainbow: 2.0.0 @@ -15463,7 +15457,7 @@ snapshots: expand-template@2.0.3: {} - expect-type@1.2.0: {} + expect-type@1.2.1: {} external-editor@3.1.0: dependencies: @@ -15527,6 +15521,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + fecha@4.2.3: {} fetch-retry@6.0.0: {} @@ -16704,8 +16702,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 source-map-js: 1.2.1 make-dir@3.1.0: @@ -18568,7 +18566,7 @@ snapshots: statuses@2.0.1: {} - std-env@3.8.1: {} + std-env@3.9.0: {} stream-buffers@3.0.3: {} @@ -18967,6 +18965,11 @@ snapshots: fdir: 6.4.3(picomatch@4.0.2) picomatch: 4.0.2 + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + tinygradient@1.1.5: dependencies: '@types/tinycolor2': 1.4.6 @@ -19499,7 +19502,7 @@ snapshots: dependencies: global: 4.4.0 - vite-node@3.1.1(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite-node@3.1.2(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: cac: 6.7.14 debug: 4.4.0 @@ -19540,31 +19543,32 @@ snapshots: sugarss: 4.0.1(postcss@8.4.47) terser: 5.39.0 - vitest@3.1.1(@types/node@22.14.1)(@vitest/ui@3.1.1)(jsdom@26.1.0)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vitest@3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: - '@vitest/expect': 3.1.1 - '@vitest/mocker': 3.1.1(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) - '@vitest/pretty-format': 3.1.1 - '@vitest/runner': 3.1.1 - '@vitest/snapshot': 3.1.1 - '@vitest/spy': 3.1.1 - '@vitest/utils': 3.1.1 + '@vitest/expect': 3.1.2 + '@vitest/mocker': 3.1.2(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + '@vitest/pretty-format': 3.1.2 + '@vitest/runner': 3.1.2 + '@vitest/snapshot': 3.1.2 + '@vitest/spy': 3.1.2 + '@vitest/utils': 3.1.2 chai: 5.2.0 debug: 4.4.0 - expect-type: 1.2.0 + expect-type: 1.2.1 magic-string: 0.30.17 pathe: 2.0.3 - std-env: 3.8.1 + std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 + tinyglobby: 0.2.13 tinypool: 1.0.2 tinyrainbow: 2.0.0 vite: 5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) - vite-node: 3.1.1(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite-node: 3.1.2(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.14.1 - '@vitest/ui': 3.1.1(vitest@3.1.1) + '@vitest/ui': 3.1.2(vitest@3.1.2) jsdom: 26.1.0 transitivePeerDependencies: - less From fed28bd77546be83b9965bd1116996b621f6b639 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 21 Apr 2025 23:20:50 +0000 Subject: [PATCH 12/38] fix(deps): update dependency sass to ^1.87.0 (#2921) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 102 +++++++++++++++++++-------------------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index ebfb4e664..8c4c1c236 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -81,7 +81,7 @@ "react-dom": "19.1.0", "react-error-boundary": "^5.0.0", "react-simple-code-editor": "^0.14.1", - "sass": "^1.86.3", + "sass": "^1.87.0", "superjson": "2.2.2", "swagger-ui-react": "^5.21.0", "use-deep-compare-effect": "^1.8.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3283cee9f..c53a3739d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,7 +42,7 @@ importers: version: 2.5.0(@types/node@22.14.1)(typescript@5.8.3) '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + version: 4.4.1(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/coverage-v8': specifier: ^3.1.2 version: 3.1.2(vitest@3.1.2) @@ -75,10 +75,10 @@ importers: version: 5.8.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + version: 5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) vitest: specifier: ^3.1.2 - version: 3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + version: 3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) apps/nextjs: dependencies: @@ -213,13 +213,13 @@ importers: version: 5.74.4(@tanstack/react-query@5.74.4(react@19.1.0))(react@19.1.0) '@tanstack/react-query-next-experimental': specifier: ^5.74.4 - version: 5.74.4(@tanstack/react-query@5.74.4(react@19.1.0))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3))(react@19.1.0) + version: 5.74.4(@tanstack/react-query@5.74.4(react@19.1.0))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0) '@trpc/client': specifier: ^11.1.0 version: 11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3) '@trpc/next': specifier: ^11.1.0 - version: 11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + version: 11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@trpc/react-query': specifier: ^11.1.0 version: 11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) @@ -261,7 +261,7 @@ importers: version: 2.0.0-beta.9(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 - version: 15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + version: 15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) postcss-preset-mantine: specifier: ^1.17.0 version: 1.17.0(postcss@8.4.47) @@ -281,8 +281,8 @@ importers: specifier: ^0.14.1 version: 0.14.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) sass: - specifier: ^1.86.3 - version: 1.86.3 + specifier: ^1.87.0 + version: 1.87.0 superjson: specifier: 2.2.2 version: 2.2.2 @@ -595,7 +595,7 @@ importers: version: 4.5.0 next: specifier: 15.3.1 - version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) pretty-print-error: specifier: ^1.1.2 version: 1.1.2(patch_hash=d1432e02330bdaf8359eb0e54528a74ed6b7e5cce6bb65c13310c82e34fd1e4d) @@ -674,10 +674,10 @@ importers: version: 7.4.0 next: specifier: 15.3.1 - version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) next-auth: specifier: 5.0.0-beta.26 - version: 5.0.0-beta.26(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3))(react@19.1.0) + version: 5.0.0-beta.26(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0) pretty-print-error: specifier: ^1.1.2 version: 1.1.2(patch_hash=d1432e02330bdaf8359eb0e54528a74ed6b7e5cce6bb65c13310c82e34fd1e4d) @@ -819,7 +819,7 @@ importers: version: 1.11.13 next: specifier: 15.3.1 - version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: specifier: 19.1.0 version: 19.1.0 @@ -1461,7 +1461,7 @@ importers: version: 1.11.13 next: specifier: 15.3.1 - version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: specifier: 19.1.0 version: 19.1.0 @@ -1562,7 +1562,7 @@ importers: version: 0.5.16 next: specifier: 15.3.1 - version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: specifier: 19.1.0 version: 19.1.0 @@ -1784,7 +1784,7 @@ importers: version: 7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 - version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: specifier: 19.1.0 version: 19.1.0 @@ -1857,7 +1857,7 @@ importers: version: 2.12.3(@types/react@19.1.2)(react@19.1.0) next: specifier: 15.3.1 - version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: specifier: 19.1.0 version: 19.1.0 @@ -1903,10 +1903,10 @@ importers: version: 2.0.0-beta.9(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 - version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) next-intl: specifier: 4.0.2 - version: 4.0.2(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3))(react@19.1.0)(typescript@5.8.3) + version: 4.0.2(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)(typescript@5.8.3) react: specifier: 19.1.0 version: 19.1.0 @@ -1964,7 +1964,7 @@ importers: version: 2.0.0-beta.9(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 - version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: specifier: 19.1.0 version: 19.1.0 @@ -2152,7 +2152,7 @@ importers: version: 2.0.0-beta.9(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 - version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: specifier: 19.1.0 version: 19.1.0 @@ -9200,8 +9200,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.86.3: - resolution: {integrity: sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==} + sass@1.87.0: + resolution: {integrity: sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==} engines: {node: '>=14.0.0'} hasBin: true @@ -12830,10 +12830,10 @@ snapshots: '@tanstack/react-query': 5.74.4(react@19.1.0) react: 19.1.0 - '@tanstack/react-query-next-experimental@5.74.4(@tanstack/react-query@5.74.4(react@19.1.0))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3))(react@19.1.0)': + '@tanstack/react-query-next-experimental@5.74.4(@tanstack/react-query@5.74.4(react@19.1.0))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)': dependencies: '@tanstack/react-query': 5.74.4(react@19.1.0) - next: 15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + next: 15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: 19.1.0 '@tanstack/react-query@5.74.4(react@19.1.0)': @@ -13086,11 +13086,11 @@ snapshots: '@trpc/server': 11.1.0(typescript@5.8.3) typescript: 5.8.3 - '@trpc/next@11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': + '@trpc/next@11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': dependencies: '@trpc/client': 11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3) '@trpc/server': 11.1.0(typescript@5.8.3) - next: 15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + next: 15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) typescript: 5.8.3 @@ -13518,14 +13518,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.4.1(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitejs/plugin-react@4.4.1(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -13543,7 +13543,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -13554,13 +13554,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.2(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitest/mocker@3.1.2(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: '@vitest/spy': 3.1.2 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) '@vitest/pretty-format@3.1.2': dependencies: @@ -13590,7 +13590,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.13 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) '@vitest/utils@3.1.2': dependencies: @@ -16918,23 +16918,23 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.26(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3))(react@19.1.0): + next-auth@5.0.0-beta.26(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0): dependencies: '@auth/core': 0.39.0 - next: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + next: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: 19.1.0 - next-intl@4.0.2(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3))(react@19.1.0)(typescript@5.8.3): + next-intl@4.0.2(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)(typescript@5.8.3): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 - next: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3) + next: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: 19.1.0 use-intl: 4.0.2(react@19.1.0) optionalDependencies: typescript: 5.8.3 - next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3): + next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0): dependencies: '@next/env': 15.3.1 '@swc/counter': 0.1.3 @@ -16955,13 +16955,13 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.3.1 '@next/swc-win32-x64-msvc': 15.3.1 '@playwright/test': 1.49.1 - sass: 1.86.3 + sass: 1.87.0 sharp: 0.34.1 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.86.3): + next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0): dependencies: '@next/env': 15.3.1 '@swc/counter': 0.1.3 @@ -16982,7 +16982,7 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.3.1 '@next/swc-win32-x64-msvc': 15.3.1 '@playwright/test': 1.49.1 - sass: 1.86.3 + sass: 1.87.0 sharp: 0.34.1 transitivePeerDependencies: - '@babel/core' @@ -18203,7 +18203,7 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.86.3: + sass@1.87.0: dependencies: chokidar: 4.0.0 immutable: 5.0.2 @@ -19502,13 +19502,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@3.1.2(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite-node@3.1.2(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - '@types/node' - less @@ -19520,18 +19520,18 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.8.3) optionalDependencies: - vite: 5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -19539,14 +19539,14 @@ snapshots: optionalDependencies: '@types/node': 22.14.1 fsevents: 2.3.3 - sass: 1.86.3 + sass: 1.87.0 sugarss: 4.0.1(postcss@8.4.47) terser: 5.39.0 - vitest@3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vitest@3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: '@vitest/expect': 3.1.2 - '@vitest/mocker': 3.1.2(vite@5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + '@vitest/mocker': 3.1.2(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/pretty-format': 3.1.2 '@vitest/runner': 3.1.2 '@vitest/snapshot': 3.1.2 @@ -19563,8 +19563,8 @@ snapshots: tinyglobby: 0.2.13 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 5.4.5(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) - vite-node: 3.1.2(@types/node@22.14.1)(sass@1.86.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite-node: 3.1.2(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.14.1 From 023ffcf7bf48ea135e31cf0b491699adb01493e4 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 01:13:02 +0000 Subject: [PATCH 13/38] chore(deps): update dependency eslint to ^9.25.1 (#2918) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- apps/websocket/package.json | 2 +- packages/analytics/package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- packages/boards/package.json | 2 +- packages/certificates/package.json | 2 +- packages/cli/package.json | 2 +- packages/common/package.json | 2 +- packages/cron-job-runner/package.json | 2 +- packages/cron-job-status/package.json | 2 +- packages/cron-jobs-core/package.json | 2 +- packages/cron-jobs/package.json | 2 +- packages/db/package.json | 2 +- packages/definitions/package.json | 2 +- packages/docker/package.json | 2 +- packages/env/package.json | 2 +- packages/form/package.json | 2 +- packages/forms-collection/package.json | 2 +- packages/icons/package.json | 2 +- packages/integrations/package.json | 2 +- packages/log/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/modals/package.json | 2 +- packages/notifications/package.json | 2 +- packages/old-import/package.json | 2 +- packages/old-schema/package.json | 2 +- packages/ping/package.json | 2 +- packages/redis/package.json | 2 +- packages/request-handler/package.json | 2 +- packages/server-settings/package.json | 2 +- packages/settings/package.json | 2 +- packages/spotlight/package.json | 2 +- packages/translation/package.json | 2 +- packages/ui/package.json | 2 +- packages/validation/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 266 ++++++++++++------------ tooling/eslint/package.json | 2 +- 40 files changed, 172 insertions(+), 172 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 8c4c1c236..fe63c37b3 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -98,7 +98,7 @@ "@types/react-dom": "19.1.2", "@types/swagger-ui-react": "^5.18.0", "concurrently": "^9.1.2", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "node-loader": "^2.1.0", "prettier": "^3.5.3", "typescript": "^5.8.3" diff --git a/apps/tasks/package.json b/apps/tasks/package.json index a92d34f2c..72992c94b 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -46,7 +46,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/node": "^22.14.1", "dotenv-cli": "^8.0.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "prettier": "^3.5.3", "tsx": "4.19.3", "typescript": "^5.8.3" diff --git a/apps/websocket/package.json b/apps/websocket/package.json index 32cd3f827..5d8c700fa 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -34,7 +34,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/ws": "^8.18.1", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "prettier": "^3.5.3", "typescript": "^5.8.3" } diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 5ca8343db..a4842a173 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/api/package.json b/packages/api/package.json index 647a908c0..08dbb8806 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -57,7 +57,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "prettier": "^3.5.3", "typescript": "^5.8.3" } diff --git a/packages/auth/package.json b/packages/auth/package.json index b500fb869..b5af11f83 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -48,7 +48,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/bcrypt": "5.0.2", "@types/cookies": "0.9.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "prettier": "^3.5.3", "typescript": "^5.8.3" } diff --git a/packages/boards/package.json b/packages/boards/package.json index f10205fc9..fad393c7f 100644 --- a/packages/boards/package.json +++ b/packages/boards/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/certificates/package.json b/packages/certificates/package.json index ab4f9591b..8a7d72298 100644 --- a/packages/certificates/package.json +++ b/packages/certificates/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index cca846586..b2aeb2e43 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -34,7 +34,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/common/package.json b/packages/common/package.json index 2974398f6..711d8cd52 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -40,7 +40,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/cron-job-runner/package.json b/packages/cron-job-runner/package.json index 7e49064b2..aa14dee2c 100644 --- a/packages/cron-job-runner/package.json +++ b/packages/cron-job-runner/package.json @@ -33,7 +33,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/cron-job-status/package.json b/packages/cron-job-status/package.json index c97a76572..45811f4ff 100644 --- a/packages/cron-job-status/package.json +++ b/packages/cron-job-status/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/cron-jobs-core/package.json b/packages/cron-jobs-core/package.json index f823961e8..775859e89 100644 --- a/packages/cron-jobs-core/package.json +++ b/packages/cron-jobs-core/package.json @@ -32,7 +32,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-cron": "^3.0.11", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/cron-jobs/package.json b/packages/cron-jobs/package.json index 211771c7b..ffa8b66a4 100644 --- a/packages/cron-jobs/package.json +++ b/packages/cron-jobs/package.json @@ -44,7 +44,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/db/package.json b/packages/db/package.json index 97196488d..e2dc56ee4 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -60,7 +60,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/better-sqlite3": "7.6.13", "dotenv-cli": "^8.0.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "prettier": "^3.5.3", "tsx": "4.19.3", "typescript": "^5.8.3" diff --git a/packages/definitions/package.json b/packages/definitions/package.json index 44389c44b..5a2fc91c9 100644 --- a/packages/definitions/package.json +++ b/packages/definitions/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/docker/package.json b/packages/docker/package.json index f063c1176..4e221ef34 100644 --- a/packages/docker/package.json +++ b/packages/docker/package.json @@ -32,7 +32,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/dockerode": "^3.3.38", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/env/package.json b/packages/env/package.json index b5b966d31..e10cdaf1c 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -30,7 +30,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/form/package.json b/packages/form/package.json index 7020b6bca..c8eae5406 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -33,7 +33,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/forms-collection/package.json b/packages/forms-collection/package.json index 8477aa9e4..7380de2e6 100644 --- a/packages/forms-collection/package.json +++ b/packages/forms-collection/package.json @@ -37,7 +37,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/icons/package.json b/packages/icons/package.json index ac0e7a821..44c102916 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -31,7 +31,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 5b13d839a..1533f7459 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -49,7 +49,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/xml2js": "^0.4.14", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/log/package.json b/packages/log/package.json index 0e535e380..2c6a3f495 100644 --- a/packages/log/package.json +++ b/packages/log/package.json @@ -33,7 +33,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index ed1a464a8..63a4425d1 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -45,7 +45,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/modals/package.json b/packages/modals/package.json index 1f996b639..a357dd428 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 0dbc38e45..074e27164 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -31,7 +31,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/old-import/package.json b/packages/old-import/package.json index 941a39680..d6a411d0e 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -52,7 +52,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/adm-zip": "0.5.7", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/old-schema/package.json b/packages/old-schema/package.json index bb448ab2b..fc7ae7d90 100644 --- a/packages/old-schema/package.json +++ b/packages/old-schema/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/ping/package.json b/packages/ping/package.json index 57230ec55..089c0f336 100644 --- a/packages/ping/package.json +++ b/packages/ping/package.json @@ -31,7 +31,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/redis/package.json b/packages/redis/package.json index 497a3d9b2..2cfab7d4f 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -33,7 +33,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index 918ef8a0c..468f3a561 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -38,7 +38,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/server-settings/package.json b/packages/server-settings/package.json index bdecb2b65..25de5746b 100644 --- a/packages/server-settings/package.json +++ b/packages/server-settings/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/settings/package.json b/packages/settings/package.json index a70411b32..45b1b6b43 100644 --- a/packages/settings/package.json +++ b/packages/settings/package.json @@ -34,7 +34,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 7bdfd5b0c..bd3b60b89 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -47,7 +47,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/translation/package.json b/packages/translation/package.json index b7bc0ce65..df023b089 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -41,7 +41,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/ui/package.json b/packages/ui/package.json index 5f5964fef..1ba44c77b 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -43,7 +43,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/css-modules": "^1.0.5", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/validation/package.json b/packages/validation/package.json index 6abf3ddd6..6511a7f2e 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -31,7 +31,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 6d8e23f37..f28bf0185 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -78,7 +78,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/video.js": "^7.3.58", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c53a3739d..4addc9416 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -327,8 +327,8 @@ importers: specifier: ^9.1.2 version: 9.1.2 eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 node-loader: specifier: ^2.1.0 version: 2.1.0(webpack@5.94.0) @@ -415,8 +415,8 @@ importers: specifier: ^8.0.0 version: 8.0.0 eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 prettier: specifier: ^3.5.3 version: 3.5.3 @@ -476,8 +476,8 @@ importers: specifier: ^8.18.1 version: 8.18.1 eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 prettier: specifier: ^3.5.3 version: 3.5.3 @@ -513,8 +513,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -625,8 +625,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 prettier: specifier: ^3.5.3 version: 3.5.3 @@ -707,8 +707,8 @@ importers: specifier: 0.9.0 version: 0.9.0 eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 prettier: specifier: ^3.5.3 version: 3.5.3 @@ -738,8 +738,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -763,8 +763,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -800,8 +800,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -843,8 +843,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -877,8 +877,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -899,8 +899,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -969,8 +969,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -997,8 +997,8 @@ importers: specifier: ^3.0.11 version: 3.0.11 eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1067,8 +1067,8 @@ importers: specifier: ^8.0.0 version: 8.0.0 eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 prettier: specifier: ^3.5.3 version: 3.5.3 @@ -1095,8 +1095,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1126,8 +1126,8 @@ importers: specifier: ^3.3.38 version: 3.3.38 eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1151,8 +1151,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1185,8 +1185,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1234,8 +1234,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1262,8 +1262,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1341,8 +1341,8 @@ importers: specifier: ^0.4.14 version: 0.4.14 eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1375,8 +1375,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1409,8 +1409,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1482,8 +1482,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1510,8 +1510,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1592,8 +1592,8 @@ importers: specifier: 0.5.7 version: 0.5.7 eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1617,8 +1617,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1648,8 +1648,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1685,8 +1685,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1737,8 +1737,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1762,8 +1762,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1802,8 +1802,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1878,8 +1878,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1924,8 +1924,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1985,8 +1985,8 @@ importers: specifier: ^1.0.5 version: 1.0.5 eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -2016,8 +2016,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -2182,8 +2182,8 @@ importers: specifier: ^7.3.58 version: 7.3.58 eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -2195,25 +2195,25 @@ importers: version: 15.3.1 eslint-config-prettier: specifier: ^10.1.2 - version: 10.1.2(eslint@9.25.0) + version: 10.1.2(eslint@9.25.1) eslint-config-turbo: specifier: ^2.5.0 - version: 2.5.0(eslint@9.25.0)(turbo@2.5.0) + version: 2.5.0(eslint@9.25.1)(turbo@2.5.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.30.1(eslint@9.25.0)(typescript@5.8.3))(eslint@9.25.0) + version: 2.31.0(@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@9.25.0) + version: 6.10.2(eslint@9.25.1) eslint-plugin-react: specifier: ^7.37.5 - version: 7.37.5(eslint@9.25.0) + version: 7.37.5(eslint@9.25.1) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.25.0) + version: 5.2.0(eslint@9.25.1) typescript-eslint: specifier: ^8.30.1 - version: 8.30.1(eslint@9.25.0)(typescript@5.8.3) + version: 8.30.1(eslint@9.25.1)(typescript@5.8.3) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -2222,8 +2222,8 @@ importers: specifier: workspace:^0.1.0 version: link:../typescript eslint: - specifier: ^9.25.0 - version: 9.25.0 + specifier: ^9.25.1 + version: 9.25.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -3273,8 +3273,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.25.0': - resolution: {integrity: sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==} + '@eslint/js@9.25.1': + resolution: {integrity: sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -6517,8 +6517,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.25.0: - resolution: {integrity: sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==} + eslint@9.25.1: + resolution: {integrity: sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -11357,9 +11357,9 @@ snapshots: '@esbuild/win32-x64@0.25.2': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.25.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.25.1)': dependencies: - eslint: 9.25.0 + eslint: 9.25.1 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -11392,7 +11392,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.25.0': {} + '@eslint/js@9.25.1': {} '@eslint/object-schema@2.1.6': {} @@ -13411,15 +13411,15 @@ snapshots: dependencies: '@types/node': 22.14.1 - '@typescript-eslint/eslint-plugin@8.30.1(@typescript-eslint/parser@8.30.1(eslint@9.25.0)(typescript@5.8.3))(eslint@9.25.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.30.1(@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.30.1(eslint@9.25.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.30.1(eslint@9.25.1)(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.30.1 - '@typescript-eslint/type-utils': 8.30.1(eslint@9.25.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.30.1(eslint@9.25.0)(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.30.1(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.30.1(eslint@9.25.1)(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.30.1 - eslint: 9.25.0 + eslint: 9.25.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -13428,14 +13428,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.30.1(eslint@9.25.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.30.1 '@typescript-eslint/types': 8.30.1 '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.30.1 debug: 4.4.0 - eslint: 9.25.0 + eslint: 9.25.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -13445,12 +13445,12 @@ snapshots: '@typescript-eslint/types': 8.30.1 '@typescript-eslint/visitor-keys': 8.30.1 - '@typescript-eslint/type-utils@8.30.1(eslint@9.25.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.30.1(eslint@9.25.1)(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.30.1(eslint@9.25.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.30.1(eslint@9.25.1)(typescript@5.8.3) debug: 4.4.0 - eslint: 9.25.0 + eslint: 9.25.1 ts-api-utils: 2.0.1(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -13472,13 +13472,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.30.1(eslint@9.25.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.30.1(eslint@9.25.1)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.25.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.25.1) '@typescript-eslint/scope-manager': 8.30.1 '@typescript-eslint/types': 8.30.1 '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) - eslint: 9.25.0 + eslint: 9.25.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -15220,14 +15220,14 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.2(eslint@9.25.0): + eslint-config-prettier@10.1.2(eslint@9.25.1): dependencies: - eslint: 9.25.0 + eslint: 9.25.1 - eslint-config-turbo@2.5.0(eslint@9.25.0)(turbo@2.5.0): + eslint-config-turbo@2.5.0(eslint@9.25.1)(turbo@2.5.0): dependencies: - eslint: 9.25.0 - eslint-plugin-turbo: 2.5.0(eslint@9.25.0)(turbo@2.5.0) + eslint: 9.25.1 + eslint-plugin-turbo: 2.5.0(eslint@9.25.1)(turbo@2.5.0) turbo: 2.5.0 eslint-import-resolver-node@0.3.9: @@ -15238,17 +15238,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.30.1(eslint@9.25.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.30.1(eslint@9.25.0)(typescript@5.8.3) - eslint: 9.25.0 + '@typescript-eslint/parser': 8.30.1(eslint@9.25.1)(typescript@5.8.3) + eslint: 9.25.1 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.30.1(eslint@9.25.0)(typescript@5.8.3))(eslint@9.25.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -15257,9 +15257,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.25.0 + eslint: 9.25.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.30.1(eslint@9.25.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -15271,13 +15271,13 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.30.1(eslint@9.25.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.30.1(eslint@9.25.1)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.25.0): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.25.1): dependencies: aria-query: 5.3.2 array-includes: 3.1.8 @@ -15287,7 +15287,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.25.0 + eslint: 9.25.1 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -15296,11 +15296,11 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@5.2.0(eslint@9.25.0): + eslint-plugin-react-hooks@5.2.0(eslint@9.25.1): dependencies: - eslint: 9.25.0 + eslint: 9.25.1 - eslint-plugin-react@7.37.5(eslint@9.25.0): + eslint-plugin-react@7.37.5(eslint@9.25.1): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -15308,7 +15308,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.25.0 + eslint: 9.25.1 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -15322,10 +15322,10 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.5.0(eslint@9.25.0)(turbo@2.5.0): + eslint-plugin-turbo@2.5.0(eslint@9.25.1)(turbo@2.5.0): dependencies: dotenv: 16.0.3 - eslint: 9.25.0 + eslint: 9.25.1 turbo: 2.5.0 eslint-scope@5.1.1: @@ -15342,15 +15342,15 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.25.0: + eslint@9.25.1: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.25.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.25.1) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.0 '@eslint/config-helpers': 0.2.1 '@eslint/core': 0.13.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.25.0 + '@eslint/js': 9.25.1 '@eslint/plugin-kit': 0.2.8 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -19254,12 +19254,12 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.30.1(eslint@9.25.0)(typescript@5.8.3): + typescript-eslint@8.30.1(eslint@9.25.1)(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.30.1(@typescript-eslint/parser@8.30.1(eslint@9.25.0)(typescript@5.8.3))(eslint@9.25.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.30.1(eslint@9.25.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.30.1(eslint@9.25.0)(typescript@5.8.3) - eslint: 9.25.0 + '@typescript-eslint/eslint-plugin': 8.30.1(@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.30.1(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.30.1(eslint@9.25.1)(typescript@5.8.3) + eslint: 9.25.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index aea96d7e2..d6ab4c50e 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -29,7 +29,7 @@ "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "typescript": "^5.8.3" } } From 7aa379076da24c90238dd5fe2714dbceb3b84c2a Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 16:25:09 +0000 Subject: [PATCH 14/38] fix(deps): update dependency typescript-eslint to ^8.31.0 (#2919) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 114 ++++++++++++++++++------------------ tooling/eslint/package.json | 2 +- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4addc9416..9b55c251a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2201,7 +2201,7 @@ importers: version: 2.5.0(eslint@9.25.1)(turbo@2.5.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1) + version: 2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.25.1) @@ -2212,8 +2212,8 @@ importers: specifier: ^5.2.0 version: 5.2.0(eslint@9.25.1) typescript-eslint: - specifier: ^8.30.1 - version: 8.30.1(eslint@9.25.1)(typescript@5.8.3) + specifier: ^8.31.0 + version: 8.31.0(eslint@9.25.1)(typescript@5.8.3) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -4912,51 +4912,51 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.30.1': - resolution: {integrity: sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==} + '@typescript-eslint/eslint-plugin@8.31.0': + resolution: {integrity: sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.30.1': - resolution: {integrity: sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==} + '@typescript-eslint/parser@8.31.0': + resolution: {integrity: sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.30.1': - resolution: {integrity: sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==} + '@typescript-eslint/scope-manager@8.31.0': + resolution: {integrity: sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.30.1': - resolution: {integrity: sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==} + '@typescript-eslint/type-utils@8.31.0': + resolution: {integrity: sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.30.1': - resolution: {integrity: sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==} + '@typescript-eslint/types@8.31.0': + resolution: {integrity: sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.30.1': - resolution: {integrity: sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==} + '@typescript-eslint/typescript-estree@8.31.0': + resolution: {integrity: sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.30.1': - resolution: {integrity: sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==} + '@typescript-eslint/utils@8.31.0': + resolution: {integrity: sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.30.1': - resolution: {integrity: sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==} + '@typescript-eslint/visitor-keys@8.31.0': + resolution: {integrity: sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -10028,8 +10028,8 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.30.1: - resolution: {integrity: sha512-D7lC0kcehVH7Mb26MRQi64LMyRJsj3dToJxM1+JVTl53DQSV5/7oUGWQLcKl1C1KnoVHxMMU2FNQMffr7F3Row==} + typescript-eslint@8.31.0: + resolution: {integrity: sha512-u+93F0sB0An8WEAPtwxVhFby573E8ckdjwUUQUj9QA4v8JAvgtoDdIyYR3XFwFHq2W1KJ1AurwJCO+w+Y1ixyQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -13411,14 +13411,14 @@ snapshots: dependencies: '@types/node': 22.14.1 - '@typescript-eslint/eslint-plugin@8.30.1(@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.30.1(eslint@9.25.1)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.30.1 - '@typescript-eslint/type-utils': 8.30.1(eslint@9.25.1)(typescript@5.8.3) - '@typescript-eslint/utils': 8.30.1(eslint@9.25.1)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.30.1 + '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.31.0 + '@typescript-eslint/type-utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.31.0 eslint: 9.25.1 graphemer: 1.4.0 ignore: 5.3.2 @@ -13428,27 +13428,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3)': + '@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.30.1 - '@typescript-eslint/types': 8.30.1 - '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.30.1 + '@typescript-eslint/scope-manager': 8.31.0 + '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.31.0 debug: 4.4.0 eslint: 9.25.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.30.1': + '@typescript-eslint/scope-manager@8.31.0': dependencies: - '@typescript-eslint/types': 8.30.1 - '@typescript-eslint/visitor-keys': 8.30.1 + '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/visitor-keys': 8.31.0 - '@typescript-eslint/type-utils@8.30.1(eslint@9.25.1)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.31.0(eslint@9.25.1)(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.30.1(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3) debug: 4.4.0 eslint: 9.25.1 ts-api-utils: 2.0.1(typescript@5.8.3) @@ -13456,12 +13456,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.30.1': {} + '@typescript-eslint/types@8.31.0': {} - '@typescript-eslint/typescript-estree@8.30.1(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.31.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/types': 8.30.1 - '@typescript-eslint/visitor-keys': 8.30.1 + '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/visitor-keys': 8.31.0 debug: 4.4.0 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -13472,20 +13472,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.30.1(eslint@9.25.1)(typescript@5.8.3)': + '@typescript-eslint/utils@8.31.0(eslint@9.25.1)(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.25.1) - '@typescript-eslint/scope-manager': 8.30.1 - '@typescript-eslint/types': 8.30.1 - '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.31.0 + '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3) eslint: 9.25.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.30.1': + '@typescript-eslint/visitor-keys@8.31.0': dependencies: - '@typescript-eslint/types': 8.30.1 + '@typescript-eslint/types': 8.31.0 eslint-visitor-keys: 4.2.0 '@umami/node@0.4.0': {} @@ -15238,17 +15238,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.30.1(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3) eslint: 9.25.1 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -15259,7 +15259,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.25.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -15271,7 +15271,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.30.1(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -19254,11 +19254,11 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.30.1(eslint@9.25.1)(typescript@5.8.3): + typescript-eslint@8.31.0(eslint@9.25.1)(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.30.1(@typescript-eslint/parser@8.30.1(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3) - '@typescript-eslint/parser': 8.30.1(eslint@9.25.1)(typescript@5.8.3) - '@typescript-eslint/utils': 8.30.1(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3) eslint: 9.25.1 typescript: 5.8.3 transitivePeerDependencies: diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index d6ab4c50e..ad3b6917d 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -24,7 +24,7 @@ "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", - "typescript-eslint": "^8.30.1" + "typescript-eslint": "^8.31.0" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", From 3172e6e0c4e55f62a7ee32ca84fcaa940e774565 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 16:25:51 +0000 Subject: [PATCH 15/38] fix(deps): update dependency next-intl to v4.0.3 (#2922) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/translation/package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/translation/package.json b/packages/translation/package.json index df023b089..37b45a44a 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -33,7 +33,7 @@ "deepmerge": "4.3.1", "mantine-react-table": "2.0.0-beta.9", "next": "15.3.1", - "next-intl": "4.0.2", + "next-intl": "4.0.3", "react": "19.1.0", "react-dom": "19.1.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9b55c251a..2b0d05d7f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1905,8 +1905,8 @@ importers: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) next-intl: - specifier: 4.0.2 - version: 4.0.2(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)(typescript@5.8.3) + specifier: 4.0.3 + version: 4.0.3(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)(typescript@5.8.3) react: specifier: 19.1.0 version: 19.1.0 @@ -8042,8 +8042,8 @@ packages: nodemailer: optional: true - next-intl@4.0.2: - resolution: {integrity: sha512-3cKVflwdrqxCOvAL+DtGN68qR802i0PEj0dttkAD5IK5XxOjugQs4yU8aSakvPMbkOrhEJ+89z5lG2EAqi7Gkw==} + next-intl@4.0.3: + resolution: {integrity: sha512-vw25WvRheZG6NzyXYePuhc/xrYHMhnu7cVcB49XoXaQsO4WMV0YDV6BllhRgI5Ne79hpoAQMyk/fxIKtkBVbNg==} peerDependencies: next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -10187,8 +10187,8 @@ packages: peerDependencies: react: '>=16.13' - use-intl@4.0.2: - resolution: {integrity: sha512-6RAP/5KJMRzLMLS25/BVh2u09cRK8S6HRGc1RnZvqR547qAKZCpjYylOqMPU9eNIirAiKoGmsoUPa7JrlaA/yg==} + use-intl@4.0.3: + resolution: {integrity: sha512-AeXB+5gPORJHj1BPCj0aNga0y4gpucHcqNk6B+xRSLlBt0Bz+QVtMmdtV1nvxG308rWqqkmfo6RVu9yIcZt+Hw==} peerDependencies: react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -16924,13 +16924,13 @@ snapshots: next: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: 19.1.0 - next-intl@4.0.2(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)(typescript@5.8.3): + next-intl@4.0.3(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)(typescript@5.8.3): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 next: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: 19.1.0 - use-intl: 4.0.2(react@19.1.0) + use-intl: 4.0.3(react@19.1.0) optionalDependencies: typescript: 5.8.3 @@ -19408,7 +19408,7 @@ snapshots: dequal: 2.0.3 react: 19.1.0 - use-intl@4.0.2(react@19.1.0): + use-intl@4.0.3(react@19.1.0): dependencies: '@formatjs/fast-memoize': 2.2.1 '@schummar/icu-type-parser': 1.21.5 From c51424717ddce5a2f4110658a1fbfab375185f66 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 22 Apr 2025 18:28:58 +0200 Subject: [PATCH 16/38] fix(certificates): improve validation and prevent crash (#2910) --- .../manage/tools/certificates/page.tsx | 75 +++++++++++++------ .../router/certificates/certificate-router.ts | 13 ++++ packages/certificates/src/server.ts | 2 +- packages/translation/src/lang/en.json | 4 + packages/validation/src/certificates.ts | 2 +- 5 files changed, 72 insertions(+), 24 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/manage/tools/certificates/page.tsx b/apps/nextjs/src/app/[locale]/manage/tools/certificates/page.tsx index 22c80fedf..cac4915d5 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/certificates/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/certificates/page.tsx @@ -1,7 +1,7 @@ import { X509Certificate } from "node:crypto"; import { notFound } from "next/navigation"; import { Card, Group, SimpleGrid, Stack, Text, Title } from "@mantine/core"; -import { IconCertificate, IconCertificateOff } from "@tabler/icons-react"; +import { IconAlertTriangle, IconCertificate, IconCertificateOff } from "@tabler/icons-react"; import dayjs from "dayjs"; import { auth } from "@homarr/auth/next"; @@ -31,11 +31,27 @@ export default async function CertificatesPage({ params }: CertificatesPageProps const t = await getI18n(); const certificates = await loadCustomRootCertificatesAsync(); const x509Certificates = certificates - .map((cert) => ({ - ...cert, - x509: new X509Certificate(cert.content), - })) - .sort((certA, certB) => certA.x509.validToDate.getTime() - certB.x509.validToDate.getTime()); + .map((cert) => { + try { + const x509 = new X509Certificate(cert.content); + return { + ...cert, + isError: false, + x509, + } as const; + } catch { + return { + ...cert, + isError: true, + x509: null, + } as const; + } + }) + .sort((certA, certB) => { + if (certA.isError) return -1; + if (certB.isError) return 1; + return certA.x509.validToDate.getTime() - certB.x509.validToDate.getTime(); + }); return ( <> @@ -57,32 +73,47 @@ export default async function CertificatesPage({ params }: CertificatesPageProps {x509Certificates.map((cert) => ( - + - + {cert.isError ? ( + + ) : ( + + )} - {cert.x509.subject} + {cert.isError ? t("certificate.page.list.invalid.title") : cert.x509.subject} {cert.fileName} - - {t("certificate.page.list.expires", { - when: new Intl.RelativeTimeFormat(locale).format( - dayjs(cert.x509.validToDate).diff(dayjs(), "days"), - "days", - ), - })} - + {cert.isError ? ( + + {t("certificate.page.list.invalid.description")} + + ) : ( + + {t("certificate.page.list.expires", { + when: new Intl.RelativeTimeFormat(locale).format( + dayjs(cert.x509.validToDate).diff(dayjs(), "days"), + "days", + ), + })} + + )} diff --git a/packages/api/src/router/certificates/certificate-router.ts b/packages/api/src/router/certificates/certificate-router.ts index 96d638f70..941f5f13a 100644 --- a/packages/api/src/router/certificates/certificate-router.ts +++ b/packages/api/src/router/certificates/certificate-router.ts @@ -1,3 +1,5 @@ +import { X509Certificate } from "node:crypto"; +import { TRPCError } from "@trpc/server"; import { z } from "zod"; import { zfd } from "zod-form-data"; @@ -16,6 +18,17 @@ export const certificateRouter = createTRPCRouter({ ) .mutation(async ({ input }) => { const content = await input.file.text(); + + // Validate the certificate + try { + new X509Certificate(content); + } catch { + throw new TRPCError({ + code: "BAD_REQUEST", + message: "Invalid certificate", + }); + } + await addCustomRootCertificateAsync(input.file.name, content); }), removeCertificate: permissionRequiredProcedure diff --git a/packages/certificates/src/server.ts b/packages/certificates/src/server.ts index ad332ebd2..cd8ea9551 100644 --- a/packages/certificates/src/server.ts +++ b/packages/certificates/src/server.ts @@ -29,7 +29,7 @@ export const loadCustomRootCertificatesAsync = async () => { const dirContent = await fs.readdir(folder); return await Promise.all( dirContent - .filter((file) => file.endsWith(".crt")) + .filter((file) => file.endsWith(".crt") || file.endsWith(".pem")) .map(async (file) => ({ content: await fs.readFile(path.join(folder, file), "utf8"), fileName: file, diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 8f34e8b7c..122b818ae 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -3800,6 +3800,10 @@ "noResults": { "title": "There are no certificates yet" }, + "invalid": { + "title": "Invalid certificate", + "description": "Failed to parse certificate" + }, "expires": "Expires {when}" } }, diff --git a/packages/validation/src/certificates.ts b/packages/validation/src/certificates.ts index 08a11ef11..283d03a69 100644 --- a/packages/validation/src/certificates.ts +++ b/packages/validation/src/certificates.ts @@ -24,7 +24,7 @@ export const superRefineCertificateFile = (value: File | null, context: z.Refine }); } - if (value.type !== "application/x-x509-ca-cert" && value.type !== "application/pkix-cert") { + if (!value.name.endsWith(".crt") && !value.name.endsWith(".pem")) { return context.addIssue({ code: "custom", params: createCustomErrorParams({ From f98750d0b3e96b234d6f57b82bf7aa8729a091f2 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 22 Apr 2025 18:30:46 +0200 Subject: [PATCH 17/38] feat(media-server): add option to only show playing sessions (#2899) --- .../api/src/router/widgets/media-server.ts | 15 ++++++--- .../src/jobs/integrations/media-server.ts | 2 +- .../integrations/src/emby/emby-integration.ts | 5 +-- .../src/interfaces/media-server/session.ts | 4 +++ .../src/jellyfin/jellyfin-integration.ts | 5 +-- .../integrations/src/plex/plex-integration.ts | 4 +-- packages/old-import/src/widgets/options.ts | 4 ++- packages/request-handler/src/media-server.ts | 8 +++-- packages/translation/src/lang/en.json | 7 +++- .../widgets/src/media-server/component.tsx | 33 ++++++++++++------- packages/widgets/src/media-server/index.ts | 5 ++- 11 files changed, 63 insertions(+), 29 deletions(-) diff --git a/packages/api/src/router/widgets/media-server.ts b/packages/api/src/router/widgets/media-server.ts index 8d3fe4537..50d52e594 100644 --- a/packages/api/src/router/widgets/media-server.ts +++ b/packages/api/src/router/widgets/media-server.ts @@ -1,4 +1,5 @@ import { observable } from "@trpc/server/observable"; +import { z } from "zod"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import type { StreamSession } from "@homarr/integrations"; @@ -14,10 +15,13 @@ const createMediaServerIntegrationMiddleware = (action: IntegrationAction) => export const mediaServerRouter = createTRPCRouter({ getCurrentStreams: publicProcedure .unstable_concat(createMediaServerIntegrationMiddleware("query")) - .query(async ({ ctx }) => { + .input(z.object({ showOnlyPlaying: z.boolean() })) + .query(async ({ ctx, input }) => { return await Promise.all( ctx.integrations.map(async (integration) => { - const innerHandler = mediaServerRequestHandler.handler(integration, {}); + const innerHandler = mediaServerRequestHandler.handler(integration, { + showOnlyPlaying: input.showOnlyPlaying, + }); const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); return { integrationId: integration.id, @@ -29,11 +33,14 @@ export const mediaServerRouter = createTRPCRouter({ }), subscribeToCurrentStreams: publicProcedure .unstable_concat(createMediaServerIntegrationMiddleware("query")) - .subscription(({ ctx }) => { + .input(z.object({ showOnlyPlaying: z.boolean() })) + .subscription(({ ctx, input }) => { return observable<{ integrationId: string; data: StreamSession[] }>((emit) => { const unsubscribes: (() => void)[] = []; for (const integration of ctx.integrations) { - const innerHandler = mediaServerRequestHandler.handler(integration, {}); + const innerHandler = mediaServerRequestHandler.handler(integration, { + showOnlyPlaying: input.showOnlyPlaying, + }); const unsubscribe = innerHandler.subscribe((sessions) => { emit.next({ diff --git a/packages/cron-jobs/src/jobs/integrations/media-server.ts b/packages/cron-jobs/src/jobs/integrations/media-server.ts index 3ba0324cb..099ea53ae 100644 --- a/packages/cron-jobs/src/jobs/integrations/media-server.ts +++ b/packages/cron-jobs/src/jobs/integrations/media-server.ts @@ -8,7 +8,7 @@ export const mediaServerJob = createCronJob("mediaServer", EVERY_5_SECONDS).with createRequestIntegrationJobHandler(mediaServerRequestHandler.handler, { widgetKinds: ["mediaServer"], getInput: { - mediaServer: () => ({}), + mediaServer: ({ showOnlyPlaying }) => ({ showOnlyPlaying }), }, }), ); diff --git a/packages/integrations/src/emby/emby-integration.ts b/packages/integrations/src/emby/emby-integration.ts index 911901243..7c0db54e5 100644 --- a/packages/integrations/src/emby/emby-integration.ts +++ b/packages/integrations/src/emby/emby-integration.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; import { Integration } from "../base/integration"; -import type { StreamSession } from "../interfaces/media-server/session"; +import type { CurrentSessionsInput, StreamSession } from "../interfaces/media-server/session"; import { convertJellyfinType } from "../jellyfin/jellyfin-integration"; const sessionSchema = z.object({ @@ -47,7 +47,7 @@ export class EmbyIntegration extends Integration { }); } - public async getCurrentSessionsAsync(): Promise { + public async getCurrentSessionsAsync(options: CurrentSessionsInput): Promise { const apiKey = super.getSecretValue("apiKey"); const response = await fetchWithTrustedCertificatesAsync(super.url("/emby/Sessions"), { headers: { @@ -69,6 +69,7 @@ export class EmbyIntegration extends Integration { return result.data .filter((sessionInfo) => sessionInfo.UserId !== undefined) .filter((sessionInfo) => sessionInfo.DeviceId !== EmbyIntegration.deviceId) + .filter((sessionInfo) => !options.showOnlyPlaying || sessionInfo.NowPlayingItem !== undefined) .map((sessionInfo): StreamSession => { let currentlyPlaying: StreamSession["currentlyPlaying"] | null = null; diff --git a/packages/integrations/src/interfaces/media-server/session.ts b/packages/integrations/src/interfaces/media-server/session.ts index ef58c77a6..74bdcdbca 100644 --- a/packages/integrations/src/interfaces/media-server/session.ts +++ b/packages/integrations/src/interfaces/media-server/session.ts @@ -15,3 +15,7 @@ export interface StreamSession { episodeCount?: number | null; } | null; } + +export interface CurrentSessionsInput { + showOnlyPlaying: boolean; +} diff --git a/packages/integrations/src/jellyfin/jellyfin-integration.ts b/packages/integrations/src/jellyfin/jellyfin-integration.ts index 29a90c549..95962bdcf 100644 --- a/packages/integrations/src/jellyfin/jellyfin-integration.ts +++ b/packages/integrations/src/jellyfin/jellyfin-integration.ts @@ -6,7 +6,7 @@ import { getSystemApi } from "@jellyfin/sdk/lib/utils/api/system-api"; import { createAxiosCertificateInstanceAsync } from "@homarr/certificates/server"; import { Integration } from "../base/integration"; -import type { StreamSession } from "../interfaces/media-server/session"; +import type { CurrentSessionsInput, StreamSession } from "../interfaces/media-server/session"; export class JellyfinIntegration extends Integration { private readonly jellyfin: Jellyfin = new Jellyfin({ @@ -26,7 +26,7 @@ export class JellyfinIntegration extends Integration { await systemApi.getPingSystem(); } - public async getCurrentSessionsAsync(): Promise { + public async getCurrentSessionsAsync(options: CurrentSessionsInput): Promise { const api = await this.getApiAsync(); const sessionApi = getSessionApi(api); const sessions = await sessionApi.getSessions(); @@ -38,6 +38,7 @@ export class JellyfinIntegration extends Integration { return sessions.data .filter((sessionInfo) => sessionInfo.UserId !== undefined) .filter((sessionInfo) => sessionInfo.DeviceId !== "homarr") + .filter((sessionInfo) => !options.showOnlyPlaying || sessionInfo.NowPlayingItem !== undefined) .map((sessionInfo): StreamSession => { let currentlyPlaying: StreamSession["currentlyPlaying"] | null = null; diff --git a/packages/integrations/src/plex/plex-integration.ts b/packages/integrations/src/plex/plex-integration.ts index 52d5ce189..edca5779e 100644 --- a/packages/integrations/src/plex/plex-integration.ts +++ b/packages/integrations/src/plex/plex-integration.ts @@ -5,11 +5,11 @@ import { logger } from "@homarr/log"; import { Integration } from "../base/integration"; import { IntegrationTestConnectionError } from "../base/test-connection-error"; -import type { StreamSession } from "../interfaces/media-server/session"; +import type { CurrentSessionsInput, StreamSession } from "../interfaces/media-server/session"; import type { PlexResponse } from "./interface"; export class PlexIntegration extends Integration { - public async getCurrentSessionsAsync(): Promise { + public async getCurrentSessionsAsync(_options: CurrentSessionsInput): Promise { const token = super.getSecretValue("apiKey"); const response = await fetchWithTrustedCertificatesAsync(this.url("/status/sessions"), { diff --git a/packages/old-import/src/widgets/options.ts b/packages/old-import/src/widgets/options.ts index f35306ad5..d8c9678af 100644 --- a/packages/old-import/src/widgets/options.ts +++ b/packages/old-import/src/widgets/options.ts @@ -133,7 +133,9 @@ const optionMapping: OptionMapping = { automationId: (oldOptions) => oldOptions.automationId, displayName: (oldOptions) => oldOptions.displayName, }, - mediaServer: {}, + mediaServer: { + showOnlyPlaying: () => undefined, + }, indexerManager: { openIndexerSiteInNewTab: (oldOptions) => oldOptions.openIndexerSiteInNewTab, }, diff --git a/packages/request-handler/src/media-server.ts b/packages/request-handler/src/media-server.ts index 2fadad23f..b13b90eb0 100644 --- a/packages/request-handler/src/media-server.ts +++ b/packages/request-handler/src/media-server.ts @@ -9,11 +9,13 @@ import { createCachedIntegrationRequestHandler } from "./lib/cached-integration- export const mediaServerRequestHandler = createCachedIntegrationRequestHandler< StreamSession[], IntegrationKindByCategory<"mediaService">, - Record + { + showOnlyPlaying: boolean; + } >({ - async requestAsync(integration, _input) { + async requestAsync(integration, input) { const integrationInstance = await createIntegrationAsync(integration); - return await integrationInstance.getCurrentSessionsAsync(); + return await integrationInstance.getCurrentSessionsAsync({ showOnlyPlaying: input.showOnlyPlaying }); }, cacheDuration: dayjs.duration(5, "seconds"), queryKey: "mediaServerSessions", diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 122b818ae..64cbc463f 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1766,7 +1766,12 @@ "mediaServer": { "name": "Current media server streams", "description": "Show the current streams on your media servers", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "Show only currently playing", + "description": "Disabling this will not work for plex" + } + }, "items": { "currentlyPlaying": "Currently playing", "user": "User", diff --git a/packages/widgets/src/media-server/component.tsx b/packages/widgets/src/media-server/component.tsx index 146f7915f..51c3aeea3 100644 --- a/packages/widgets/src/media-server/component.tsx +++ b/packages/widgets/src/media-server/component.tsx @@ -17,10 +17,15 @@ import { useTranslatedMantineReactTable } from "@homarr/ui/hooks"; import type { WidgetComponentProps } from "../definition"; -export default function MediaServerWidget({ integrationIds, isEditMode }: WidgetComponentProps<"mediaServer">) { +export default function MediaServerWidget({ + options, + integrationIds, + isEditMode, +}: WidgetComponentProps<"mediaServer">) { const [currentStreams] = clientApi.widget.mediaServer.getCurrentStreams.useSuspenseQuery( { integrationIds, + showOnlyPlaying: options.showOnlyPlaying, }, { refetchOnMount: false, @@ -80,21 +85,25 @@ export default function MediaServerWidget({ integrationIds, isEditMode }: Widget clientApi.widget.mediaServer.subscribeToCurrentStreams.useSubscription( { integrationIds, + showOnlyPlaying: options.showOnlyPlaying, }, { enabled: !isEditMode, onData(data) { - utils.widget.mediaServer.getCurrentStreams.setData({ integrationIds }, (previousData) => { - return previousData?.map((pair) => { - if (pair.integrationId === data.integrationId) { - return { - ...pair, - sessions: data.data, - }; - } - return pair; - }); - }); + utils.widget.mediaServer.getCurrentStreams.setData( + { integrationIds, showOnlyPlaying: options.showOnlyPlaying }, + (previousData) => { + return previousData?.map((pair) => { + if (pair.integrationId === data.integrationId) { + return { + ...pair, + sessions: data.data, + }; + } + return pair; + }); + }, + ); }, }, ); diff --git a/packages/widgets/src/media-server/index.ts b/packages/widgets/src/media-server/index.ts index c7f4aeea5..bdd6cc91c 100644 --- a/packages/widgets/src/media-server/index.ts +++ b/packages/widgets/src/media-server/index.ts @@ -1,11 +1,14 @@ import { IconVideo } from "@tabler/icons-react"; import { createWidgetDefinition } from "../definition"; +import { optionsBuilder } from "../options"; export const { componentLoader, definition } = createWidgetDefinition("mediaServer", { icon: IconVideo, createOptions() { - return {}; + return optionsBuilder.from((factory) => ({ + showOnlyPlaying: factory.switch({ defaultValue: true, withDescription: true }), + })); }, supportedIntegrations: ["jellyfin", "plex", "emby"], }).withDynamicImport(() => import("./component")); From c64d903f2b6375970325fb5031afd468dbf0ae11 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 22 Apr 2025 18:33:15 +0200 Subject: [PATCH 18/38] feat(widgets): add title to advanced options (#2909) --- .../app/[locale]/widgets/[kind]/_content.tsx | 1 + .../board/items/actions/create-item.ts | 1 + .../items/actions/test/duplicate-item.spec.ts | 2 +- .../items/actions/test/mocks/item-mock.ts | 1 + .../board/items/item-content.module.css | 12 ++++ .../components/board/items/item-content.tsx | 68 +++++++++++++------ packages/translation/src/lang/en.json | 3 + packages/validation/src/shared.ts | 1 + .../modals/widget-advanced-options-modal.tsx | 14 +++- 9 files changed, 78 insertions(+), 25 deletions(-) create mode 100644 apps/nextjs/src/components/board/items/item-content.module.css diff --git a/apps/nextjs/src/app/[locale]/widgets/[kind]/_content.tsx b/apps/nextjs/src/app/[locale]/widgets/[kind]/_content.tsx index 37ba09d52..836800fa7 100644 --- a/apps/nextjs/src/app/[locale]/widgets/[kind]/_content.tsx +++ b/apps/nextjs/src/app/[locale]/widgets/[kind]/_content.tsx @@ -48,6 +48,7 @@ export const WidgetPreviewPageContent = ({ kind, integrationData }: WidgetPrevie options: reduceWidgetOptionsWithDefaultValues(kind, settings, {}), integrationIds: [], advancedOptions: { + title: null, customCssClasses: [], borderColor: "", }, diff --git a/apps/nextjs/src/components/board/items/actions/create-item.ts b/apps/nextjs/src/components/board/items/actions/create-item.ts index 7011787ad..66476af41 100644 --- a/apps/nextjs/src/components/board/items/actions/create-item.ts +++ b/apps/nextjs/src/components/board/items/actions/create-item.ts @@ -29,6 +29,7 @@ export const createItemCallback = layouts: createItemLayouts(previous, firstSection), integrationIds: [], advancedOptions: { + title: null, customCssClasses: [], borderColor: "", }, diff --git a/apps/nextjs/src/components/board/items/actions/test/duplicate-item.spec.ts b/apps/nextjs/src/components/board/items/actions/test/duplicate-item.spec.ts index 88ccd781b..a6dce4384 100644 --- a/apps/nextjs/src/components/board/items/actions/test/duplicate-item.spec.ts +++ b/apps/nextjs/src/components/board/items/actions/test/duplicate-item.spec.ts @@ -20,7 +20,7 @@ describe("item actions duplicate-item", () => { kind: itemKind, integrationIds: ["1"], options: { address: "localhost" }, - advancedOptions: { customCssClasses: ["test"], borderColor: "#ff0000" }, + advancedOptions: { title: "The best one", customCssClasses: ["test"], borderColor: "#ff0000" }, }) .addLayout({ layoutId, sectionId: currentSectionId, ...currentItemSize }) .build(); diff --git a/apps/nextjs/src/components/board/items/actions/test/mocks/item-mock.ts b/apps/nextjs/src/components/board/items/actions/test/mocks/item-mock.ts index 71b84918e..649095a74 100644 --- a/apps/nextjs/src/components/board/items/actions/test/mocks/item-mock.ts +++ b/apps/nextjs/src/components/board/items/actions/test/mocks/item-mock.ts @@ -13,6 +13,7 @@ export class ItemMockBuilder { layouts: [], integrationIds: [], advancedOptions: { + title: null, customCssClasses: [], borderColor: "", }, diff --git a/apps/nextjs/src/components/board/items/item-content.module.css b/apps/nextjs/src/components/board/items/item-content.module.css new file mode 100644 index 000000000..f0f6ce4bc --- /dev/null +++ b/apps/nextjs/src/components/board/items/item-content.module.css @@ -0,0 +1,12 @@ +.badge { + @mixin dark { + --background-color: rgb(from var(--mantine-color-dark-6) r g b / var(--opacity)); + --border-color: rgb(from var(--mantine-color-dark-4) r g b / var(--opacity)); + } + @mixin light { + --background-color: rgb(from var(--mantine-color-white) r g b / var(--opacity)); + --border-color: rgb(from var(--mantine-color-gray-3) r g b / var(--opacity)); + } + background-color: var(--background-color) !important; + border-color: var(--border-color) !important; +} diff --git a/apps/nextjs/src/components/board/items/item-content.tsx b/apps/nextjs/src/components/board/items/item-content.tsx index 709d52182..9003bfacc 100644 --- a/apps/nextjs/src/components/board/items/item-content.tsx +++ b/apps/nextjs/src/components/board/items/item-content.tsx @@ -1,4 +1,4 @@ -import { Card } from "@mantine/core"; +import { Badge, Card } from "@mantine/core"; import { useElementSize } from "@mantine/hooks"; import { QueryErrorResetBoundary } from "@tanstack/react-query"; import combineClasses from "clsx"; @@ -14,6 +14,7 @@ import { WidgetError } from "@homarr/widgets/errors"; import type { SectionItem } from "~/app/[locale]/boards/_types"; import classes from "../sections/item.module.css"; import { useItemActions } from "./item-actions"; +import itemContentClasses from "./item-content.module.css"; import { BoardItemMenu } from "./item-menu"; interface BoardItemContentProps { @@ -25,28 +26,51 @@ export const BoardItemContent = ({ item }: BoardItemContentProps) => { const board = useRequiredBoard(); return ( - + + + + {item.advancedOptions.title?.trim() && ( + + {item.advancedOptions.title} + )} - radius={board.itemRadius} - withBorder - styles={{ - root: { - "--opacity": board.opacity / 100, - containerType: "size", - overflow: item.kind === "iframe" ? "hidden" : undefined, - "--border-color": item.advancedOptions.borderColor !== "" ? item.advancedOptions.borderColor : undefined, - }, - }} - p={0} - > - - + ); }; diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 64cbc463f..eb85cecca 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Integrations" }, + "title": { + "label": "Title" + }, "customCssClasses": { "label": "Custom css classes" }, diff --git a/packages/validation/src/shared.ts b/packages/validation/src/shared.ts index ddf7c30ea..c6da17448 100644 --- a/packages/validation/src/shared.ts +++ b/packages/validation/src/shared.ts @@ -14,6 +14,7 @@ export const integrationSchema = z.object({ export type BoardItemIntegration = z.infer; export const itemAdvancedOptionsSchema = z.object({ + title: z.string().max(64).nullable().default(null), customCssClasses: z.array(z.string()).default([]), borderColor: z.string().default(""), }); diff --git a/packages/widgets/src/modals/widget-advanced-options-modal.tsx b/packages/widgets/src/modals/widget-advanced-options-modal.tsx index 1c2996926..dc785d186 100644 --- a/packages/widgets/src/modals/widget-advanced-options-modal.tsx +++ b/packages/widgets/src/modals/widget-advanced-options-modal.tsx @@ -1,6 +1,6 @@ "use client"; -import { Button, CloseButton, ColorInput, Group, Stack, useMantineTheme } from "@mantine/core"; +import { Button, CloseButton, ColorInput, Group, Input, Stack, TextInput, useMantineTheme } from "@mantine/core"; import { useForm } from "@homarr/form"; import { createModal } from "@homarr/modals"; @@ -20,13 +20,23 @@ export const WidgetAdvancedOptionsModal = createModal(({ actions, in initialValues: innerProps.advancedOptions, }); const handleSubmit = (values: BoardItemAdvancedOptions) => { - innerProps.onSuccess(values); + innerProps.onSuccess({ + ...values, + // we want to fallback to null if the title is empty + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + title: values.title?.trim() || null, + }); actions.closeModal(); }; return (
+ form.setFieldValue("title", "")} />} + /> Date: Wed, 23 Apr 2025 00:50:32 +0000 Subject: [PATCH 19/38] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/ca.json | 10 +++++++++- packages/translation/src/lang/cn.json | 10 +++++++++- packages/translation/src/lang/cs.json | 10 +++++++++- packages/translation/src/lang/da.json | 10 +++++++++- packages/translation/src/lang/de-CH.json | 10 +++++++++- packages/translation/src/lang/de.json | 10 +++++++++- packages/translation/src/lang/el.json | 10 +++++++++- packages/translation/src/lang/en-gb.json | 10 +++++++++- packages/translation/src/lang/es.json | 10 +++++++++- packages/translation/src/lang/et.json | 10 +++++++++- packages/translation/src/lang/fr.json | 10 +++++++++- packages/translation/src/lang/he.json | 10 +++++++++- packages/translation/src/lang/hr.json | 10 +++++++++- packages/translation/src/lang/hu.json | 10 +++++++++- packages/translation/src/lang/it.json | 10 +++++++++- packages/translation/src/lang/ja.json | 10 +++++++++- packages/translation/src/lang/ko.json | 10 +++++++++- packages/translation/src/lang/lt.json | 10 +++++++++- packages/translation/src/lang/lv.json | 10 +++++++++- packages/translation/src/lang/nl.json | 10 +++++++++- packages/translation/src/lang/no.json | 10 +++++++++- packages/translation/src/lang/pl.json | 10 +++++++++- packages/translation/src/lang/pt.json | 10 +++++++++- packages/translation/src/lang/ro.json | 10 +++++++++- packages/translation/src/lang/ru.json | 10 +++++++++- packages/translation/src/lang/sk.json | 10 +++++++++- packages/translation/src/lang/sl.json | 10 +++++++++- packages/translation/src/lang/sv.json | 10 +++++++++- packages/translation/src/lang/tr.json | 14 +++++++++++--- packages/translation/src/lang/uk.json | 10 +++++++++- packages/translation/src/lang/vi.json | 10 +++++++++- packages/translation/src/lang/zh.json | 10 +++++++++- 32 files changed, 290 insertions(+), 34 deletions(-) diff --git a/packages/translation/src/lang/ca.json b/packages/translation/src/lang/ca.json index 2f28c16a6..7d9f7580a 100644 --- a/packages/translation/src/lang/ca.json +++ b/packages/translation/src/lang/ca.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index 5514577e7..bc8ba6ace 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "集成" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "自定义 CSS 类" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "当前媒体服务流", "description": "显示媒体服务器上的当前流", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "正在播放", "user": "用户", diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index d465b58b5..db4a25fd5 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "Uživatel", diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index 386093864..c96b2a08d 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Integrationer" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Brugerdefinerede CSS-klasser" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "Aktuelle medieserver streams", "description": "Vis de aktuelle streams på dine medieservere", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "Afspiller lige nu", "user": "Bruger", diff --git a/packages/translation/src/lang/de-CH.json b/packages/translation/src/lang/de-CH.json index 659f4e167..760e04f17 100644 --- a/packages/translation/src/lang/de-CH.json +++ b/packages/translation/src/lang/de-CH.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Integrationen" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Benutzerdefinierte CSS Klassen" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "Aktuelle Media Server Streams", "description": "Zeige die aktuellen Streams auf deinen Medienservern an", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "Aktuelle Wiedergabe", "user": "Benutzer", diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index e058e2e97..77d689609 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Integrationen" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Benutzerdefinierte CSS Klassen" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "Aktuelle Media Server Streams", "description": "Zeige die aktuellen Streams auf deinen Medienservern an", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "Aktuelle Wiedergabe", "user": "Benutzer", diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index 4b590151b..a669d1695 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/en-gb.json b/packages/translation/src/lang/en-gb.json index d83f895ff..ed3b9ca73 100644 --- a/packages/translation/src/lang/en-gb.json +++ b/packages/translation/src/lang/en-gb.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index 28288db1d..41d577402 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index d198136c5..3400b66a7 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 7d94d52bf..b86a7a3a1 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Intégrations" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Classes CSS personnalisées" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "Flux du serveur multimédia actuel", "description": "Afficher les flux en cours sur vos serveurs de multimédia", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "En cours de lecture", "user": "Utilisateur", diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index ab9f778fd..83da25e81 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "אינטגרציות" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "מחלקות עיצוב מותאמות אישית" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "זרמי שרת מדיה נוכחיים", "description": "הצג את הזרמים הנוכחיים בשרתי המדיה שלך", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "מתנגן כרגע", "user": "משתמש", diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index 7c7b0921e..92b483872 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 6a97c9e4d..fb216d25a 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Integrációk" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Egyedi css osztályok" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index 3619cf27d..9201e479b 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Integrazioni" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index e19b35bb2..ae1e5f1c9 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index 117d9ec62..c4d8e8bf4 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index 66aa74d1d..93a77f9c8 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index bf576972a..2c094cf54 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index 453999202..e24a2aeee 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Integraties" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Aangepaste CSS-classes" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "Huidige mediaserver streams", "description": "De huidige streams op je mediaservers weergeven", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "Momenteel aan het afspelen", "user": "Gebruiker", diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index fcbfba6a9..3f4116748 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Integrasjoner" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Egendefinerte css-klasser" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "Pågående medieserver-strømmer", "description": "Vis pågående strømmer på dine media-servere", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "Spilles nå", "user": "Bruker", diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 3acf19e5a..05e158002 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Integracje" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Niestandardowe klasy CSS" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "Bieżące strumienie serwera multimediów", "description": "Pokaż bieżące strumienie na serwerach multimedialnych", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "Użytkownik", diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index e38e9c4b6..18e9bfee4 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index 3d7f3892a..5e814a3ec 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index a598800c2..b96fe83b5 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Интеграции" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Пользовательские CSS классы" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "Активные просмотры", "description": "Отображает текущие сеансы воспроизведения на медиасерверах", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "Пользователь", diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 1152bbd42..410df7994 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Integrácie" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Vlastné css triedy" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "Aktuálne streamy mediálneho servera", "description": "Zobrazte aktuálne streamy na vašich mediálnych serveroch", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "Používateľ", diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index cbf70dde5..d29b4854a 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index 2eea94823..fe5e2f78a 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Integrationer" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Egna CSS-klasser" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index ab7abfa8c..b2504dee8 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Entegrasyonlar" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Özel CSS Alanı" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "Güncel Medya Sunucusu Akışları", "description": "Medya sunucularınızdaki mevcut akışları gösterin", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "Şuan Oynatılan", "user": "Kullanıcı", @@ -3801,8 +3809,8 @@ "title": "Henüz sertifika yok" }, "invalid": { - "title": "", - "description": "" + "title": "Geçersiz sertifika", + "description": "Sertifika ayrıştırılamadı" }, "expires": "{when} süresi doluyor" } diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index 7288d8be4..56080b880 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "Інтеграції" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "Користувацькі css класи" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "Поточні потоки медіасервера", "description": "Показує поточні потоки з ваших медіасерверів", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "Користувач", diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index f31a32ee3..c8e515621 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "", "description": "", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "", "user": "", diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index dea381467..73fe653a9 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -1092,6 +1092,9 @@ "integrations": { "label": "集成" }, + "title": { + "label": "" + }, "customCssClasses": { "label": "自定義 CSS html" }, @@ -1766,7 +1769,12 @@ "mediaServer": { "name": "當前多媒體伺服器串流", "description": "顯示當前多媒體伺服器的串流", - "option": {}, + "option": { + "showOnlyPlaying": { + "label": "", + "description": "" + } + }, "items": { "currentlyPlaying": "目前播放中", "user": "使用者", From bd3535dcf84569b87cf647bc5e0b957667b7e199 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 01:13:29 +0000 Subject: [PATCH 20/38] fix(deps): update trpc monorepo to ^11.1.1 (#2927) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 8 ++-- packages/api/package.json | 6 +-- pnpm-lock.yaml | 82 +++++++++++++++++++-------------------- 3 files changed, 48 insertions(+), 48 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index fe63c37b3..ef83ca4aa 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -59,10 +59,10 @@ "@tanstack/react-query": "^5.74.4", "@tanstack/react-query-devtools": "^5.74.4", "@tanstack/react-query-next-experimental": "^5.74.4", - "@trpc/client": "^11.1.0", - "@trpc/next": "^11.1.0", - "@trpc/react-query": "^11.1.0", - "@trpc/server": "^11.1.0", + "@trpc/client": "^11.1.1", + "@trpc/next": "^11.1.1", + "@trpc/react-query": "^11.1.1", + "@trpc/server": "^11.1.1", "@xterm/addon-canvas": "^0.7.0", "@xterm/addon-fit": "0.10.0", "@xterm/xterm": "^5.5.0", diff --git a/packages/api/package.json b/packages/api/package.json index 08dbb8806..946028ffc 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -41,9 +41,9 @@ "@homarr/server-settings": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@kubernetes/client-node": "^1.1.2", - "@trpc/client": "^11.1.0", - "@trpc/react-query": "^11.1.0", - "@trpc/server": "^11.1.0", + "@trpc/client": "^11.1.1", + "@trpc/react-query": "^11.1.1", + "@trpc/server": "^11.1.1", "lodash.clonedeep": "^4.5.0", "next": "15.3.1", "pretty-print-error": "^1.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2b0d05d7f..e0b04acd5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -215,17 +215,17 @@ importers: specifier: ^5.74.4 version: 5.74.4(@tanstack/react-query@5.74.4(react@19.1.0))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0) '@trpc/client': - specifier: ^11.1.0 - version: 11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3) + specifier: ^11.1.1 + version: 11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3) '@trpc/next': - specifier: ^11.1.0 - version: 11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + specifier: ^11.1.1 + version: 11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@trpc/react-query': - specifier: ^11.1.0 - version: 11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + specifier: ^11.1.1 + version: 11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@trpc/server': - specifier: ^11.1.0 - version: 11.1.0(typescript@5.8.3) + specifier: ^11.1.1 + version: 11.1.1(typescript@5.8.3) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -582,14 +582,14 @@ importers: specifier: ^1.1.2 version: 1.1.2 '@trpc/client': - specifier: ^11.1.0 - version: 11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3) + specifier: ^11.1.1 + version: 11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3) '@trpc/react-query': - specifier: ^11.1.0 - version: 11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + specifier: ^11.1.1 + version: 11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@trpc/server': - specifier: ^11.1.0 - version: 11.1.0(typescript@5.8.3) + specifier: ^11.1.1 + version: 11.1.1(typescript@5.8.3) lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 @@ -610,7 +610,7 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^2.2.0 - version: 2.2.0(@trpc/server@11.1.0(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3) + version: 2.2.0(@trpc/server@11.1.1(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3) zod: specifier: ^3.24.3 version: 3.24.3 @@ -4627,19 +4627,19 @@ packages: tree-sitter: optional: true - '@trpc/client@11.1.0': - resolution: {integrity: sha512-Q3pL4p7AddxI/ZJTEFo1utKSdasDFjZPECIPsKDkthEt52k530JkYVltTdLkYFKrNWXKKBo8MN7NwchelczoRw==} + '@trpc/client@11.1.1': + resolution: {integrity: sha512-Beiv56hlt+ARbijtUsCQOvKJw/FkfuVk4W9TzJl285iIJw8iCA3ZTwTG9GjIeSgeR7d2MyOeUbI26LV255n33A==} peerDependencies: - '@trpc/server': 11.1.0 + '@trpc/server': 11.1.1 typescript: '>=5.7.2' - '@trpc/next@11.1.0': - resolution: {integrity: sha512-P8/qpfvRs7IIDdFBrcyMfxXumgf5p7K+dig6NpxpNYs4bqVJfBnAbATYEplmLhw/Dcksqo5ZoI0+0A19wLm8Ug==} + '@trpc/next@11.1.1': + resolution: {integrity: sha512-4uz4S+QtpVGPENm4Kp7HSvMW+nXocBvI+A+dkwVvM3R9MIU3lIQ35H1fQ1aN/O+PlR4LOs5FceCwC1LjWkScZQ==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.1.0 - '@trpc/react-query': 11.1.0 - '@trpc/server': 11.1.0 + '@trpc/client': 11.1.1 + '@trpc/react-query': 11.1.1 + '@trpc/server': 11.1.1 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' @@ -4650,18 +4650,18 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.1.0': - resolution: {integrity: sha512-qdqKdFM8hVy/YSBCg1/3VO+IgB6Nbul3Fk1SA3lefGf0bkYZdWVVyKab8HBAfOWlMsuRufhVLPdKYmnjzBrK9g==} + '@trpc/react-query@11.1.1': + resolution: {integrity: sha512-TzKwTBsohUS23vusIIYJpFVp1p1rjEryTv9YCRnHtR6oDxR7W0aLh/TYyQ4chAhQ9edmdhVKeUetAQpF5HvUTA==} peerDependencies: '@tanstack/react-query': ^5.67.1 - '@trpc/client': 11.1.0 - '@trpc/server': 11.1.0 + '@trpc/client': 11.1.1 + '@trpc/server': 11.1.1 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@trpc/server@11.1.0': - resolution: {integrity: sha512-uAJ7ikejeujVkf53XFJ/0W8nr7bDjul+Szk5Rsepq97Hb/WS1RkRXdyX4KqAyCE9b1vDFCJVJwSxiIZdRtbTZQ==} + '@trpc/server@11.1.1': + resolution: {integrity: sha512-ZjPN3ypBHvGMAlMgeZPrxlRcH/3dn4AK0s5Ph1z+E6uiAvIQVCj7ZoMlXeeBsIy4THGDAk953jHVW2kMnlbb4g==} peerDependencies: typescript: '>=5.7.2' @@ -13081,33 +13081,33 @@ snapshots: tree-sitter: 0.22.1 optional: true - '@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3)': + '@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3)': dependencies: - '@trpc/server': 11.1.0(typescript@5.8.3) + '@trpc/server': 11.1.1(typescript@5.8.3) typescript: 5.8.3 - '@trpc/next@11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': + '@trpc/next@11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': dependencies: - '@trpc/client': 11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3) - '@trpc/server': 11.1.0(typescript@5.8.3) + '@trpc/client': 11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3) + '@trpc/server': 11.1.1(typescript@5.8.3) next: 15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) typescript: 5.8.3 optionalDependencies: '@tanstack/react-query': 5.74.4(react@19.1.0) - '@trpc/react-query': 11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + '@trpc/react-query': 11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) - '@trpc/react-query@11.1.0(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.0(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': + '@trpc/react-query@11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': dependencies: '@tanstack/react-query': 5.74.4(react@19.1.0) - '@trpc/client': 11.1.0(@trpc/server@11.1.0(typescript@5.8.3))(typescript@5.8.3) - '@trpc/server': 11.1.0(typescript@5.8.3) + '@trpc/client': 11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3) + '@trpc/server': 11.1.1(typescript@5.8.3) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) typescript: 5.8.3 - '@trpc/server@11.1.0(typescript@5.8.3)': + '@trpc/server@11.1.1(typescript@5.8.3)': dependencies: typescript: 5.8.3 @@ -19052,9 +19052,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.2.0(@trpc/server@11.1.0(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3): + trpc-to-openapi@2.2.0(@trpc/server@11.1.1(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3): dependencies: - '@trpc/server': 11.1.0(typescript@5.8.3) + '@trpc/server': 11.1.1(typescript@5.8.3) co-body: 6.2.0 h3: 1.15.1 openapi3-ts: 4.4.0 From e01b909402e5def3cd48e4f3e89a2166f4872d10 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 08:27:13 +0000 Subject: [PATCH 21/38] chore(deps): update node.js to v22.15.0 (#2928) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- .nvmrc | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.nvmrc b/.nvmrc index 7d41c735d..b8ffd7075 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.14.0 +22.15.0 diff --git a/package.json b/package.json index 57531fd60..f7ecef791 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ }, "packageManager": "pnpm@10.9.0", "engines": { - "node": ">=22.14.0" + "node": ">=22.15.0" }, "pnpm": { "onlyBuiltDependencies": [ From 573d5f89d6576020c3a4393372a56f8f75628e58 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 16:24:21 +0000 Subject: [PATCH 22/38] fix(deps): update dependency glob to ^11.0.2 (#2931) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index ef83ca4aa..dc37d6b82 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -71,7 +71,7 @@ "dayjs": "^1.11.13", "dotenv": "^16.5.0", "flag-icons": "^7.3.2", - "glob": "^11.0.1", + "glob": "^11.0.2", "jotai": "^2.12.3", "mantine-react-table": "2.0.0-beta.9", "next": "15.3.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e0b04acd5..a7610acb7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -251,8 +251,8 @@ importers: specifier: ^7.3.2 version: 7.3.2 glob: - specifier: ^11.0.1 - version: 11.0.1 + specifier: ^11.0.2 + version: 11.0.2 jotai: specifier: ^2.12.3 version: 2.12.3(@types/react@19.1.2)(react@19.1.0) @@ -6907,8 +6907,8 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@11.0.1: - resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} + glob@11.0.2: + resolution: {integrity: sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==} engines: {node: 20 || >=22} hasBin: true @@ -15799,7 +15799,7 @@ snapshots: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 - glob@11.0.1: + glob@11.0.2: dependencies: foreground-child: 3.3.0 jackspeak: 4.0.1 From 1421c381cc3e02dec4f0d4f36aecb4782c121074 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 20:22:21 +0200 Subject: [PATCH 23/38] chore(deps): update node.js to v22.15.0 (#2932) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7dcce1216..592a6d5cf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.14.0-alpine AS base +FROM node:22.15.0-alpine AS base FROM base AS builder RUN apk add --no-cache libc6-compat From eb95ee285b727a8bda7ac9df3f75c25ced475358 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 22:22:00 +0000 Subject: [PATCH 24/38] fix(deps): update dependency @t3-oss/env-nextjs to ^0.13.0 (#2935) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/env/package.json | 2 +- pnpm-lock.yaml | 47 ++++++++++++++++++++++++++++++--------- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/packages/env/package.json b/packages/env/package.json index e10cdaf1c..26653a7cd 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -23,7 +23,7 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@t3-oss/env-nextjs": "^0.12.0", + "@t3-oss/env-nextjs": "^0.13.0", "zod": "^3.24.3" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a7610acb7..dd9c8abd6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1135,8 +1135,8 @@ importers: packages/env: dependencies: '@t3-oss/env-nextjs': - specifier: ^0.12.0 - version: 0.12.0(typescript@5.8.3)(zod@3.24.3) + specifier: ^0.13.0 + version: 0.13.0(arktype@2.1.20)(typescript@5.8.3)(zod@3.24.3) zod: specifier: ^3.24.3 version: 3.24.3 @@ -2261,6 +2261,12 @@ packages: resolution: {integrity: sha512-2aDL3WUv8hMJb2L3r/PIQWsTLyq7RQr3v9xD16fiz6O8ys1xEyLhhTOv8gxtZvJiTzjTF5pHoArvRdesGL1DMQ==} hasBin: true + '@ark/schema@0.46.0': + resolution: {integrity: sha512-c2UQdKgP2eqqDArfBqQIJppxJHvNNXuQPeuSPlDML4rjw+f1cu0qAlzOG4b8ujgm9ctIDWwhpyw6gjG5ledIVQ==} + + '@ark/util@0.46.0': + resolution: {integrity: sha512-JPy/NGWn/lvf1WmGCPw2VGpBg5utZraE84I7wli18EDF3p3zc/e9WolT35tINeZO3l7C77SjqRJeAUoT0CvMRg==} + '@asamuzakjp/css-color@2.8.2': resolution: {integrity: sha512-RtWv9jFN2/bLExuZgFFZ0I3pWWeezAHGgrmjqGGWclATl1aDe3yhCUaI0Ilkp6OCk9zX7+FjvDasEX8Q9Rxc5w==} @@ -4334,12 +4340,13 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@t3-oss/env-core@0.12.0': - resolution: {integrity: sha512-lOPj8d9nJJTt81mMuN9GMk8x5veOt7q9m11OSnCBJhwp1QrL/qR+M8Y467ULBSm9SunosryWNbmQQbgoiMgcdw==} + '@t3-oss/env-core@0.13.0': + resolution: {integrity: sha512-bV7LAvwoeyigLXyjBnlgbKb8S9l+E29uSzWtU1GJYuKMQ6qF9dvFbjakkgoxR+tXFoxg7aGbg8DdEfwNihvF8Q==} peerDependencies: + arktype: ^2.1.0 typescript: '>=5.0.0' valibot: ^1.0.0-beta.7 || ^1.0.0 - zod: ^3.24.0 + zod: ^3.24.0 || ^4.0.0-beta.0 peerDependenciesMeta: typescript: optional: true @@ -4348,12 +4355,12 @@ packages: zod: optional: true - '@t3-oss/env-nextjs@0.12.0': - resolution: {integrity: sha512-rFnvYk1049RnNVUPvY8iQ55AuQh1Rr+qZzQBh3t++RttCGK4COpXGNxS4+45afuQq02lu+QAOy/5955aU8hRKw==} + '@t3-oss/env-nextjs@0.13.0': + resolution: {integrity: sha512-l+3H7w1rezfPhnfi5DPKeoLaMhsG8Os2WtoSA1Sq/+X+szccidazNmTAGKjp4v03IuUz4bsxYvU9DzQAX7atkg==} peerDependencies: typescript: '>=5.0.0' valibot: ^1.0.0-beta.7 || ^1.0.0 - zod: ^3.24.0 + zod: ^3.24.0 || ^4.0.0-beta.0 peerDependenciesMeta: typescript: optional: true @@ -5254,6 +5261,9 @@ packages: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} + arktype@2.1.20: + resolution: {integrity: sha512-IZCEEXaJ8g+Ijd59WtSYwtjnqXiwM8sWQ5EjGamcto7+HVN9eK0C4p0zDlCuAwWhpqr6fIBkxPuYDl4/Mcj/+Q==} + array-buffer-byte-length@1.0.1: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} @@ -10626,6 +10636,12 @@ snapshots: '@antfu/ni@0.21.12': {} + '@ark/schema@0.46.0': + dependencies: + '@ark/util': 0.46.0 + + '@ark/util@0.46.0': {} + '@asamuzakjp/css-color@2.8.2': dependencies: '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) @@ -12797,17 +12813,21 @@ snapshots: dependencies: tslib: 2.8.1 - '@t3-oss/env-core@0.12.0(typescript@5.8.3)(zod@3.24.3)': + '@t3-oss/env-core@0.13.0(arktype@2.1.20)(typescript@5.8.3)(zod@3.24.3)': + dependencies: + arktype: 2.1.20 optionalDependencies: typescript: 5.8.3 zod: 3.24.3 - '@t3-oss/env-nextjs@0.12.0(typescript@5.8.3)(zod@3.24.3)': + '@t3-oss/env-nextjs@0.13.0(arktype@2.1.20)(typescript@5.8.3)(zod@3.24.3)': dependencies: - '@t3-oss/env-core': 0.12.0(typescript@5.8.3)(zod@3.24.3) + '@t3-oss/env-core': 0.13.0(arktype@2.1.20)(typescript@5.8.3)(zod@3.24.3) optionalDependencies: typescript: 5.8.3 zod: 3.24.3 + transitivePeerDependencies: + - arktype '@tabler/icons-react@3.31.0(react@19.1.0)': dependencies: @@ -13848,6 +13868,11 @@ snapshots: aria-query@5.3.2: {} + arktype@2.1.20: + dependencies: + '@ark/schema': 0.46.0 + '@ark/util': 0.46.0 + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.8 From 7766c3cbbc1187f6c38157fe15182c8b7d329acf Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 23:21:49 +0000 Subject: [PATCH 25/38] fix(deps): update turbo monorepo to ^2.5.1 (#2934) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 4 +- pnpm-lock.yaml | 98 ++++++++++++++++++------------------- tooling/eslint/package.json | 2 +- 3 files changed, 52 insertions(+), 52 deletions(-) diff --git a/package.json b/package.json index f7ecef791..93affedcc 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@semantic-release/github": "^11.0.1", "@semantic-release/npm": "^12.0.1", "@semantic-release/release-notes-generator": "^14.0.3", - "@turbo/gen": "^2.5.0", + "@turbo/gen": "^2.5.1", "@vitejs/plugin-react": "^4.4.1", "@vitest/coverage-v8": "^3.1.2", "@vitest/ui": "^3.1.2", @@ -48,7 +48,7 @@ "prettier": "^3.5.3", "semantic-release": "^24.2.3", "testcontainers": "^10.24.2", - "turbo": "^2.5.0", + "turbo": "^2.5.1", "typescript": "^5.8.3", "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.1.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dd9c8abd6..08e0e0b2b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,8 +38,8 @@ importers: specifier: ^14.0.3 version: 14.0.3(semantic-release@24.2.3(typescript@5.8.3)) '@turbo/gen': - specifier: ^2.5.0 - version: 2.5.0(@types/node@22.14.1)(typescript@5.8.3) + specifier: ^2.5.1 + version: 2.5.1(@types/node@22.14.1)(typescript@5.8.3) '@vitejs/plugin-react': specifier: ^4.4.1 version: 4.4.1(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) @@ -68,8 +68,8 @@ importers: specifier: ^10.24.2 version: 10.24.2 turbo: - specifier: ^2.5.0 - version: 2.5.0 + specifier: ^2.5.1 + version: 2.5.1 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -2197,8 +2197,8 @@ importers: specifier: ^10.1.2 version: 10.1.2(eslint@9.25.1) eslint-config-turbo: - specifier: ^2.5.0 - version: 2.5.0(eslint@9.25.1)(turbo@2.5.0) + specifier: ^2.5.1 + version: 2.5.1(eslint@9.25.1)(turbo@2.5.1) eslint-plugin-import: specifier: ^2.31.0 version: 2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1) @@ -4687,12 +4687,12 @@ packages: '@tsconfig/svelte@1.0.13': resolution: {integrity: sha512-5lYJP45Xllo4yE/RUBccBT32eBlRDbqN8r1/MIvQbKxW3aFqaYPCNgm8D5V20X4ShHcwvYWNlKg3liDh1MlBoA==} - '@turbo/gen@2.5.0': - resolution: {integrity: sha512-03vzgbv01lzadCCMaEUgXyqGhZuHaI+Umsrjisiyi81oCJF/HygxgHR0FBf21dVssSiEa2opmzcp4RHQmIz0Wg==} + '@turbo/gen@2.5.1': + resolution: {integrity: sha512-d6fSO1bhSVwUVHBMoDFbyorPiKt8pz3X4OS7c+GDL+D5CPJ21dTFvwdLdEgPe7iUnyARY1Nf5ZnP/v47bZlvvw==} hasBin: true - '@turbo/workspaces@2.5.0': - resolution: {integrity: sha512-u/IOgWVJ6orFG0MDJ8UeIEOWjhfEBsMskhxC8pg2nRlu1qbEAGIerjhZFk+bEqSTHW1o+fxYr8ix0KEtX4M9Vg==} + '@turbo/workspaces@2.5.1': + resolution: {integrity: sha512-xmNbkxC1GEIOmwye6lCQG0g+YhDb2KV3K4KtIn4OtszorCnz8pOxRU6s7UHJs7LezUZ8htWMOJwEFv1MT/9DPw==} hasBin: true '@types/adm-zip@0.5.7': @@ -6447,8 +6447,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-config-turbo@2.5.0: - resolution: {integrity: sha512-QJvZBEWDWQx1JyQCr0uwf4aQYhDSAGoHBdx+cPtpPzNEjZw16Ig8BglXxHZBh3I8/fI1U53cLgXwvb28BUZhPA==} + eslint-config-turbo@2.5.1: + resolution: {integrity: sha512-p1K3KxDMdkhcbVsvFvWoB7WK8oFaR0+Bf1eTmT+B1rQp4b2GmRk48r2w2HHhtbmmpfUsXFRpBZV5ZvGtE8+jmQ==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -6505,8 +6505,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-turbo@2.5.0: - resolution: {integrity: sha512-qQk54MrUZv0gnpxV23sccTc+FL3UJ8q7vG7HmXuS2RP8gdjWDwI1CCJTJD8EdRIDjsMxF0xi0AKcMY0CwIlXVg==} + eslint-plugin-turbo@2.5.1: + resolution: {integrity: sha512-liyy40BXnlQP37EX9Z03gqUeH8X8GetqDcOG6EhNqnFktJT3fq+XTLvWzhU+s62JFS5/Njcpm3QTOY9VjD4yAQ==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -9927,38 +9927,38 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - turbo-darwin-64@2.5.0: - resolution: {integrity: sha512-fP1hhI9zY8hv0idym3hAaXdPi80TLovmGmgZFocVAykFtOxF+GlfIgM/l4iLAV9ObIO4SUXPVWHeBZQQ+Hpjag==} + turbo-darwin-64@2.5.1: + resolution: {integrity: sha512-U9lT1rZ20PQjEYDiNE0aZrU6K+StAE8rood9xn3pV1w+CSby56HkdR2AffzMdFf8iPTeZfcY1qL62rDcCeRPTw==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.5.0: - resolution: {integrity: sha512-p9sYq7kXH7qeJwIQE86cOWv/xNqvow846l6c/qWc26Ib1ci5W7V0sI5thsrP3eH+VA0d+SHalTKg5SQXgNQBWA==} + turbo-darwin-arm64@2.5.1: + resolution: {integrity: sha512-1Mp0LeP9JENqHnurGNyD557sndPt2BYUbgzUX87tYIdu/26dHyqlobiRzPpEfkOGB/sV4exhJUJGXB1h72szLQ==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.5.0: - resolution: {integrity: sha512-1iEln2GWiF3iPPPS1HQJT6ZCFXynJPd89gs9SkggH2EJsj3eRUSVMmMC8y6d7bBbhBFsiGGazwFIYrI12zs6uQ==} + turbo-linux-64@2.5.1: + resolution: {integrity: sha512-Cl2yKumJQAlNG5UA7vjCU6SPBLrcKaGhOjTaUjGHeD9WLL8vh4FwOlhOD2wk7zCUlhpJaM73WHY+oOZGMqmzOg==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.5.0: - resolution: {integrity: sha512-bKBcbvuQHmsX116KcxHJuAcppiiBOfivOObh2O5aXNER6mce7YDDQJy00xQQNp1DhEfcSV2uOsvb3O3nN2cbcA==} + turbo-linux-arm64@2.5.1: + resolution: {integrity: sha512-OFpb/9YZJG8v3nttD4K5dxW3bwsZp++oxAykpYsPhp552EX6r+dJrt2dzX3C0azls2JLf/UzTpA83fRoM8mC4g==} cpu: [arm64] os: [linux] - turbo-windows-64@2.5.0: - resolution: {integrity: sha512-9BCo8oQ7BO7J0K913Czbc3tw8QwLqn2nTe4E47k6aVYkM12ASTScweXPTuaPFP5iYXAT6z5Dsniw704Ixa5eGg==} + turbo-windows-64@2.5.1: + resolution: {integrity: sha512-6XnfSxE8xPETVAlAwfMqCuVuZbq9gXTj8H/Eggv/i3Tjoh2l5xMVTOmg3/zV4RlDtTcwhnvXgXx8LEXrSRZmQQ==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.5.0: - resolution: {integrity: sha512-OUHCV+ueXa3UzfZ4co/ueIHgeq9B2K48pZwIxKSm5VaLVuv8M13MhM7unukW09g++dpdrrE1w4IOVgxKZ0/exg==} + turbo-windows-arm64@2.5.1: + resolution: {integrity: sha512-Nc9abxTCpRL8ejzzIm5j6jze3jFi23ZtU83Fwz2N9StquYHGEi72isyeCkrhzCiUvZZEPlFyFaXOSShcJUK58Q==} cpu: [arm64] os: [win32] - turbo@2.5.0: - resolution: {integrity: sha512-PvSRruOsitjy6qdqwIIyolv99+fEn57gP6gn4zhsHTEcCYgXPhv6BAxzAjleS8XKpo+Y582vTTA9nuqYDmbRuA==} + turbo@2.5.1: + resolution: {integrity: sha512-LT0wYyT+HY4StvmGMq1k2tHCIwauaWSXwyP+tCUked9vja5xEisW8b8NIJGi9BWH5HYH9Og1DysaQFTf8BiydQ==} hasBin: true tweetnacl@0.14.5: @@ -13141,9 +13141,9 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.5.0(@types/node@22.14.1)(typescript@5.8.3)': + '@turbo/gen@2.5.1(@types/node@22.14.1)(typescript@5.8.3)': dependencies: - '@turbo/workspaces': 2.5.0 + '@turbo/workspaces': 2.5.1 commander: 10.0.1 fs-extra: 10.1.0 inquirer: 8.2.6 @@ -13161,7 +13161,7 @@ snapshots: - supports-color - typescript - '@turbo/workspaces@2.5.0': + '@turbo/workspaces@2.5.1': dependencies: commander: 10.0.1 execa: 5.1.1 @@ -15249,11 +15249,11 @@ snapshots: dependencies: eslint: 9.25.1 - eslint-config-turbo@2.5.0(eslint@9.25.1)(turbo@2.5.0): + eslint-config-turbo@2.5.1(eslint@9.25.1)(turbo@2.5.1): dependencies: eslint: 9.25.1 - eslint-plugin-turbo: 2.5.0(eslint@9.25.1)(turbo@2.5.0) - turbo: 2.5.0 + eslint-plugin-turbo: 2.5.1(eslint@9.25.1)(turbo@2.5.1) + turbo: 2.5.1 eslint-import-resolver-node@0.3.9: dependencies: @@ -15347,11 +15347,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.5.0(eslint@9.25.1)(turbo@2.5.0): + eslint-plugin-turbo@2.5.1(eslint@9.25.1)(turbo@2.5.1): dependencies: dotenv: 16.0.3 eslint: 9.25.1 - turbo: 2.5.0 + turbo: 2.5.1 eslint-scope@5.1.1: dependencies: @@ -19154,32 +19154,32 @@ snapshots: dependencies: safe-buffer: 5.2.1 - turbo-darwin-64@2.5.0: + turbo-darwin-64@2.5.1: optional: true - turbo-darwin-arm64@2.5.0: + turbo-darwin-arm64@2.5.1: optional: true - turbo-linux-64@2.5.0: + turbo-linux-64@2.5.1: optional: true - turbo-linux-arm64@2.5.0: + turbo-linux-arm64@2.5.1: optional: true - turbo-windows-64@2.5.0: + turbo-windows-64@2.5.1: optional: true - turbo-windows-arm64@2.5.0: + turbo-windows-arm64@2.5.1: optional: true - turbo@2.5.0: + turbo@2.5.1: optionalDependencies: - turbo-darwin-64: 2.5.0 - turbo-darwin-arm64: 2.5.0 - turbo-linux-64: 2.5.0 - turbo-linux-arm64: 2.5.0 - turbo-windows-64: 2.5.0 - turbo-windows-arm64: 2.5.0 + turbo-darwin-64: 2.5.1 + turbo-darwin-arm64: 2.5.1 + turbo-linux-64: 2.5.1 + turbo-linux-arm64: 2.5.1 + turbo-windows-64: 2.5.1 + turbo-windows-arm64: 2.5.1 tweetnacl@0.14.5: {} diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index ad3b6917d..93c932c3a 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -19,7 +19,7 @@ "dependencies": { "@next/eslint-plugin-next": "15.3.1", "eslint-config-prettier": "^10.1.2", - "eslint-config-turbo": "^2.5.0", + "eslint-config-turbo": "^2.5.1", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", From 4529cabb8afdb2671ec7c01ae2a4e819429d5872 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 04:29:49 +0000 Subject: [PATCH 26/38] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/fr.json | 68 +++++++++++++-------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index b86a7a3a1..a611ca08c 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -612,17 +612,17 @@ "select": { "label": "Sélectionner l'app", "notFound": "Aucune app trouvée", - "search": "", - "noResults": "", - "action": "", - "title": "" + "search": "Rechercher une application", + "noResults": "Pas de résultats", + "action": "Sélectionner {app}", + "title": "Sélectionner une application à ajouter à ce tableau" }, "create": { - "title": "", - "description": "", + "title": "Créer une nouvelle application", + "description": "Créer une nouvelle application ", "action": "" }, - "add": "" + "add": "Ajouter une application" } }, "integration": { @@ -769,7 +769,7 @@ "message": "Le chemin d'accès n'est probablement pas correct" }, "tooManyRequests": { - "title": "", + "title": "Trop de requêtes en un temps donné", "message": "" } } @@ -995,7 +995,7 @@ }, "option": { "title": { - "label": "" + "label": "Titre" }, "borderColor": { "label": "Couleur de la bordure" @@ -1093,7 +1093,7 @@ "label": "Intégrations" }, "title": { - "label": "" + "label": "Titre" }, "customCssClasses": { "label": "Classes CSS personnalisées" @@ -1445,8 +1445,8 @@ } }, "stockPrice": { - "name": "", - "description": "", + "name": "Cours des actions", + "description": "Affiche le cours des actions d'une entreprise", "option": { "stock": { "label": "" @@ -1455,66 +1455,66 @@ "label": "", "option": { "1d": { - "label": "" + "label": "1 jour" }, "5d": { - "label": "" + "label": "5 jours" }, "1mo": { - "label": "" + "label": "1 mois" }, "3mo": { - "label": "" + "label": "3 mois" }, "6mo": { - "label": "" + "label": "6 mois" }, "ytd": { - "label": "" + "label": "Année courante" }, "1y": { - "label": "" + "label": "1 an" }, "2y": { - "label": "" + "label": "2 ans" }, "5y": { - "label": "" + "label": "5 ans" }, "10y": { - "label": "" + "label": "10 ans" }, "max": { - "label": "" + "label": "Maximum" } } }, "timeInterval": { - "label": "", + "label": "Intervalle de temps", "option": { "5m": { - "label": "" + "label": "5 minutes" }, "15m": { - "label": "" + "label": "15 minutes" }, "30m": { - "label": "" + "label": "30 minutes" }, "1h": { - "label": "" + "label": "1 heure" }, "1d": { - "label": "" + "label": "1 jour" }, "5d": { - "label": "" + "label": "5 jours" }, "1wk": { - "label": "" + "label": "1 semaine" }, "1mo": { - "label": "" + "label": "1 mois" } } } @@ -1771,8 +1771,8 @@ "description": "Afficher les flux en cours sur vos serveurs de multimédia", "option": { "showOnlyPlaying": { - "label": "", - "description": "" + "label": "Afficher seulement les médias en cours de lecture", + "description": "Désactiver cette option ne fonctionnera pas pour Plex" } }, "items": { From aba963c7cf0d554d51e5fc233e546e4917ecdf67 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 09:23:37 +0000 Subject: [PATCH 27/38] fix(deps): update mantine monorepo to ^7.17.5 (#2937) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 12 +- packages/db/package.json | 2 +- packages/form/package.json | 2 +- packages/forms-collection/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/modals/package.json | 4 +- packages/notifications/package.json | 2 +- packages/old-import/package.json | 4 +- packages/settings/package.json | 2 +- packages/spotlight/package.json | 6 +- packages/ui/package.json | 6 +- packages/widgets/package.json | 6 +- pnpm-lock.yaml | 266 ++++++++++++------------ 13 files changed, 155 insertions(+), 161 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index dc37d6b82..7afbbf7ea 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -48,12 +48,12 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0", - "@mantine/colors-generator": "^7.17.4", - "@mantine/core": "^7.17.4", - "@mantine/dropzone": "^7.17.4", - "@mantine/hooks": "^7.17.4", - "@mantine/modals": "^7.17.4", - "@mantine/tiptap": "^7.17.4", + "@mantine/colors-generator": "^7.17.5", + "@mantine/core": "^7.17.5", + "@mantine/dropzone": "^7.17.5", + "@mantine/hooks": "^7.17.5", + "@mantine/modals": "^7.17.5", + "@mantine/tiptap": "^7.17.5", "@million/lint": "1.0.14", "@tabler/icons-react": "^3.31.0", "@tanstack/react-query": "^5.74.4", diff --git a/packages/db/package.json b/packages/db/package.json index e2dc56ee4..246dafc66 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -44,7 +44,7 @@ "@homarr/env": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", - "@mantine/core": "^7.17.4", + "@mantine/core": "^7.17.5", "@paralleldrive/cuid2": "^2.2.2", "@testcontainers/mysql": "^10.24.2", "better-sqlite3": "^11.9.1", diff --git a/packages/form/package.json b/packages/form/package.json index c8eae5406..911a85970 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -26,7 +26,7 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/form": "^7.17.4", + "@mantine/form": "^7.17.5", "zod": "^3.24.3" }, "devDependencies": { diff --git a/packages/forms-collection/package.json b/packages/forms-collection/package.json index 7380de2e6..6272b02fb 100644 --- a/packages/forms-collection/package.json +++ b/packages/forms-collection/package.json @@ -29,7 +29,7 @@ "@homarr/notifications": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.17.4", + "@mantine/core": "^7.17.5", "react": "19.1.0", "zod": "^3.24.3" }, diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 63a4425d1..b3be401ad 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -33,7 +33,7 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.17.4", + "@mantine/core": "^7.17.5", "@tabler/icons-react": "^3.31.0", "dayjs": "^1.11.13", "next": "15.3.1", diff --git a/packages/modals/package.json b/packages/modals/package.json index a357dd428..adc64aba4 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -24,8 +24,8 @@ "dependencies": { "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^7.17.4", - "@mantine/hooks": "^7.17.4", + "@mantine/core": "^7.17.5", + "@mantine/hooks": "^7.17.5", "react": "19.1.0" }, "devDependencies": { diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 074e27164..5176ad0a4 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -24,7 +24,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/ui": "workspace:^0.1.0", - "@mantine/notifications": "^7.17.4", + "@mantine/notifications": "^7.17.5", "@tabler/icons-react": "^3.31.0" }, "devDependencies": { diff --git a/packages/old-import/package.json b/packages/old-import/package.json index d6a411d0e..cb0630e0f 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -37,8 +37,8 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.17.4", - "@mantine/hooks": "^7.17.4", + "@mantine/core": "^7.17.5", + "@mantine/hooks": "^7.17.5", "adm-zip": "0.5.16", "next": "15.3.1", "react": "19.1.0", diff --git a/packages/settings/package.json b/packages/settings/package.json index 45b1b6b43..4d041bc8c 100644 --- a/packages/settings/package.json +++ b/packages/settings/package.json @@ -25,7 +25,7 @@ "@homarr/api": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", - "@mantine/dates": "^7.17.4", + "@mantine/dates": "^7.17.5", "next": "15.3.1", "react": "19.1.0", "react-dom": "19.1.0" diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index bd3b60b89..75f60a161 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -33,9 +33,9 @@ "@homarr/settings": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^7.17.4", - "@mantine/hooks": "^7.17.4", - "@mantine/spotlight": "^7.17.4", + "@mantine/core": "^7.17.5", + "@mantine/hooks": "^7.17.5", + "@mantine/spotlight": "^7.17.5", "@tabler/icons-react": "^3.31.0", "jotai": "^2.12.3", "next": "15.3.1", diff --git a/packages/ui/package.json b/packages/ui/package.json index 1ba44c77b..b9fe8d380 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -29,9 +29,9 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.17.4", - "@mantine/dates": "^7.17.4", - "@mantine/hooks": "^7.17.4", + "@mantine/core": "^7.17.5", + "@mantine/dates": "^7.17.5", + "@mantine/hooks": "^7.17.5", "@tabler/icons-react": "^3.31.0", "mantine-react-table": "2.0.0-beta.9", "next": "15.3.1", diff --git a/packages/widgets/package.json b/packages/widgets/package.json index f28bf0185..106856983 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -44,9 +44,9 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/charts": "^7.17.4", - "@mantine/core": "^7.17.4", - "@mantine/hooks": "^7.17.4", + "@mantine/charts": "^7.17.5", + "@mantine/core": "^7.17.5", + "@mantine/hooks": "^7.17.5", "@tabler/icons-react": "^3.31.0", "@tiptap/extension-color": "2.11.7", "@tiptap/extension-highlight": "2.11.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 08e0e0b2b..17bd9837d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -182,23 +182,23 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/widgets '@mantine/colors-generator': - specifier: ^7.17.4 - version: 7.17.4(chroma-js@3.1.2) + specifier: ^7.17.5 + version: 7.17.5(chroma-js@3.1.2) '@mantine/core': - specifier: ^7.17.4 - version: 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/dropzone': - specifier: ^7.17.4 - version: 7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/hooks': - specifier: ^7.17.4 - version: 7.17.4(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(react@19.1.0) '@mantine/modals': - specifier: ^7.17.4 - version: 7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/tiptap': - specifier: ^7.17.4 - version: 7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(@tiptap/extension-link@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7))(@tiptap/react@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tiptap/extension-link@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7))(@tiptap/react@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@million/lint': specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) @@ -258,7 +258,7 @@ importers: version: 2.12.3(@types/react@19.1.2)(react@19.1.0) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.0.0-beta.9(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) @@ -1024,8 +1024,8 @@ importers: specifier: workspace:^0.1.0 version: link:../server-settings '@mantine/core': - specifier: ^7.17.4 - version: 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@paralleldrive/cuid2': specifier: ^2.2.2 version: 2.2.2 @@ -1169,8 +1169,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/form': - specifier: ^7.17.4 - version: 7.17.4(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(react@19.1.0) zod: specifier: ^3.24.3 version: 3.24.3 @@ -1215,8 +1215,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.17.4 - version: 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: specifier: 19.1.0 version: 19.1.0 @@ -1390,11 +1390,11 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.17.4 - version: 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/hooks': - specifier: ^7.17.4 - version: 7.17.4(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(react@19.1.0) react: specifier: 19.1.0 version: 19.1.0 @@ -1451,8 +1451,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.17.4 - version: 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.1.0) @@ -1494,8 +1494,8 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/notifications': - specifier: ^7.17.4 - version: 7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.1.0) @@ -1552,11 +1552,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.17.4 - version: 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/hooks': - specifier: ^7.17.4 - version: 7.17.4(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(react@19.1.0) adm-zip: specifier: 0.5.16 version: 0.5.16 @@ -1780,8 +1780,8 @@ importers: specifier: workspace:^0.1.0 version: link:../server-settings '@mantine/dates': - specifier: ^7.17.4 - version: 7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) @@ -1841,14 +1841,14 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.17.4 - version: 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/hooks': - specifier: ^7.17.4 - version: 7.17.4(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(react@19.1.0) '@mantine/spotlight': - specifier: ^7.17.4 - version: 7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.1.0) @@ -1900,7 +1900,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.0.0-beta.9(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) @@ -1948,20 +1948,20 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.17.4 - version: 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/dates': - specifier: ^7.17.4 - version: 7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/hooks': - specifier: ^7.17.4 - version: 7.17.4(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(react@19.1.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.1.0) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.0.0-beta.9(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) @@ -2085,14 +2085,14 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/charts': - specifier: ^7.17.4 - version: 7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(recharts@2.15.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) + specifier: ^7.17.5 + version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(recharts@2.15.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) '@mantine/core': - specifier: ^7.17.4 - version: 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/hooks': - specifier: ^7.17.4 - version: 7.17.4(react@19.1.0) + specifier: ^7.17.5 + version: 7.17.5(react@19.1.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.1.0) @@ -2149,7 +2149,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.0.0-beta.9(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) @@ -3569,88 +3569,88 @@ packages: '@libsql/core@0.14.0': resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} - '@mantine/charts@7.17.4': - resolution: {integrity: sha512-datvi9GkMRrL9SY2R5Pd7MpP6d7QxRFYMY7DcdE/V3JnwMmg+gCg+QfzvrT947R8sEiBZECirTI0yNLWDSwkGw==} + '@mantine/charts@7.17.5': + resolution: {integrity: sha512-VDDRwUqTsZYqYSYqcc8wXrdiKIvkqRcoDQXKdiuSin7ebQtk29QnPDQmcM536HQpVlUuemI7iTJNTUmhdc7ALQ==} peerDependencies: - '@mantine/core': 7.17.4 - '@mantine/hooks': 7.17.4 + '@mantine/core': 7.17.5 + '@mantine/hooks': 7.17.5 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x recharts: ^2.13.3 - '@mantine/colors-generator@7.17.4': - resolution: {integrity: sha512-1KqfD0hnC76i43HnaAkSrT3szXC/0crfa450hx4cJqjBf5ZZ9pFWwB8qnoubtsmMpdRlHjDBhPRn/j22m1vpTg==} + '@mantine/colors-generator@7.17.5': + resolution: {integrity: sha512-OEskYYba8760q0t/6Xkyv9b+QYxVKW/0593Vg9Qyvul18EVW7Bq8PhtIiGg26KOn3JXfTRDmt/nKxCBI0OF77A==} peerDependencies: chroma-js: '>=2.4.2' - '@mantine/core@7.17.4': - resolution: {integrity: sha512-Ea4M/98jxgIWCuxCdM0YIotVYjfLTGQsfIA6zDg0LsClgjo/ZLnnh4zbi+bLNgM+GGjP4ju7gv4MZvaTKuLO8g==} + '@mantine/core@7.17.5': + resolution: {integrity: sha512-66g/lr281cDPfucjtPw8gFo/yNS9G5iSKqysvPGuDpUBG2bEw8FsJMIsU0bMXtravToIpa3vJRrFUuPndPGnpQ==} peerDependencies: - '@mantine/hooks': 7.17.4 + '@mantine/hooks': 7.17.5 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dates@7.17.4': - resolution: {integrity: sha512-6oqcmcJb0Pypju+/z6s9nEVa3B9Pdj5DTrdj/FP/RD7RFx4k7nHi+jFstn4qcso6nghRRROKMHErfqrBybjzKA==} + '@mantine/dates@7.17.5': + resolution: {integrity: sha512-8/Qjjb9159rQhxtuHLukNfo3/AEGl7SVSRESN8MkfyP8MCQ7mgm9wqvMADb/9Q75boUA0HIN2pewlzlcd31MHQ==} peerDependencies: - '@mantine/core': 7.17.4 - '@mantine/hooks': 7.17.4 + '@mantine/core': 7.17.5 + '@mantine/hooks': 7.17.5 dayjs: '>=1.0.0' react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dropzone@7.17.4': - resolution: {integrity: sha512-jtKbesdCXrn3QLiHz0Ed3hLcY72rTmAhmB4gztL916LUOptYY+eFwQzXQdPOrquJgxQDt1A9LOA2Nug9cgP7tw==} + '@mantine/dropzone@7.17.5': + resolution: {integrity: sha512-vH938od4LpjPTDOSsAFOwhm4IuQy6IzYj11FYmQiJuajzgcUDDvEghMlSR6HIe5Vm8oIvxMi/0iOIEIVYoc9UA==} peerDependencies: - '@mantine/core': 7.17.4 - '@mantine/hooks': 7.17.4 + '@mantine/core': 7.17.5 + '@mantine/hooks': 7.17.5 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/form@7.17.4': - resolution: {integrity: sha512-faCz44IpvLSv8ekG962SIOtRQc4gfC+zeXasbycWNYMW0k8ge7ch689KIuSYN00gdZat2UOaCbrr+yrTYjeuCQ==} + '@mantine/form@7.17.5': + resolution: {integrity: sha512-24xkjs8486uOoevymHx2xgZ69j8mM9EG01LMOOMmEHV2k+0HwrCvwPL/2ISCnzWfHZBSwrq9ZTw7KZ6HPnU0nQ==} peerDependencies: react: ^18.x || ^19.x - '@mantine/hooks@7.17.4': - resolution: {integrity: sha512-PBcJxDAfGm8k1/JJmaDcxzRVQ3JSE1iXGktbgGz+qEOJmCxwbbAYe+CtGFFgi1xX2bPZ+7dtRr/+XFhnKtt/aw==} + '@mantine/hooks@7.17.5': + resolution: {integrity: sha512-Q/3AHI1fjl+W7xQ3jEoMmSoTxLqxMI2gPfxIjd73OPmRpPenYWR1zk/diirXXm2t7JOrAbmpA3/O1gzmgqzc/Q==} peerDependencies: react: ^18.x || ^19.x - '@mantine/modals@7.17.4': - resolution: {integrity: sha512-KQYzLCQRBs9bq0svdpSda8fgxmqrwEy4tgvoXpmlr02srsyySvpOxhXmAUZsjPZapG+D97sYi7BscVZKZoIqgA==} + '@mantine/modals@7.17.5': + resolution: {integrity: sha512-K2rKBkQmndZzL+uPBpQ54qcGwAL1f78ipucQt0Dhf5i252NTBaQVWrRRbPSL0KQQqtK+9TSaV5C8rQ4O9EKUjw==} peerDependencies: - '@mantine/core': 7.17.4 - '@mantine/hooks': 7.17.4 + '@mantine/core': 7.17.5 + '@mantine/hooks': 7.17.5 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/notifications@7.17.4': - resolution: {integrity: sha512-YxNmnZSfIG69lPMFItOZZsizYL3DsOLVUSPkkJILG5pW2F798dc4IA5mhRIbdmzDEx0ArWHJ7gsdd3Vmm5ubPg==} + '@mantine/notifications@7.17.5': + resolution: {integrity: sha512-dLbrSm7ct97fb0Yv8ImVj9mVNkjnD/xkDCP1PANt/shM9xDh0TguqQTvborb+8Wxh1g+RtWVML/an5rVsHbKmg==} peerDependencies: - '@mantine/core': 7.17.4 - '@mantine/hooks': 7.17.4 + '@mantine/core': 7.17.5 + '@mantine/hooks': 7.17.5 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/spotlight@7.17.4': - resolution: {integrity: sha512-HAAK8svSoNLKtwVHEYL4t9cQgR/lKDdXRHTUjmkuqgW5QzpX6A1GYtkHnHlDuVHFdDvInPlk+N63BMysUzw4cg==} + '@mantine/spotlight@7.17.5': + resolution: {integrity: sha512-E7S3tLVT8TMABWkwq200N01UYEOJv2WfSrc1eAo33gGTdlbMb4Ei8z+VYv3M54dtN+aWi7oth4cqkyhnPhWx+A==} peerDependencies: - '@mantine/core': 7.17.4 - '@mantine/hooks': 7.17.4 + '@mantine/core': 7.17.5 + '@mantine/hooks': 7.17.5 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/store@7.17.4': - resolution: {integrity: sha512-a/EecHPtYVxhu3oMX9uTymGolmOBWxW8Qs4fLCjiazEJbS1ScI4lS71GK/SuOa2rGuuOJkaotpyritbx3paIRg==} + '@mantine/store@7.17.5': + resolution: {integrity: sha512-HQzy4rBlUFyw+39TgiAV+TGuQivMWYeQlnMctKJlaxwVY5ZTdF2IpJ/JZcjkGrmrZvBwUQ8IOMFvt2eZc20P1Q==} peerDependencies: react: ^18.x || ^19.x - '@mantine/tiptap@7.17.4': - resolution: {integrity: sha512-5r6dPzw3rfcU6W+zrT06N5cFaISDwYmvVemqz1hXX1cNj7Y9UOb3ymH6lmmXsyqroUv+bHurbi/SlcYd8R0YIA==} + '@mantine/tiptap@7.17.5': + resolution: {integrity: sha512-O2A7TwrW0GrUBVE/0u+wy3SJARPsGdpbFtdoCMXyLYW+oTZgNRzwY7IlIsZ+ohykHgED6YOal1uuQouofS+fJQ==} peerDependencies: - '@mantine/core': 7.17.4 - '@mantine/hooks': 7.17.4 + '@mantine/core': 7.17.5 + '@mantine/hooks': 7.17.5 '@tiptap/extension-link': '>=2.1.12' '@tiptap/react': '>=2.1.12' react: ^18.x || ^19.x @@ -9988,10 +9988,6 @@ packages: resolution: {integrity: sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==} engines: {node: '>=16'} - type-fest@4.39.1: - resolution: {integrity: sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==} - engines: {node: '>=16'} - type-fest@4.40.0: resolution: {integrity: sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==} engines: {node: '>=16'} @@ -11702,91 +11698,91 @@ snapshots: js-base64: 3.7.7 optional: true - '@mantine/charts@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(recharts@2.15.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': + '@mantine/charts@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(recharts@2.15.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': dependencies: - '@mantine/core': 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.4(react@19.1.0) + '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.5(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) recharts: 2.15.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/colors-generator@7.17.4(chroma-js@3.1.2)': + '@mantine/colors-generator@7.17.5(chroma-js@3.1.2)': dependencies: chroma-js: 3.1.2 - '@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@floating-ui/react': 0.26.28(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.4(react@19.1.0) + '@mantine/hooks': 7.17.5(react@19.1.0) clsx: 2.1.1 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) react-number-format: 5.4.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react-remove-scroll: 2.6.2(@types/react@19.1.2)(react@19.1.0) react-textarea-autosize: 8.5.9(@types/react@19.1.2)(react@19.1.0) - type-fest: 4.39.1 + type-fest: 4.40.0 transitivePeerDependencies: - '@types/react' - '@mantine/dates@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/dates@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mantine/core': 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.4(react@19.1.0) + '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.5(react@19.1.0) clsx: 2.1.1 dayjs: 1.11.13 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@mantine/dropzone@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/dropzone@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mantine/core': 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.4(react@19.1.0) + '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.5(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) react-dropzone-esm: 15.2.0(react@19.1.0) - '@mantine/form@7.17.4(react@19.1.0)': + '@mantine/form@7.17.5(react@19.1.0)': dependencies: fast-deep-equal: 3.1.3 klona: 2.0.6 react: 19.1.0 - '@mantine/hooks@7.17.4(react@19.1.0)': + '@mantine/hooks@7.17.5(react@19.1.0)': dependencies: react: 19.1.0 - '@mantine/modals@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/modals@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mantine/core': 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.4(react@19.1.0) + '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.5(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@mantine/notifications@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/notifications@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mantine/core': 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.4(react@19.1.0) - '@mantine/store': 7.17.4(react@19.1.0) + '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.5(react@19.1.0) + '@mantine/store': 7.17.5(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) react-transition-group: 4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/spotlight@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/spotlight@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mantine/core': 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.4(react@19.1.0) - '@mantine/store': 7.17.4(react@19.1.0) + '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.5(react@19.1.0) + '@mantine/store': 7.17.5(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@mantine/store@7.17.4(react@19.1.0)': + '@mantine/store@7.17.5(react@19.1.0)': dependencies: react: 19.1.0 - '@mantine/tiptap@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(@tiptap/extension-link@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7))(@tiptap/react@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/tiptap@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tiptap/extension-link@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7))(@tiptap/react@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mantine/core': 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.4(react@19.1.0) + '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.5(react@19.1.0) '@tiptap/extension-link': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) '@tiptap/react': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 @@ -16741,11 +16737,11 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.9(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + mantine-react-table@2.0.0-beta.9(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@mantine/core': 7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/dates': 7.17.4(@mantine/core@7.17.4(@mantine/hooks@7.17.4(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.4(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.4(react@19.1.0) + '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/dates': 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.5(react@19.1.0) '@tabler/icons-react': 3.31.0(react@19.1.0) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -17384,7 +17380,7 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 index-to-position: 0.1.2 - type-fest: 4.39.1 + type-fest: 4.40.0 parse-ms@3.0.0: {} @@ -17940,14 +17936,14 @@ snapshots: dependencies: find-up-simple: 1.0.0 read-pkg: 9.0.1 - type-fest: 4.39.1 + type-fest: 4.40.0 read-pkg@9.0.1: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.2 parse-json: 8.1.0 - type-fest: 4.39.1 + type-fest: 4.40.0 unicorn-magic: 0.1.0 readable-stream@2.3.8: @@ -19197,8 +19193,6 @@ snapshots: type-fest@4.30.2: {} - type-fest@4.39.1: {} - type-fest@4.40.0: {} type-is@1.6.18: From 767fe946d78268eddce6e213665176b8c6397e92 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 09:24:32 +0000 Subject: [PATCH 28/38] fix(deps): update dependency next-intl to v4.1.0 (#2938) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/translation/package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/translation/package.json b/packages/translation/package.json index 37b45a44a..313ef0845 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -33,7 +33,7 @@ "deepmerge": "4.3.1", "mantine-react-table": "2.0.0-beta.9", "next": "15.3.1", - "next-intl": "4.0.3", + "next-intl": "4.1.0", "react": "19.1.0", "react-dom": "19.1.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17bd9837d..2d7e5c71e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1905,8 +1905,8 @@ importers: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) next-intl: - specifier: 4.0.3 - version: 4.0.3(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)(typescript@5.8.3) + specifier: 4.1.0 + version: 4.1.0(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)(typescript@5.8.3) react: specifier: 19.1.0 version: 19.1.0 @@ -8052,8 +8052,8 @@ packages: nodemailer: optional: true - next-intl@4.0.3: - resolution: {integrity: sha512-vw25WvRheZG6NzyXYePuhc/xrYHMhnu7cVcB49XoXaQsO4WMV0YDV6BllhRgI5Ne79hpoAQMyk/fxIKtkBVbNg==} + next-intl@4.1.0: + resolution: {integrity: sha512-JNJRjc7sdnfUxhZmGcvzDszZ60tQKrygV/VLsgzXhnJDxQPn1cN2rVpc53adA1SvBJwPK2O6Sc6b4gYSILjCzw==} peerDependencies: next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -10193,8 +10193,8 @@ packages: peerDependencies: react: '>=16.13' - use-intl@4.0.3: - resolution: {integrity: sha512-AeXB+5gPORJHj1BPCj0aNga0y4gpucHcqNk6B+xRSLlBt0Bz+QVtMmdtV1nvxG308rWqqkmfo6RVu9yIcZt+Hw==} + use-intl@4.1.0: + resolution: {integrity: sha512-mQvDYFvoGn+bm/PWvlQOtluKCknsQ5a9F1Cj0hMfBjMBVTwnOqLPd6srhjvVdEQEQFVyHM1PfyifKqKYb11M9Q==} peerDependencies: react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -16945,13 +16945,13 @@ snapshots: next: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: 19.1.0 - next-intl@4.0.3(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)(typescript@5.8.3): + next-intl@4.1.0(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)(typescript@5.8.3): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 next: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: 19.1.0 - use-intl: 4.0.3(react@19.1.0) + use-intl: 4.1.0(react@19.1.0) optionalDependencies: typescript: 5.8.3 @@ -19427,7 +19427,7 @@ snapshots: dequal: 2.0.3 react: 19.1.0 - use-intl@4.0.3(react@19.1.0): + use-intl@4.1.0(react@19.1.0): dependencies: '@formatjs/fast-memoize': 2.2.1 '@schummar/icu-type-parser': 1.21.5 From 295cc4a3c41ba9ad20e93df9d6ea5627d56d310d Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 14:20:39 +0000 Subject: [PATCH 29/38] fix(deps): update dependency drizzle-orm to ^0.43.0 (#2939) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/db/package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/db/package.json b/packages/db/package.json index 246dafc66..5031731f2 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -50,7 +50,7 @@ "better-sqlite3": "^11.9.1", "dotenv": "^16.5.0", "drizzle-kit": "^0.31.0", - "drizzle-orm": "^0.42.0", + "drizzle-orm": "^0.43.0", "drizzle-zod": "^0.7.1", "mysql2": "3.14.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d7e5c71e..d0ac56502 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1042,11 +1042,11 @@ importers: specifier: ^0.31.0 version: 0.31.0 drizzle-orm: - specifier: ^0.42.0 - version: 0.42.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0) + specifier: ^0.43.0 + version: 0.43.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0) drizzle-zod: specifier: ^0.7.1 - version: 0.7.1(drizzle-orm@0.42.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0))(zod@3.24.3) + version: 0.7.1(drizzle-orm@0.43.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0))(zod@3.24.3) mysql2: specifier: 3.14.0 version: 3.14.0 @@ -6165,8 +6165,8 @@ packages: resolution: {integrity: sha512-pcKVT+GbfPA+bUovPIilgVOoq+onNBo/YQBG86sf3/GFHkN6lRJPm1l7dKN0IMAk57RQoIm4GUllRrasLlcaSg==} hasBin: true - drizzle-orm@0.42.0: - resolution: {integrity: sha512-pS8nNJm2kBNZwrOjTHJfdKkaU+KuUQmV/vk5D57NojDq4FG+0uAYGMulXtYT///HfgsMF0hnFFvu1ezI3OwOkg==} + drizzle-orm@0.43.0: + resolution: {integrity: sha512-OF6ZOtpGJs3CNXHGwKLfP+mYXEzTnXNL/WRXgAGR+SrtPl6quIBbTPEQZNQ6HhVQchMmJeaezBIcpFBpJD3x+g==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=4' @@ -14823,7 +14823,7 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.42.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0): + drizzle-orm@0.43.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.13 @@ -14831,9 +14831,9 @@ snapshots: gel: 2.0.0 mysql2: 3.14.0 - drizzle-zod@0.7.1(drizzle-orm@0.42.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0))(zod@3.24.3): + drizzle-zod@0.7.1(drizzle-orm@0.43.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0))(zod@3.24.3): dependencies: - drizzle-orm: 0.42.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0) + drizzle-orm: 0.43.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0) zod: 3.24.3 dunder-proto@1.0.1: From 253308357a55ab2fac7ac4144215beefdc517b8d Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 17:19:21 +0000 Subject: [PATCH 30/38] fix(deps): update dependency next-auth to v5.0.0-beta.27 (#2940) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/auth/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/auth/package.json b/packages/auth/package.json index b5af11f83..3fbc2d8f8 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -36,7 +36,7 @@ "cookies": "^0.9.1", "ldapts": "7.4.0", "next": "15.3.1", - "next-auth": "5.0.0-beta.26", + "next-auth": "5.0.0-beta.27", "pretty-print-error": "^1.1.2", "react": "19.1.0", "react-dom": "19.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d0ac56502..9f0ef4590 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -676,8 +676,8 @@ importers: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) next-auth: - specifier: 5.0.0-beta.26 - version: 5.0.0-beta.26(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0) + specifier: 5.0.0-beta.27 + version: 5.0.0-beta.27(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0) pretty-print-error: specifier: ^1.1.2 version: 1.1.2(patch_hash=d1432e02330bdaf8359eb0e54528a74ed6b7e5cce6bb65c13310c82e34fd1e4d) @@ -8036,8 +8036,8 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - next-auth@5.0.0-beta.26: - resolution: {integrity: sha512-yAQLIP2x6FAM+GX6FTlQjoPph6msO/9HI3pjI1z1yws3VnvS77atetcxQOmCpxSLTO4jzvpQqPaBZMgRxDgsYg==} + next-auth@5.0.0-beta.27: + resolution: {integrity: sha512-/QtP9C0C99YpEuBEJqMaDXH3ISWMgObQalwVZEoC7sskaIPhv5fQl6fXS/rXJQKqLY6MNJ42rqjqmRdoXZH2EQ==} peerDependencies: '@simplewebauthn/browser': ^9.0.1 '@simplewebauthn/server': ^9.0.2 @@ -16939,7 +16939,7 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.26(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0): + next-auth@5.0.0-beta.27(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0): dependencies: '@auth/core': 0.39.0 next: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) From f65c0125a9e5415b2f0d3df49f62a406b7a1bb18 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 21:21:27 +0000 Subject: [PATCH 31/38] chore(deps): update dependency @types/node to ^22.15.0 (#2942) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- pnpm-lock.yaml | 116 +++++++++++++++++++-------------------- 3 files changed, 60 insertions(+), 60 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 7afbbf7ea..34f715594 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -92,7 +92,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "3.1.1", - "@types/node": "^22.14.1", + "@types/node": "^22.15.0", "@types/prismjs": "^1.26.5", "@types/react": "19.1.2", "@types/react-dom": "19.1.2", diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 72992c94b..133bb0581 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -44,7 +44,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/node": "^22.14.1", + "@types/node": "^22.15.0", "dotenv-cli": "^8.0.0", "eslint": "^9.25.1", "prettier": "^3.5.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f0ef4590..fffd6e9f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,10 +39,10 @@ importers: version: 14.0.3(semantic-release@24.2.3(typescript@5.8.3)) '@turbo/gen': specifier: ^2.5.1 - version: 2.5.1(@types/node@22.14.1)(typescript@5.8.3) + version: 2.5.1(@types/node@22.15.0)(typescript@5.8.3) '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + version: 4.4.1(vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/coverage-v8': specifier: ^3.1.2 version: 3.1.2(vitest@3.1.2) @@ -75,10 +75,10 @@ importers: version: 5.8.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + version: 5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) vitest: specifier: ^3.1.2 - version: 3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + version: 3.1.2(@types/node@22.15.0)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) apps/nextjs: dependencies: @@ -309,8 +309,8 @@ importers: specifier: 3.1.1 version: 3.1.1 '@types/node': - specifier: ^22.14.1 - version: 22.14.1 + specifier: ^22.15.0 + version: 22.15.0 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 @@ -409,8 +409,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^22.14.1 - version: 22.14.1 + specifier: ^22.15.0 + version: 22.15.0 dotenv-cli: specifier: ^8.0.0 version: 8.0.0 @@ -4839,8 +4839,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.14.1': - resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==} + '@types/node@22.15.0': + resolution: {integrity: sha512-99S8dWD2DkeE6PBaEDw+In3aar7hdoBvjyJMR6vaKBTzpvR0P00ClzJMOoVrj9D2+Sy/YCwACYHnBTpMhg1UCA==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -11663,7 +11663,7 @@ snapshots: '@kubernetes/client-node@1.1.2': dependencies: '@types/js-yaml': 4.0.9 - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/node-fetch': 2.6.12 '@types/stream-buffers': 3.0.7 '@types/tar': 6.1.13 @@ -13137,7 +13137,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.5.1(@types/node@22.14.1)(typescript@5.8.3)': + '@turbo/gen@2.5.1(@types/node@22.15.0)(typescript@5.8.3)': dependencies: '@turbo/workspaces': 2.5.1 commander: 10.0.1 @@ -13147,7 +13147,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.5.0 - ts-node: 10.9.2(@types/node@22.14.1)(typescript@5.8.3) + ts-node: 10.9.2(@types/node@22.15.0)(typescript@5.8.3) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -13173,11 +13173,11 @@ snapshots: '@types/adm-zip@0.5.7': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/asn1@0.2.4': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/aws-lambda@8.10.146': {} @@ -13204,22 +13204,22 @@ snapshots: '@types/bcrypt@5.0.2': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/chroma-js@3.1.1': {} '@types/connect@3.4.38': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/cookie@0.4.1': {} @@ -13228,11 +13228,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/cors@2.8.17': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/css-font-loading-module@0.0.7': {} @@ -13264,13 +13264,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.38': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/ssh2': 1.15.1 '@types/estree@1.0.5': {} @@ -13279,7 +13279,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13294,7 +13294,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/hast@2.3.10': dependencies: @@ -13332,14 +13332,14 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 form-data: 4.0.1 '@types/node@18.19.50': dependencies: undici-types: 5.26.5 - '@types/node@22.14.1': + '@types/node@22.15.0': dependencies: undici-types: 6.21.0 @@ -13368,21 +13368,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/ssh2@0.5.52': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -13391,7 +13391,7 @@ snapshots: '@types/stream-buffers@3.0.7': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/swagger-ui-react@5.18.0': dependencies: @@ -13399,12 +13399,12 @@ snapshots: '@types/tar@6.1.13': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 minipass: 4.2.8 '@types/through@0.0.33': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/tinycolor2@1.4.6': {} @@ -13421,11 +13421,11 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@typescript-eslint/eslint-plugin@8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)': dependencies: @@ -13534,14 +13534,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.4.1(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitejs/plugin-react@4.4.1(vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -13559,7 +13559,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/node@22.15.0)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -13570,13 +13570,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.2(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitest/mocker@3.1.2(vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: '@vitest/spy': 3.1.2 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) '@vitest/pretty-format@3.1.2': dependencies: @@ -13606,7 +13606,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.13 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/node@22.15.0)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) '@vitest/utils@3.1.2': dependencies: @@ -14889,7 +14889,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.14.1 + '@types/node': 22.15.0 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -16470,7 +16470,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -17716,7 +17716,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.14.1 + '@types/node': 22.15.0 long: 5.2.3 proxmox-api@1.1.1: @@ -19090,14 +19090,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3): + ts-node@10.9.2(@types/node@22.15.0)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.14.1 + '@types/node': 22.15.0 acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 @@ -19521,13 +19521,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@3.1.2(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite-node@3.1.2(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - '@types/node' - less @@ -19539,33 +19539,33 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.8.3) optionalDependencies: - vite: 5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.3 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 fsevents: 2.3.3 sass: 1.87.0 sugarss: 4.0.1(postcss@8.4.47) terser: 5.39.0 - vitest@3.1.2(@types/node@22.14.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vitest@3.1.2(@types/node@22.15.0)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: '@vitest/expect': 3.1.2 - '@vitest/mocker': 3.1.2(vite@5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + '@vitest/mocker': 3.1.2(vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/pretty-format': 3.1.2 '@vitest/runner': 3.1.2 '@vitest/snapshot': 3.1.2 @@ -19582,11 +19582,11 @@ snapshots: tinyglobby: 0.2.13 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 5.4.5(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) - vite-node: 3.1.2(@types/node@22.14.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite-node: 3.1.2(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.0 '@vitest/ui': 3.1.2(vitest@3.1.2) jsdom: 26.1.0 transitivePeerDependencies: From d78b2e1e85a6c72ce1366e50ee4a1e83176b7913 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 03:09:10 +0000 Subject: [PATCH 32/38] fix(deps): update dependency tsdav to ^2.1.4 (#2944) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/integrations/package.json | 2 +- pnpm-lock.yaml | 21 ++++++--------------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 1533f7459..b3aa41a3c 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -39,7 +39,7 @@ "maria2": "^0.4.0", "node-ical": "^0.20.1", "proxmox-api": "1.1.1", - "tsdav": "^2.1.3", + "tsdav": "^2.1.4", "undici": "7.8.0", "xml2js": "^0.6.2", "zod": "^3.24.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fffd6e9f6..4adfc45cd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1316,8 +1316,8 @@ importers: specifier: 1.1.1 version: 1.1.1 tsdav: - specifier: ^2.1.3 - version: 2.1.3 + specifier: ^2.1.4 + version: 2.1.4 undici: specifier: 7.8.0 version: 7.8.0 @@ -5860,9 +5860,6 @@ packages: engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true - cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} - cross-fetch@4.1.0: resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} @@ -9902,8 +9899,8 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tsdav@2.1.3: - resolution: {integrity: sha512-TwPBYZKLlbJNtmfg5QzeGqRnOYZ4CCuII3D528+Vv8K/les0PmyB7sT7gf967a6SduJKxCVovWZ+Ei3O+cCAlg==} + tsdav@2.1.4: + resolution: {integrity: sha512-yNF2VHw2neaRbbpSioOqa26i81RT8x2AghLWUgS4bUY47Nb8zlOGV8bDuXULb2NRx+LFU+Z6JgkuMn48fRjQjw==} engines: {node: '>=10'} tslib@1.14.1: @@ -14527,12 +14524,6 @@ snapshots: dependencies: cross-spawn: 7.0.3 - cross-fetch@4.0.0: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - cross-fetch@4.1.0: dependencies: node-fetch: 2.7.0 @@ -19121,10 +19112,10 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdav@2.1.3: + tsdav@2.1.4: dependencies: base-64: 1.0.0 - cross-fetch: 4.0.0 + cross-fetch: 4.1.0 debug: 4.4.0 xml-js: 1.6.11 transitivePeerDependencies: From 8b076ce761b76198d30159af7c24a2f395961e1d Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 04:24:44 +0000 Subject: [PATCH 33/38] chore(deps): update dependency @types/node to ^22.15.1 (#2945) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- pnpm-lock.yaml | 116 +++++++++++++++++++-------------------- 3 files changed, 60 insertions(+), 60 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 34f715594..ce278038e 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -92,7 +92,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "3.1.1", - "@types/node": "^22.15.0", + "@types/node": "^22.15.1", "@types/prismjs": "^1.26.5", "@types/react": "19.1.2", "@types/react-dom": "19.1.2", diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 133bb0581..8ae96a33e 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -44,7 +44,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/node": "^22.15.0", + "@types/node": "^22.15.1", "dotenv-cli": "^8.0.0", "eslint": "^9.25.1", "prettier": "^3.5.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4adfc45cd..5214eaf0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,10 +39,10 @@ importers: version: 14.0.3(semantic-release@24.2.3(typescript@5.8.3)) '@turbo/gen': specifier: ^2.5.1 - version: 2.5.1(@types/node@22.15.0)(typescript@5.8.3) + version: 2.5.1(@types/node@22.15.1)(typescript@5.8.3) '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + version: 4.4.1(vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/coverage-v8': specifier: ^3.1.2 version: 3.1.2(vitest@3.1.2) @@ -75,10 +75,10 @@ importers: version: 5.8.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + version: 5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) vitest: specifier: ^3.1.2 - version: 3.1.2(@types/node@22.15.0)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + version: 3.1.2(@types/node@22.15.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) apps/nextjs: dependencies: @@ -309,8 +309,8 @@ importers: specifier: 3.1.1 version: 3.1.1 '@types/node': - specifier: ^22.15.0 - version: 22.15.0 + specifier: ^22.15.1 + version: 22.15.1 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 @@ -409,8 +409,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^22.15.0 - version: 22.15.0 + specifier: ^22.15.1 + version: 22.15.1 dotenv-cli: specifier: ^8.0.0 version: 8.0.0 @@ -4839,8 +4839,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.15.0': - resolution: {integrity: sha512-99S8dWD2DkeE6PBaEDw+In3aar7hdoBvjyJMR6vaKBTzpvR0P00ClzJMOoVrj9D2+Sy/YCwACYHnBTpMhg1UCA==} + '@types/node@22.15.1': + resolution: {integrity: sha512-gSZyd0Qmv7qvbd2fJ9HGdYmv1yhNdelIA4YOtN6vkcmSwFhthxSEsBgU/JYZcXjWT6DFzoATcHrc52Ckh8SeRA==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -11660,7 +11660,7 @@ snapshots: '@kubernetes/client-node@1.1.2': dependencies: '@types/js-yaml': 4.0.9 - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/node-fetch': 2.6.12 '@types/stream-buffers': 3.0.7 '@types/tar': 6.1.13 @@ -13134,7 +13134,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.5.1(@types/node@22.15.0)(typescript@5.8.3)': + '@turbo/gen@2.5.1(@types/node@22.15.1)(typescript@5.8.3)': dependencies: '@turbo/workspaces': 2.5.1 commander: 10.0.1 @@ -13144,7 +13144,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.5.0 - ts-node: 10.9.2(@types/node@22.15.0)(typescript@5.8.3) + ts-node: 10.9.2(@types/node@22.15.1)(typescript@5.8.3) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -13170,11 +13170,11 @@ snapshots: '@types/adm-zip@0.5.7': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/asn1@0.2.4': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/aws-lambda@8.10.146': {} @@ -13201,22 +13201,22 @@ snapshots: '@types/bcrypt@5.0.2': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/chroma-js@3.1.1': {} '@types/connect@3.4.38': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/cookie@0.4.1': {} @@ -13225,11 +13225,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/cors@2.8.17': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/css-font-loading-module@0.0.7': {} @@ -13261,13 +13261,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.38': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/ssh2': 1.15.1 '@types/estree@1.0.5': {} @@ -13276,7 +13276,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13291,7 +13291,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/hast@2.3.10': dependencies: @@ -13329,14 +13329,14 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 form-data: 4.0.1 '@types/node@18.19.50': dependencies: undici-types: 5.26.5 - '@types/node@22.15.0': + '@types/node@22.15.1': dependencies: undici-types: 6.21.0 @@ -13365,21 +13365,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/ssh2@0.5.52': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -13388,7 +13388,7 @@ snapshots: '@types/stream-buffers@3.0.7': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/swagger-ui-react@5.18.0': dependencies: @@ -13396,12 +13396,12 @@ snapshots: '@types/tar@6.1.13': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 minipass: 4.2.8 '@types/through@0.0.33': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/tinycolor2@1.4.6': {} @@ -13418,11 +13418,11 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@typescript-eslint/eslint-plugin@8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)': dependencies: @@ -13531,14 +13531,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.4.1(vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitejs/plugin-react@4.4.1(vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -13556,7 +13556,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/node@22.15.0)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/node@22.15.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -13567,13 +13567,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.2(vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitest/mocker@3.1.2(vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: '@vitest/spy': 3.1.2 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) '@vitest/pretty-format@3.1.2': dependencies: @@ -13603,7 +13603,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.13 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/node@22.15.0)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/node@22.15.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) '@vitest/utils@3.1.2': dependencies: @@ -14880,7 +14880,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.15.0 + '@types/node': 22.15.1 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -16461,7 +16461,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -17707,7 +17707,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.15.0 + '@types/node': 22.15.1 long: 5.2.3 proxmox-api@1.1.1: @@ -19081,14 +19081,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.15.0)(typescript@5.8.3): + ts-node@10.9.2(@types/node@22.15.1)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.15.0 + '@types/node': 22.15.1 acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 @@ -19512,13 +19512,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@3.1.2(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite-node@3.1.2(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - '@types/node' - less @@ -19530,33 +19530,33 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.8.3) optionalDependencies: - vite: 5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.3 optionalDependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 fsevents: 2.3.3 sass: 1.87.0 sugarss: 4.0.1(postcss@8.4.47) terser: 5.39.0 - vitest@3.1.2(@types/node@22.15.0)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vitest@3.1.2(@types/node@22.15.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: '@vitest/expect': 3.1.2 - '@vitest/mocker': 3.1.2(vite@5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + '@vitest/mocker': 3.1.2(vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/pretty-format': 3.1.2 '@vitest/runner': 3.1.2 '@vitest/snapshot': 3.1.2 @@ -19573,11 +19573,11 @@ snapshots: tinyglobby: 0.2.13 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 5.4.5(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) - vite-node: 3.1.2(@types/node@22.15.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite-node: 3.1.2(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.15.0 + '@types/node': 22.15.1 '@vitest/ui': 3.1.2(vitest@3.1.2) jsdom: 26.1.0 transitivePeerDependencies: From 1d28bf4c93c43c1956c5b386ca8a02ca6ae59eb5 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 08:26:07 +0000 Subject: [PATCH 34/38] fix(deps): update dependency drizzle-orm to ^0.43.1 (#2947) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/db/package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/db/package.json b/packages/db/package.json index 5031731f2..d98b78f64 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -50,7 +50,7 @@ "better-sqlite3": "^11.9.1", "dotenv": "^16.5.0", "drizzle-kit": "^0.31.0", - "drizzle-orm": "^0.43.0", + "drizzle-orm": "^0.43.1", "drizzle-zod": "^0.7.1", "mysql2": "3.14.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5214eaf0d..0c0578ce0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1042,11 +1042,11 @@ importers: specifier: ^0.31.0 version: 0.31.0 drizzle-orm: - specifier: ^0.43.0 - version: 0.43.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0) + specifier: ^0.43.1 + version: 0.43.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0) drizzle-zod: specifier: ^0.7.1 - version: 0.7.1(drizzle-orm@0.43.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0))(zod@3.24.3) + version: 0.7.1(drizzle-orm@0.43.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0))(zod@3.24.3) mysql2: specifier: 3.14.0 version: 3.14.0 @@ -6162,8 +6162,8 @@ packages: resolution: {integrity: sha512-pcKVT+GbfPA+bUovPIilgVOoq+onNBo/YQBG86sf3/GFHkN6lRJPm1l7dKN0IMAk57RQoIm4GUllRrasLlcaSg==} hasBin: true - drizzle-orm@0.43.0: - resolution: {integrity: sha512-OF6ZOtpGJs3CNXHGwKLfP+mYXEzTnXNL/WRXgAGR+SrtPl6quIBbTPEQZNQ6HhVQchMmJeaezBIcpFBpJD3x+g==} + drizzle-orm@0.43.1: + resolution: {integrity: sha512-dUcDaZtE/zN4RV/xqGrVSMpnEczxd5cIaoDeor7Zst9wOe/HzC/7eAaulywWGYXdDEc9oBPMjayVEDg0ziTLJA==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=4' @@ -14814,7 +14814,7 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.43.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0): + drizzle-orm@0.43.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.13 @@ -14822,9 +14822,9 @@ snapshots: gel: 2.0.0 mysql2: 3.14.0 - drizzle-zod@0.7.1(drizzle-orm@0.43.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0))(zod@3.24.3): + drizzle-zod@0.7.1(drizzle-orm@0.43.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0))(zod@3.24.3): dependencies: - drizzle-orm: 0.43.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0) + drizzle-orm: 0.43.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0) zod: 3.24.3 dunder-proto@1.0.1: From e36892fc8f6cb5fe800a1fa6a5615366f1f2946c Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 09:22:12 +0000 Subject: [PATCH 35/38] chore(deps): update dependency @types/node to ^22.15.2 (#2946) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- pnpm-lock.yaml | 116 +++++++++++++++++++-------------------- 3 files changed, 60 insertions(+), 60 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index ce278038e..57bf80c7f 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -92,7 +92,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "3.1.1", - "@types/node": "^22.15.1", + "@types/node": "^22.15.2", "@types/prismjs": "^1.26.5", "@types/react": "19.1.2", "@types/react-dom": "19.1.2", diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 8ae96a33e..cbf7791f1 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -44,7 +44,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/node": "^22.15.1", + "@types/node": "^22.15.2", "dotenv-cli": "^8.0.0", "eslint": "^9.25.1", "prettier": "^3.5.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c0578ce0..3dd514ff2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,10 +39,10 @@ importers: version: 14.0.3(semantic-release@24.2.3(typescript@5.8.3)) '@turbo/gen': specifier: ^2.5.1 - version: 2.5.1(@types/node@22.15.1)(typescript@5.8.3) + version: 2.5.1(@types/node@22.15.2)(typescript@5.8.3) '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + version: 4.4.1(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/coverage-v8': specifier: ^3.1.2 version: 3.1.2(vitest@3.1.2) @@ -75,10 +75,10 @@ importers: version: 5.8.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + version: 5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) vitest: specifier: ^3.1.2 - version: 3.1.2(@types/node@22.15.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + version: 3.1.2(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) apps/nextjs: dependencies: @@ -309,8 +309,8 @@ importers: specifier: 3.1.1 version: 3.1.1 '@types/node': - specifier: ^22.15.1 - version: 22.15.1 + specifier: ^22.15.2 + version: 22.15.2 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 @@ -409,8 +409,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^22.15.1 - version: 22.15.1 + specifier: ^22.15.2 + version: 22.15.2 dotenv-cli: specifier: ^8.0.0 version: 8.0.0 @@ -4839,8 +4839,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.15.1': - resolution: {integrity: sha512-gSZyd0Qmv7qvbd2fJ9HGdYmv1yhNdelIA4YOtN6vkcmSwFhthxSEsBgU/JYZcXjWT6DFzoATcHrc52Ckh8SeRA==} + '@types/node@22.15.2': + resolution: {integrity: sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -11660,7 +11660,7 @@ snapshots: '@kubernetes/client-node@1.1.2': dependencies: '@types/js-yaml': 4.0.9 - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/node-fetch': 2.6.12 '@types/stream-buffers': 3.0.7 '@types/tar': 6.1.13 @@ -13134,7 +13134,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.5.1(@types/node@22.15.1)(typescript@5.8.3)': + '@turbo/gen@2.5.1(@types/node@22.15.2)(typescript@5.8.3)': dependencies: '@turbo/workspaces': 2.5.1 commander: 10.0.1 @@ -13144,7 +13144,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.5.0 - ts-node: 10.9.2(@types/node@22.15.1)(typescript@5.8.3) + ts-node: 10.9.2(@types/node@22.15.2)(typescript@5.8.3) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -13170,11 +13170,11 @@ snapshots: '@types/adm-zip@0.5.7': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/asn1@0.2.4': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/aws-lambda@8.10.146': {} @@ -13201,22 +13201,22 @@ snapshots: '@types/bcrypt@5.0.2': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/chroma-js@3.1.1': {} '@types/connect@3.4.38': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/cookie@0.4.1': {} @@ -13225,11 +13225,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/cors@2.8.17': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/css-font-loading-module@0.0.7': {} @@ -13261,13 +13261,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.38': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/ssh2': 1.15.1 '@types/estree@1.0.5': {} @@ -13276,7 +13276,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13291,7 +13291,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/hast@2.3.10': dependencies: @@ -13329,14 +13329,14 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 form-data: 4.0.1 '@types/node@18.19.50': dependencies: undici-types: 5.26.5 - '@types/node@22.15.1': + '@types/node@22.15.2': dependencies: undici-types: 6.21.0 @@ -13365,21 +13365,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/ssh2@0.5.52': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -13388,7 +13388,7 @@ snapshots: '@types/stream-buffers@3.0.7': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/swagger-ui-react@5.18.0': dependencies: @@ -13396,12 +13396,12 @@ snapshots: '@types/tar@6.1.13': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 minipass: 4.2.8 '@types/through@0.0.33': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/tinycolor2@1.4.6': {} @@ -13418,11 +13418,11 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@typescript-eslint/eslint-plugin@8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)': dependencies: @@ -13531,14 +13531,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.4.1(vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitejs/plugin-react@4.4.1(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -13556,7 +13556,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/node@22.15.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -13567,13 +13567,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.2(vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitest/mocker@3.1.2(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: '@vitest/spy': 3.1.2 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) '@vitest/pretty-format@3.1.2': dependencies: @@ -13603,7 +13603,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.13 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/node@22.15.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) '@vitest/utils@3.1.2': dependencies: @@ -14880,7 +14880,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.15.1 + '@types/node': 22.15.2 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -16461,7 +16461,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -17707,7 +17707,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.15.1 + '@types/node': 22.15.2 long: 5.2.3 proxmox-api@1.1.1: @@ -19081,14 +19081,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.15.1)(typescript@5.8.3): + ts-node@10.9.2(@types/node@22.15.2)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.15.1 + '@types/node': 22.15.2 acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 @@ -19512,13 +19512,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@3.1.2(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite-node@3.1.2(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - '@types/node' - less @@ -19530,33 +19530,33 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.8.3) optionalDependencies: - vite: 5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.3 optionalDependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 fsevents: 2.3.3 sass: 1.87.0 sugarss: 4.0.1(postcss@8.4.47) terser: 5.39.0 - vitest@3.1.2(@types/node@22.15.1)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vitest@3.1.2(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: '@vitest/expect': 3.1.2 - '@vitest/mocker': 3.1.2(vite@5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + '@vitest/mocker': 3.1.2(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/pretty-format': 3.1.2 '@vitest/runner': 3.1.2 '@vitest/snapshot': 3.1.2 @@ -19573,11 +19573,11 @@ snapshots: tinyglobby: 0.2.13 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 5.4.5(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) - vite-node: 3.1.2(@types/node@22.15.1)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite-node: 3.1.2(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.15.1 + '@types/node': 22.15.2 '@vitest/ui': 3.1.2(vitest@3.1.2) jsdom: 26.1.0 transitivePeerDependencies: From d97e74047dc107abb05ca65d8a91a41c6071fbd4 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 16:24:57 +0000 Subject: [PATCH 36/38] fix(deps): update turbo monorepo to ^2.5.2 (#2949) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 4 +- pnpm-lock.yaml | 98 ++++++++++++++++++------------------- tooling/eslint/package.json | 2 +- 3 files changed, 52 insertions(+), 52 deletions(-) diff --git a/package.json b/package.json index 93affedcc..ec07e7925 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@semantic-release/github": "^11.0.1", "@semantic-release/npm": "^12.0.1", "@semantic-release/release-notes-generator": "^14.0.3", - "@turbo/gen": "^2.5.1", + "@turbo/gen": "^2.5.2", "@vitejs/plugin-react": "^4.4.1", "@vitest/coverage-v8": "^3.1.2", "@vitest/ui": "^3.1.2", @@ -48,7 +48,7 @@ "prettier": "^3.5.3", "semantic-release": "^24.2.3", "testcontainers": "^10.24.2", - "turbo": "^2.5.1", + "turbo": "^2.5.2", "typescript": "^5.8.3", "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.1.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3dd514ff2..6e657bf06 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,8 +38,8 @@ importers: specifier: ^14.0.3 version: 14.0.3(semantic-release@24.2.3(typescript@5.8.3)) '@turbo/gen': - specifier: ^2.5.1 - version: 2.5.1(@types/node@22.15.2)(typescript@5.8.3) + specifier: ^2.5.2 + version: 2.5.2(@types/node@22.15.2)(typescript@5.8.3) '@vitejs/plugin-react': specifier: ^4.4.1 version: 4.4.1(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) @@ -68,8 +68,8 @@ importers: specifier: ^10.24.2 version: 10.24.2 turbo: - specifier: ^2.5.1 - version: 2.5.1 + specifier: ^2.5.2 + version: 2.5.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -2197,8 +2197,8 @@ importers: specifier: ^10.1.2 version: 10.1.2(eslint@9.25.1) eslint-config-turbo: - specifier: ^2.5.1 - version: 2.5.1(eslint@9.25.1)(turbo@2.5.1) + specifier: ^2.5.2 + version: 2.5.2(eslint@9.25.1)(turbo@2.5.2) eslint-plugin-import: specifier: ^2.31.0 version: 2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1) @@ -4687,12 +4687,12 @@ packages: '@tsconfig/svelte@1.0.13': resolution: {integrity: sha512-5lYJP45Xllo4yE/RUBccBT32eBlRDbqN8r1/MIvQbKxW3aFqaYPCNgm8D5V20X4ShHcwvYWNlKg3liDh1MlBoA==} - '@turbo/gen@2.5.1': - resolution: {integrity: sha512-d6fSO1bhSVwUVHBMoDFbyorPiKt8pz3X4OS7c+GDL+D5CPJ21dTFvwdLdEgPe7iUnyARY1Nf5ZnP/v47bZlvvw==} + '@turbo/gen@2.5.2': + resolution: {integrity: sha512-hk3ewkf0Fb5DHXY2lgrbebsYqCLCVDbpM1vWjmQTbG/ur2ZqE8Of9+D14BDu813L15crLdbddjlL2vY6NPF67A==} hasBin: true - '@turbo/workspaces@2.5.1': - resolution: {integrity: sha512-xmNbkxC1GEIOmwye6lCQG0g+YhDb2KV3K4KtIn4OtszorCnz8pOxRU6s7UHJs7LezUZ8htWMOJwEFv1MT/9DPw==} + '@turbo/workspaces@2.5.2': + resolution: {integrity: sha512-NxPRAT/mywJ6agqLuVsOag1btEUbPYacVqCndQjvkm5EN0DfjvBIYCsXA/i2Q+Z0hqX84UeIIfIXAQiXpAXZmA==} hasBin: true '@types/adm-zip@0.5.7': @@ -6444,8 +6444,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-config-turbo@2.5.1: - resolution: {integrity: sha512-p1K3KxDMdkhcbVsvFvWoB7WK8oFaR0+Bf1eTmT+B1rQp4b2GmRk48r2w2HHhtbmmpfUsXFRpBZV5ZvGtE8+jmQ==} + eslint-config-turbo@2.5.2: + resolution: {integrity: sha512-aZdMUCJE5sC9UHZPOu6GiqCijw0HzlcxTbGZeESMFanYShhxrO6mAZy02zYOYK+y184HnxAngcfmtgDt8cIUxw==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -6502,8 +6502,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-turbo@2.5.1: - resolution: {integrity: sha512-liyy40BXnlQP37EX9Z03gqUeH8X8GetqDcOG6EhNqnFktJT3fq+XTLvWzhU+s62JFS5/Njcpm3QTOY9VjD4yAQ==} + eslint-plugin-turbo@2.5.2: + resolution: {integrity: sha512-B+vdgOtBuDbRI3sIRayV3HZK1XcwlNuksmJJIgggkXTsNehMEbreJBkIda4qvA/STHnGAl2bUGev0Jx8Rijiwg==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -9924,38 +9924,38 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - turbo-darwin-64@2.5.1: - resolution: {integrity: sha512-U9lT1rZ20PQjEYDiNE0aZrU6K+StAE8rood9xn3pV1w+CSby56HkdR2AffzMdFf8iPTeZfcY1qL62rDcCeRPTw==} + turbo-darwin-64@2.5.2: + resolution: {integrity: sha512-2aIl0Sx230nLk+Cg2qSVxvPOBWCZpwKNuAMKoROTvWKif6VMpkWWiR9XEPoz7sHeLmCOed4GYGMjL1bqAiIS/g==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.5.1: - resolution: {integrity: sha512-1Mp0LeP9JENqHnurGNyD557sndPt2BYUbgzUX87tYIdu/26dHyqlobiRzPpEfkOGB/sV4exhJUJGXB1h72szLQ==} + turbo-darwin-arm64@2.5.2: + resolution: {integrity: sha512-MrFYhK/jYu8N6QlqZtqSHi3e4QVxlzqU3ANHTKn3/tThuwTLbNHEvzBPWSj5W7nZcM58dCqi6gYrfRz6bJZyAA==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.5.1: - resolution: {integrity: sha512-Cl2yKumJQAlNG5UA7vjCU6SPBLrcKaGhOjTaUjGHeD9WLL8vh4FwOlhOD2wk7zCUlhpJaM73WHY+oOZGMqmzOg==} + turbo-linux-64@2.5.2: + resolution: {integrity: sha512-LxNqUE2HmAJQ/8deoLgMUDzKxd5bKxqH0UBogWa+DF+JcXhtze3UTMr6lEr0dEofdsEUYK1zg8FRjglmwlN5YA==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.5.1: - resolution: {integrity: sha512-OFpb/9YZJG8v3nttD4K5dxW3bwsZp++oxAykpYsPhp552EX6r+dJrt2dzX3C0azls2JLf/UzTpA83fRoM8mC4g==} + turbo-linux-arm64@2.5.2: + resolution: {integrity: sha512-0MI1Ao1q8zhd+UUbIEsrM+yLq1BsrcJQRGZkxIsHFlGp7WQQH1oR3laBgfnUCNdCotCMD6w4moc9pUbXdOR3bg==} cpu: [arm64] os: [linux] - turbo-windows-64@2.5.1: - resolution: {integrity: sha512-6XnfSxE8xPETVAlAwfMqCuVuZbq9gXTj8H/Eggv/i3Tjoh2l5xMVTOmg3/zV4RlDtTcwhnvXgXx8LEXrSRZmQQ==} + turbo-windows-64@2.5.2: + resolution: {integrity: sha512-hOLcbgZzE5ttACHHyc1ajmWYq4zKT42IC3G6XqgiXxMbS+4eyVYTL+7UvCZBd3Kca1u4TLQdLQjeO76zyDJc2A==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.5.1: - resolution: {integrity: sha512-Nc9abxTCpRL8ejzzIm5j6jze3jFi23ZtU83Fwz2N9StquYHGEi72isyeCkrhzCiUvZZEPlFyFaXOSShcJUK58Q==} + turbo-windows-arm64@2.5.2: + resolution: {integrity: sha512-fMU41ABhSLa18H8V3Z7BMCGynQ8x+wj9WyBMvWm1jeyRKgkvUYJsO2vkIsy8m0vrwnIeVXKOIn6eSe1ddlBVqw==} cpu: [arm64] os: [win32] - turbo@2.5.1: - resolution: {integrity: sha512-LT0wYyT+HY4StvmGMq1k2tHCIwauaWSXwyP+tCUked9vja5xEisW8b8NIJGi9BWH5HYH9Og1DysaQFTf8BiydQ==} + turbo@2.5.2: + resolution: {integrity: sha512-Qo5lfuStr6LQh3sPQl7kIi243bGU4aHGDQJUf6ylAdGwks30jJFloc9NYHP7Y373+gGU9OS0faA4Mb5Sy8X9Xw==} hasBin: true tweetnacl@0.14.5: @@ -13134,9 +13134,9 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.5.1(@types/node@22.15.2)(typescript@5.8.3)': + '@turbo/gen@2.5.2(@types/node@22.15.2)(typescript@5.8.3)': dependencies: - '@turbo/workspaces': 2.5.1 + '@turbo/workspaces': 2.5.2 commander: 10.0.1 fs-extra: 10.1.0 inquirer: 8.2.6 @@ -13154,7 +13154,7 @@ snapshots: - supports-color - typescript - '@turbo/workspaces@2.5.1': + '@turbo/workspaces@2.5.2': dependencies: commander: 10.0.1 execa: 5.1.1 @@ -15236,11 +15236,11 @@ snapshots: dependencies: eslint: 9.25.1 - eslint-config-turbo@2.5.1(eslint@9.25.1)(turbo@2.5.1): + eslint-config-turbo@2.5.2(eslint@9.25.1)(turbo@2.5.2): dependencies: eslint: 9.25.1 - eslint-plugin-turbo: 2.5.1(eslint@9.25.1)(turbo@2.5.1) - turbo: 2.5.1 + eslint-plugin-turbo: 2.5.2(eslint@9.25.1)(turbo@2.5.2) + turbo: 2.5.2 eslint-import-resolver-node@0.3.9: dependencies: @@ -15334,11 +15334,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.5.1(eslint@9.25.1)(turbo@2.5.1): + eslint-plugin-turbo@2.5.2(eslint@9.25.1)(turbo@2.5.2): dependencies: dotenv: 16.0.3 eslint: 9.25.1 - turbo: 2.5.1 + turbo: 2.5.2 eslint-scope@5.1.1: dependencies: @@ -19141,32 +19141,32 @@ snapshots: dependencies: safe-buffer: 5.2.1 - turbo-darwin-64@2.5.1: + turbo-darwin-64@2.5.2: optional: true - turbo-darwin-arm64@2.5.1: + turbo-darwin-arm64@2.5.2: optional: true - turbo-linux-64@2.5.1: + turbo-linux-64@2.5.2: optional: true - turbo-linux-arm64@2.5.1: + turbo-linux-arm64@2.5.2: optional: true - turbo-windows-64@2.5.1: + turbo-windows-64@2.5.2: optional: true - turbo-windows-arm64@2.5.1: + turbo-windows-arm64@2.5.2: optional: true - turbo@2.5.1: + turbo@2.5.2: optionalDependencies: - turbo-darwin-64: 2.5.1 - turbo-darwin-arm64: 2.5.1 - turbo-linux-64: 2.5.1 - turbo-linux-arm64: 2.5.1 - turbo-windows-64: 2.5.1 - turbo-windows-arm64: 2.5.1 + turbo-darwin-64: 2.5.2 + turbo-darwin-arm64: 2.5.2 + turbo-linux-64: 2.5.2 + turbo-linux-arm64: 2.5.2 + turbo-windows-64: 2.5.2 + turbo-windows-arm64: 2.5.2 tweetnacl@0.14.5: {} diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 93c932c3a..920127195 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -19,7 +19,7 @@ "dependencies": { "@next/eslint-plugin-next": "15.3.1", "eslint-config-prettier": "^10.1.2", - "eslint-config-turbo": "^2.5.1", + "eslint-config-turbo": "^2.5.2", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", From 3dcee8cb869dd11d54631636253ad17e2af97dd7 Mon Sep 17 00:00:00 2001 From: Andre Silva <32734153+Aandree5@users.noreply.github.com> Date: Fri, 25 Apr 2025 19:49:32 +0100 Subject: [PATCH 37/38] feat: add releases widget (#2497) Co-authored-by: Andre Silva Co-authored-by: Meier Lukas Co-authored-by: Manuel <30572287+manuel-rw@users.noreply.github.com> --- packages/api/src/router/widgets/index.ts | 2 + packages/api/src/router/widgets/releases.ts | 53 ++ packages/definitions/src/widget.ts | 1 + .../request-handler/src/releases-providers.ts | 306 ++++++++ packages/request-handler/src/releases.ts | 105 +++ packages/translation/src/lang/en.json | 79 +++ packages/ui/src/components/masked-image.tsx | 4 +- .../src/components/masked-or-normal-image.tsx | 2 +- packages/widgets/package.json | 2 + packages/widgets/src/_inputs/index.ts | 2 + ...widget-multiReleasesRepositories-input.tsx | 326 +++++++++ packages/widgets/src/index.tsx | 2 + packages/widgets/src/options.ts | 8 + .../src/releases/component.module.scss | 30 + packages/widgets/src/releases/component.tsx | 366 ++++++++++ packages/widgets/src/releases/index.ts | 53 ++ .../src/releases/releases-providers.ts | 36 + .../src/releases/releases-repository.ts | 30 + pnpm-lock.yaml | 668 +++++++++++++++++- 19 files changed, 2068 insertions(+), 7 deletions(-) create mode 100644 packages/api/src/router/widgets/releases.ts create mode 100644 packages/request-handler/src/releases-providers.ts create mode 100644 packages/request-handler/src/releases.ts create mode 100644 packages/widgets/src/_inputs/widget-multiReleasesRepositories-input.tsx create mode 100644 packages/widgets/src/releases/component.module.scss create mode 100644 packages/widgets/src/releases/component.tsx create mode 100644 packages/widgets/src/releases/index.ts create mode 100644 packages/widgets/src/releases/releases-providers.ts create mode 100644 packages/widgets/src/releases/releases-repository.ts diff --git a/packages/api/src/router/widgets/index.ts b/packages/api/src/router/widgets/index.ts index ddce0b9a0..d97741c29 100644 --- a/packages/api/src/router/widgets/index.ts +++ b/packages/api/src/router/widgets/index.ts @@ -12,6 +12,7 @@ import { minecraftRouter } from "./minecraft"; import { networkControllerRouter } from "./network-controller"; import { notebookRouter } from "./notebook"; import { optionsRouter } from "./options"; +import { releasesRouter } from "./releases"; import { rssFeedRouter } from "./rssFeed"; import { smartHomeRouter } from "./smart-home"; import { stockPriceRouter } from "./stocks"; @@ -34,5 +35,6 @@ export const widgetRouter = createTRPCRouter({ mediaTranscoding: mediaTranscodingRouter, minecraft: minecraftRouter, options: optionsRouter, + releases: releasesRouter, networkController: networkControllerRouter, }); diff --git a/packages/api/src/router/widgets/releases.ts b/packages/api/src/router/widgets/releases.ts new file mode 100644 index 000000000..a8b797b44 --- /dev/null +++ b/packages/api/src/router/widgets/releases.ts @@ -0,0 +1,53 @@ +import { escapeForRegEx } from "@tiptap/react"; +import { z } from "zod"; + +import { releasesRequestHandler } from "@homarr/request-handler/releases"; + +import { createTRPCRouter, publicProcedure } from "../../trpc"; + +const formatVersionFilterRegex = (versionFilter: z.infer | undefined) => { + if (!versionFilter) return undefined; + + const escapedPrefix = versionFilter.prefix ? escapeForRegEx(versionFilter.prefix) : ""; + const precision = "[0-9]+\\.".repeat(versionFilter.precision).slice(0, -2); + const escapedSuffix = versionFilter.suffix ? escapeForRegEx(versionFilter.suffix) : ""; + + return `^${escapedPrefix}${precision}${escapedSuffix}$`; +}; + +const _releaseVersionFilterSchema = z.object({ + prefix: z.string().optional(), + precision: z.number(), + suffix: z.string().optional(), +}); + +export const releasesRouter = createTRPCRouter({ + getLatest: publicProcedure + .input( + z.object({ + repositories: z.array( + z.object({ + providerKey: z.string(), + identifier: z.string(), + versionFilter: _releaseVersionFilterSchema.optional(), + }), + ), + }), + ) + .query(async ({ input }) => { + const result = await Promise.all( + input.repositories.map(async (repository) => { + const innerHandler = releasesRequestHandler.handler({ + providerKey: repository.providerKey, + identifier: repository.identifier, + versionRegex: formatVersionFilterRegex(repository.versionFilter), + }); + return await innerHandler.getCachedOrUpdatedDataAsync({ + forceUpdate: false, + }); + }), + ); + + return result; + }), +}); diff --git a/packages/definitions/src/widget.ts b/packages/definitions/src/widget.ts index aff019899..263ea533f 100644 --- a/packages/definitions/src/widget.ts +++ b/packages/definitions/src/widget.ts @@ -23,5 +23,6 @@ export const widgetKinds = [ "bookmarks", "indexerManager", "healthMonitoring", + "releases", ] as const; export type WidgetKind = (typeof widgetKinds)[number]; diff --git a/packages/request-handler/src/releases-providers.ts b/packages/request-handler/src/releases-providers.ts new file mode 100644 index 000000000..3ed3383ea --- /dev/null +++ b/packages/request-handler/src/releases-providers.ts @@ -0,0 +1,306 @@ +import { z } from "zod"; + +export interface ReleasesProvider { + getDetailsUrl: (identifier: string) => string | undefined; + parseDetailsResponse: (response: unknown) => z.SafeParseReturnType | undefined; + getReleasesUrl: (identifier: string) => string; + parseReleasesResponse: (response: unknown) => z.SafeParseReturnType; +} + +interface ProvidersProps { + [key: string]: ReleasesProvider; + DockerHub: ReleasesProvider; + Github: ReleasesProvider; + Gitlab: ReleasesProvider; + Npm: ReleasesProvider; + Codeberg: ReleasesProvider; +} + +export const Providers: ProvidersProps = { + DockerHub: { + getDetailsUrl(identifier) { + if (identifier.indexOf("/") > 0) { + const [owner, name] = identifier.split("/"); + if (!owner || !name) { + return ""; + } + return `https://hub.docker.com/v2/namespaces/${encodeURIComponent(owner)}/repositories/${encodeURIComponent(name)}`; + } else { + return `https://hub.docker.com/v2/repositories/library/${encodeURIComponent(identifier)}`; + } + }, + parseDetailsResponse(response) { + return z + .object({ + name: z.string(), + namespace: z.string(), + description: z.string(), + star_count: z.number(), + date_registered: z.string().transform((value) => new Date(value)), + }) + .transform((resp) => ({ + projectUrl: `https://hub.docker.com/r/${resp.namespace === "library" ? "_" : resp.namespace}/${resp.name}`, + projectDescription: resp.description, + isFork: false, + isArchived: false, + createdAt: resp.date_registered, + starsCount: resp.star_count, + openIssues: 0, + forksCount: 0, + })) + .safeParse(response); + }, + getReleasesUrl(identifier) { + return `${this.getDetailsUrl(identifier)}/tags?page_size=200`; + }, + parseReleasesResponse(response) { + return z + .object({ + results: z.array( + z + .object({ name: z.string(), last_updated: z.string().transform((value) => new Date(value)) }) + .transform((tag) => ({ + identifier: "", + latestRelease: tag.name, + latestReleaseAt: tag.last_updated, + })), + ), + }) + .transform((resp) => { + return resp.results.map((release) => ({ + ...release, + releaseUrl: "", + releaseDescription: "", + isPreRelease: false, + })); + }) + .safeParse(response); + }, + }, + Github: { + getDetailsUrl(identifier) { + const [owner, name] = identifier.split("/"); + if (!owner || !name) { + return ""; + } + return `https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(name)}`; + }, + parseDetailsResponse(response) { + return z + .object({ + html_url: z.string(), + description: z.string(), + fork: z.boolean(), + archived: z.boolean(), + created_at: z.string().transform((value) => new Date(value)), + stargazers_count: z.number(), + open_issues_count: z.number(), + forks_count: z.number(), + }) + .transform((resp) => ({ + projectUrl: resp.html_url, + projectDescription: resp.description, + isFork: resp.fork, + isArchived: resp.archived, + createdAt: resp.created_at, + starsCount: resp.stargazers_count, + openIssues: resp.open_issues_count, + forksCount: resp.forks_count, + })) + .safeParse(response); + }, + getReleasesUrl(identifier) { + return `${this.getDetailsUrl(identifier)}/releases`; + }, + parseReleasesResponse(response) { + return z + .array( + z + .object({ + tag_name: z.string(), + published_at: z.string().transform((value) => new Date(value)), + html_url: z.string(), + body: z.string(), + prerelease: z.boolean(), + }) + .transform((tag) => ({ + identifier: "", + latestRelease: tag.tag_name, + latestReleaseAt: tag.published_at, + releaseUrl: tag.html_url, + releaseDescription: tag.body, + isPreRelease: tag.prerelease, + })), + ) + .safeParse(response); + }, + }, + Gitlab: { + getDetailsUrl(identifier) { + return `https://gitlab.com/api/v4/projects/${encodeURIComponent(identifier)}`; + }, + parseDetailsResponse(response) { + return z + .object({ + web_url: z.string(), + description: z.string(), + forked_from_project: z.object({ id: z.number() }).nullable(), + archived: z.boolean(), + created_at: z.string().transform((value) => new Date(value)), + star_count: z.number(), + open_issues_count: z.number(), + forks_count: z.number(), + }) + .transform((resp) => ({ + projectUrl: resp.web_url, + projectDescription: resp.description, + isFork: resp.forked_from_project !== null, + isArchived: resp.archived, + createdAt: resp.created_at, + starsCount: resp.star_count, + openIssues: resp.open_issues_count, + forksCount: resp.forks_count, + })) + .safeParse(response); + }, + getReleasesUrl(identifier) { + return `${this.getDetailsUrl(identifier)}/releases`; + }, + parseReleasesResponse(response) { + return z + .array( + z + .object({ + name: z.string(), + released_at: z.string().transform((value) => new Date(value)), + description: z.string(), + _links: z.object({ self: z.string() }), + upcoming_release: z.boolean(), + }) + .transform((tag) => ({ + identifier: "", + latestRelease: tag.name, + latestReleaseAt: tag.released_at, + releaseUrl: tag._links.self, + releaseDescription: tag.description, + isPreRelease: tag.upcoming_release, + })), + ) + .safeParse(response); + }, + }, + Npm: { + getDetailsUrl(_) { + return undefined; + }, + parseDetailsResponse(_) { + return undefined; + }, + getReleasesUrl(identifier) { + return `https://registry.npmjs.org/${encodeURIComponent(identifier)}`; + }, + parseReleasesResponse(response) { + return z + .object({ + time: z.record(z.string().transform((value) => new Date(value))).transform((version) => + Object.entries(version).map(([key, value]) => ({ + identifier: "", + latestRelease: key, + latestReleaseAt: value, + })), + ), + versions: z.record(z.object({ description: z.string() })), + name: z.string(), + }) + .transform((resp) => { + return resp.time.map((release) => ({ + ...release, + releaseUrl: `https://www.npmjs.com/package/${resp.name}/v/${release.latestRelease}`, + releaseDescription: resp.versions[release.latestRelease]?.description ?? "", + isPreRelease: false, + })); + }) + .safeParse(response); + }, + }, + Codeberg: { + getDetailsUrl(identifier) { + const [owner, name] = identifier.split("/"); + if (!owner || !name) { + return ""; + } + return `https://codeberg.org/api/v1/repos/${encodeURIComponent(owner)}/${encodeURIComponent(name)}`; + }, + parseDetailsResponse(response) { + return z + .object({ + html_url: z.string(), + description: z.string(), + fork: z.boolean(), + archived: z.boolean(), + created_at: z.string().transform((value) => new Date(value)), + stars_count: z.number(), + open_issues_count: z.number(), + forks_count: z.number(), + }) + .transform((resp) => ({ + projectUrl: resp.html_url, + projectDescription: resp.description, + isFork: resp.fork, + isArchived: resp.archived, + createdAt: resp.created_at, + starsCount: resp.stars_count, + openIssues: resp.open_issues_count, + forksCount: resp.forks_count, + })) + .safeParse(response); + }, + getReleasesUrl(identifier) { + return `${this.getDetailsUrl(identifier)}/releases`; + }, + parseReleasesResponse(response) { + return z + .array( + z + .object({ + tag_name: z.string(), + published_at: z.string().transform((value) => new Date(value)), + url: z.string(), + body: z.string(), + prerelease: z.boolean(), + }) + .transform((tag) => ({ + latestRelease: tag.tag_name, + latestReleaseAt: tag.published_at, + releaseUrl: tag.url, + releaseDescription: tag.body, + isPreRelease: tag.prerelease, + })), + ) + .safeParse(response); + }, + }, +}; + +const _detailsSchema = z.object({ + projectUrl: z.string(), + projectDescription: z.string(), + isFork: z.boolean(), + isArchived: z.boolean(), + createdAt: z.date(), + starsCount: z.number(), + openIssues: z.number(), + forksCount: z.number(), +}); + +const _releasesSchema = z.object({ + latestRelease: z.string(), + latestReleaseAt: z.date(), + releaseUrl: z.string(), + releaseDescription: z.string(), + isPreRelease: z.boolean(), +}); + +export type DetailsResponse = z.infer; + +export type ReleasesResponse = z.infer; diff --git a/packages/request-handler/src/releases.ts b/packages/request-handler/src/releases.ts new file mode 100644 index 000000000..17d7b924e --- /dev/null +++ b/packages/request-handler/src/releases.ts @@ -0,0 +1,105 @@ +import dayjs from "dayjs"; +import { z } from "zod"; + +import { fetchWithTimeout } from "@homarr/common"; +import { logger } from "@homarr/log"; + +import { createCachedWidgetRequestHandler } from "./lib/cached-widget-request-handler"; +import { Providers } from "./releases-providers"; +import type { DetailsResponse } from "./releases-providers"; + +const _reponseSchema = z.object({ + identifier: z.string(), + providerKey: z.string(), + latestRelease: z.string(), + latestReleaseAt: z.date(), + releaseUrl: z.string(), + releaseDescription: z.string(), + isPreRelease: z.boolean(), + projectUrl: z.string(), + projectDescription: z.string(), + isFork: z.boolean(), + isArchived: z.boolean(), + createdAt: z.date(), + starsCount: z.number(), + openIssues: z.number(), + forksCount: z.number(), +}); + +export const releasesRequestHandler = createCachedWidgetRequestHandler({ + queryKey: "releasesApiResult", + widgetKind: "releases", + async requestAsync(input: { providerKey: string; identifier: string; versionRegex: string | undefined }) { + const provider = Providers[input.providerKey]; + + if (!provider) return undefined; + + let detailsResult: DetailsResponse = { + projectUrl: "", + projectDescription: "", + isFork: false, + isArchived: false, + createdAt: new Date(0), + starsCount: 0, + openIssues: 0, + forksCount: 0, + }; + + const detailsUrl = provider.getDetailsUrl(input.identifier); + if (detailsUrl !== undefined) { + const detailsResponse = await fetchWithTimeout(detailsUrl); + const parsedDetails = provider.parseDetailsResponse(await detailsResponse.json()); + + if (parsedDetails?.success) { + detailsResult = parsedDetails.data; + } else { + logger.warn("Failed to parse details response", { + provider: input.providerKey, + identifier: input.identifier, + detailsUrl, + error: parsedDetails?.error, + }); + } + } + + const releasesResponse = await fetchWithTimeout(provider.getReleasesUrl(input.identifier)); + const releasesResult = provider.parseReleasesResponse(await releasesResponse.json()); + + if (!releasesResult.success) return undefined; + + const latest: ResponseResponse = releasesResult.data + .filter((result) => (input.versionRegex ? new RegExp(input.versionRegex).test(result.latestRelease) : true)) + .reduce( + (latest, result) => { + return { + ...detailsResult, + ...(result.latestReleaseAt > latest.latestReleaseAt ? result : latest), + identifier: input.identifier, + providerKey: input.providerKey, + }; + }, + { + identifier: "", + providerKey: "", + latestRelease: "", + latestReleaseAt: new Date(0), + releaseUrl: "", + releaseDescription: "", + isPreRelease: false, + projectUrl: "", + projectDescription: "", + isFork: false, + isArchived: false, + createdAt: new Date(0), + starsCount: 0, + openIssues: 0, + forksCount: 0, + }, + ); + + return latest; + }, + cacheDuration: dayjs.duration(5, "minutes"), +}); + +export type ResponseResponse = z.infer; diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index eb85cecca..abb0b0b74 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -2052,6 +2052,85 @@ } } }, + "releases": { + "name": "Releases", + "description": "Displays a list of the current version of the given repositories with the given version regex.", + "option": { + "newReleaseWithin": { + "label": "New Release Within", + "description": "Usage example: 1w (1 week), 10m (10 months). Accepted unit types h (hours), d (days), w (weeks), m (months), y (years). Leave empty for no highlighting of new releases." + }, + "staleReleaseWithin": { + "label": "Stale Release Within", + "description": "Usage example: 1w (1 week), 10m (10 months). Accepted unit types h (hours), d (days), w (weeks), m (months), y (years). Leave empty for no highlighting of stale releases." + }, + "showOnlyHighlighted": { + "label": "Show Only Highlighted", + "description": "Show only new or stale releases. As per the above." + }, + "showDetails": { + "label": "Show Details" + }, + "repositories": { + "label": "Repositories", + "addRRepository": { + "label": "Add repository" + }, + "provider": { + "label": "Provider" + }, + "identifier": { + "label": "Identifier", + "placeholder": "Name or Owner/Name" + }, + "versionFilter": { + "label": "Version Filter", + "prefix": { + "label": "Prefix" + }, + "precision": { + "label": "Precision", + "options": { + "none": "None" + } + }, + "suffix": { + "label": "Suffix" + }, + "regex": { + "label": "Regular Expression" + } + }, + "edit": { + "label": "Edit" + }, + "editForm": { + "title": "Edit Repository", + "cancel": { + "label": "Cancel" + }, + "confirm": { + "label": "Confirm" + } + }, + "example": { + "label": "Example" + }, + "invalid": "Invalid repository definition, please check the values" + } + }, + "not-found": "Not Found", + "pre-release": "Pre-Release", + "archived": "Archived", + "forked": "Forked", + "starsCount": "Stars", + "forksCount": "Forks", + "issuesCount": "Open Issues", + "openProjectPage": "Open Project Page", + "openReleasePage": "Open Release Page", + "releaseDescription": "Release Description", + "created": "Created" + }, "networkControllerSummary": { "option": {}, "card": { diff --git a/packages/ui/src/components/masked-image.tsx b/packages/ui/src/components/masked-image.tsx index 45b073d76..17b6b1cbd 100644 --- a/packages/ui/src/components/masked-image.tsx +++ b/packages/ui/src/components/masked-image.tsx @@ -7,7 +7,7 @@ import type { Property } from "csstype"; import classes from "./masked-image.module.css"; interface MaskedImageProps { - imageUrl: string; + imageUrl?: string; color: MantineColor; alt?: string; style?: React.CSSProperties; @@ -41,7 +41,7 @@ export const MaskedImage = ({ maskSize, maskRepeat, maskPosition, - maskImage: `url(${imageUrl})`, + maskImage: imageUrl ? `url(${imageUrl})` : undefined, } as React.CSSProperties } /> diff --git a/packages/ui/src/components/masked-or-normal-image.tsx b/packages/ui/src/components/masked-or-normal-image.tsx index 3a62a4c43..af60b28d9 100644 --- a/packages/ui/src/components/masked-or-normal-image.tsx +++ b/packages/ui/src/components/masked-or-normal-image.tsx @@ -6,7 +6,7 @@ import type { Property } from "csstype"; import { MaskedImage } from "./masked-image"; interface MaskedOrNormalImageProps { - imageUrl: string; + imageUrl?: string; hasColor?: boolean; color?: MantineColor; alt?: string; diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 106856983..d6203804c 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -33,6 +33,7 @@ "@homarr/db": "workspace:^0.1.0", "@homarr/definitions": "workspace:^0.1.0", "@homarr/form": "workspace:^0.1.0", + "@homarr/forms-collection": "workspace:^0.1.0", "@homarr/integrations": "workspace:^0.1.0", "@homarr/modals": "workspace:^0.1.0", "@homarr/modals-collection": "workspace:^0.1.0", @@ -69,6 +70,7 @@ "next": "15.3.1", "react": "19.1.0", "react-dom": "19.1.0", + "react-markdown": "^10.1.0", "recharts": "^2.15.3", "video.js": "^8.22.0", "zod": "^3.24.3" diff --git a/packages/widgets/src/_inputs/index.ts b/packages/widgets/src/_inputs/index.ts index d675e5c1c..b19ab8c9c 100644 --- a/packages/widgets/src/_inputs/index.ts +++ b/packages/widgets/src/_inputs/index.ts @@ -2,6 +2,7 @@ import type { WidgetOptionType } from "../options"; import { WidgetAppInput } from "./widget-app-input"; import { WidgetLocationInput } from "./widget-location-input"; import { WidgetMultiTextInput } from "./widget-multi-text-input"; +import { WidgetMultiReleasesRepositoriesInput } from "./widget-multiReleasesRepositories-input"; import { WidgetMultiSelectInput } from "./widget-multiselect-input"; import { WidgetNumberInput } from "./widget-number-input"; import { WidgetSelectInput } from "./widget-select-input"; @@ -21,6 +22,7 @@ const mapping = { switch: WidgetSwitchInput, app: WidgetAppInput, sortableItemList: WidgetSortedItemListInput, + multiReleasesRepositories: WidgetMultiReleasesRepositoriesInput, } satisfies Record; export const getInputForType = (type: TType) => { diff --git a/packages/widgets/src/_inputs/widget-multiReleasesRepositories-input.tsx b/packages/widgets/src/_inputs/widget-multiReleasesRepositories-input.tsx new file mode 100644 index 000000000..ddd7123ef --- /dev/null +++ b/packages/widgets/src/_inputs/widget-multiReleasesRepositories-input.tsx @@ -0,0 +1,326 @@ +"use client"; + +import React, { useCallback, useMemo, useState } from "react"; +import { ActionIcon, Button, Divider, Fieldset, Group, Select, Stack, Text, TextInput } from "@mantine/core"; +import type { FormErrors } from "@mantine/form"; +import { IconEdit, IconTrash, IconTriangleFilled } from "@tabler/icons-react"; +import { escapeForRegEx } from "@tiptap/react"; + +import { IconPicker } from "@homarr/forms-collection"; +import { createModal, useModalAction } from "@homarr/modals"; +import { useScopedI18n } from "@homarr/translation/client"; +import { MaskedOrNormalImage } from "@homarr/ui"; + +import { Providers } from "../releases/releases-providers"; +import type { ReleasesRepository, ReleasesVersionFilter } from "../releases/releases-repository"; +import type { CommonWidgetInputProps } from "./common"; +import { useWidgetInputTranslation } from "./common"; +import { useFormContext } from "./form"; + +interface FormValidation { + hasErrors: boolean; + errors: FormErrors; +} + +export const WidgetMultiReleasesRepositoriesInput = ({ + property, + kind, +}: CommonWidgetInputProps<"multiReleasesRepositories">) => { + const t = useWidgetInputTranslation(kind, property); + const tRepository = useScopedI18n("widget.releases.option.repositories"); + const form = useFormContext(); + const repositories = form.values.options[property] as ReleasesRepository[]; + const { openModal } = useModalAction(ReleaseEditModal); + const versionFilterPrecisionOptions = useMemo( + () => [tRepository("versionFilter.precision.options.none"), "#", "#.#", "#.#.#", "#.#.#.#", "#.#.#.#.#"], + [tRepository], + ); + + const onRepositorySave = useCallback( + (repository: ReleasesRepository, index: number): FormValidation => { + form.setFieldValue(`options.${property}.${index}.providerKey`, repository.providerKey); + form.setFieldValue(`options.${property}.${index}.identifier`, repository.identifier); + form.setFieldValue(`options.${property}.${index}.versionFilter`, repository.versionFilter); + form.setFieldValue(`options.${property}.${index}.iconUrl`, repository.iconUrl); + + const formValidation = form.validate(); + const fieldErrors: FormErrors = Object.entries(formValidation.errors).reduce((acc, [key, value]) => { + if (key.startsWith(`options.${property}.${index}.`)) { + acc[key] = value; + } + return acc; + }, {} as FormErrors); + + return { + hasErrors: Object.keys(fieldErrors).length > 0, + errors: fieldErrors, + }; + }, + [form, property], + ); + + const addNewItem = () => { + const item = { + providerKey: "DockerHub", + identifier: "", + } as ReleasesRepository; + + form.setValues((previous) => { + const previousValues = previous.options?.[property] as ReleasesRepository[]; + return { + ...previous, + options: { + ...previous.options, + [property]: [...previousValues, item], + }, + }; + }); + + const index = repositories.length; + + openModal({ + fieldPath: `options.${property}.${index}`, + repository: item, + onRepositorySave: (saved) => onRepositorySave(saved, index), + versionFilterPrecisionOptions, + }); + }; + + const onReleaseRemove = (index: number) => { + form.setValues((previous) => { + const previousValues = previous.options?.[property] as ReleasesRepository[]; + return { + ...previous, + options: { + ...previous.options, + [property]: previousValues.filter((_, i) => i !== index), + }, + }; + }); + }; + + return ( +
+ + + + + {repositories.map((repository, index) => { + return ( + + + + + + {Providers[repository.providerKey]?.name} + + + + + {repository.identifier} + + + + {formatVersionFilterRegex(repository.versionFilter) ?? ""} + + + + + + onReleaseRemove(index)}> + + + + {Object.keys(form.errors).filter((key) => key.startsWith(`options.${property}.${index}.`)).length > 0 && ( + + + + {tRepository("invalid")} + + + )} + + + ); + })} + +
+ ); +}; + +const formatVersionFilterRegex = (versionFilter: ReleasesVersionFilter | undefined) => { + if (!versionFilter) return undefined; + + const escapedPrefix = versionFilter.prefix ? escapeForRegEx(versionFilter.prefix) : ""; + const precision = "[0-9]+\\.".repeat(versionFilter.precision).slice(0, -2); + const escapedSuffix = versionFilter.suffix ? escapeForRegEx(versionFilter.suffix) : ""; + + return `^${escapedPrefix}${precision}${escapedSuffix}$`; +}; + +interface ReleaseEditProps { + fieldPath: string; + repository: ReleasesRepository; + onRepositorySave: (repository: ReleasesRepository) => FormValidation; + versionFilterPrecisionOptions: string[]; +} + +const ReleaseEditModal = createModal(({ innerProps, actions }) => { + const tRepository = useScopedI18n("widget.releases.option.repositories"); + const [loading, setLoading] = useState(false); + const [tempRepository, setTempRepository] = useState(() => ({ ...innerProps.repository })); + const [formErrors, setFormErrors] = useState({}); + + const handleConfirm = useCallback(() => { + setLoading(true); + + const validation = innerProps.onRepositorySave(tempRepository); + setFormErrors(validation.errors); + if (!validation.hasErrors) { + actions.closeModal(); + } + + setLoading(false); + }, [innerProps, tempRepository, actions]); + + const handleChange = useCallback((changedValue: Partial) => { + setTempRepository((prev) => ({ ...prev, ...changedValue })); + }, []); + + return ( + + + ({ + value: key, + label: value, + }))} + value={tempRepository.versionFilter?.precision.toString() ?? "0"} + onChange={(value) => { + const precision = value ? parseInt(value) : 0; + handleChange({ + versionFilter: + isNaN(precision) || precision <= 0 + ? undefined + : { + ...(tempRepository.versionFilter ?? {}), + precision, + }, + }); + }} + error={formErrors[`${innerProps.fieldPath}.versionFilter.precision`]} + /> + { + handleChange({ + versionFilter: { + ...(tempRepository.versionFilter ?? { precision: 0 }), + suffix: event.currentTarget.value, + }, + }); + }} + error={formErrors[`${innerProps.fieldPath}.versionFilter.suffix`]} + disabled={!tempRepository.versionFilter} + /> + + + + {tRepository("versionFilter.regex.label")}:{" "} + {formatVersionFilterRegex(tempRepository.versionFilter) ?? + tRepository("versionFilter.precision.options.none")} + + + + handleChange({ iconUrl: url })} + error={formErrors[`${innerProps.fieldPath}.iconUrl`] as string} + /> + + + + + + + + + ); +}).withOptions({ + defaultTitle(t) { + return t("widget.releases.option.repositories.editForm.title"); + }, + size: "xl", +}); diff --git a/packages/widgets/src/index.tsx b/packages/widgets/src/index.tsx index b9d21e825..36cdcfa9f 100644 --- a/packages/widgets/src/index.tsx +++ b/packages/widgets/src/index.tsx @@ -28,6 +28,7 @@ import * as networkControllerStatus from "./network-controller/network-status"; import * as networkControllerSummary from "./network-controller/summary"; import * as notebook from "./notebook"; import type { WidgetOptionDefinition } from "./options"; +import * as releases from "./releases"; import * as rssFeed from "./rssFeed"; import * as smartHomeEntityState from "./smart-home/entity-state"; import * as smartHomeExecuteAutomation from "./smart-home/execute-automation"; @@ -63,6 +64,7 @@ export const widgetImports = { healthMonitoring, mediaTranscoding, minecraftServerStatus, + releases, } satisfies WidgetImportRecord; export type WidgetImports = typeof widgetImports; diff --git a/packages/widgets/src/options.ts b/packages/widgets/src/options.ts index 4f74a13a7..8ea413c50 100644 --- a/packages/widgets/src/options.ts +++ b/packages/widgets/src/options.ts @@ -7,6 +7,7 @@ import type { ZodType } from "zod"; import type { IntegrationKind } from "@homarr/definitions"; import type { inferSelectOptionValue, SelectOption } from "./_inputs/widget-select-input"; +import type { ReleasesRepository } from "./releases/releases-repository"; interface CommonInput { defaultValue?: TType; @@ -119,6 +120,13 @@ const optionsFactory = { values: [] as string[], validate: input?.validate, }), + multiReleasesRepositories: (input?: CommonInput & { validate?: ZodType }) => ({ + type: "multiReleasesRepositories" as const, + defaultValue: input?.defaultValue ?? [], + withDescription: input?.withDescription ?? false, + values: [] as ReleasesRepository[], + validate: input?.validate, + }), app: () => ({ type: "app" as const, defaultValue: "", diff --git a/packages/widgets/src/releases/component.module.scss b/packages/widgets/src/releases/component.module.scss new file mode 100644 index 000000000..7501d7a13 --- /dev/null +++ b/packages/widgets/src/releases/component.module.scss @@ -0,0 +1,30 @@ +.releasesRepository { + border-left: 2px solid transparent; + + &:has(.releasesRepositoryHeader:hover), + &:has(.releasesRepositoryHeader.active), + &:has(.releasesRepositoryDetails:hover) { + border-left-color: var(--mantine-color-secondaryColor-text); + } +} + +.releasesRepositoryHeader { + user-select: none; + cursor: pointer; + + &:hover, + &.active, + &:has(~ .releasesRepositoryDetails:hover) { + background-color: var(--mantine-color-secondaryColor-light); + } +} + +.releasesRepositoryDetails { + background-color: var(--mantine-color-default-hover); + user-select: none; + cursor: pointer; +} + +.releasesRepositoryExpanded { + background-color: var(--mantine-color-default-hover); +} diff --git a/packages/widgets/src/releases/component.tsx b/packages/widgets/src/releases/component.tsx new file mode 100644 index 000000000..603b3db17 --- /dev/null +++ b/packages/widgets/src/releases/component.tsx @@ -0,0 +1,366 @@ +"use client"; + +import { useCallback, useMemo, useState } from "react"; +import { Button, Divider, Group, Stack, Text, Title, Tooltip } from "@mantine/core"; +import { + IconArchive, + IconCircleDot, + IconCircleFilled, + IconExternalLink, + IconGitFork, + IconProgressCheck, + IconStar, +} from "@tabler/icons-react"; +import combineClasses from "clsx"; +import { useFormatter, useNow } from "next-intl"; +import ReactMarkdown from "react-markdown"; + +import { clientApi } from "@homarr/api/client"; +import { useRequiredBoard } from "@homarr/boards/context"; +import { useScopedI18n } from "@homarr/translation/client"; +import { MaskedOrNormalImage } from "@homarr/ui"; + +import type { WidgetComponentProps } from "../definition"; +import classes from "./component.module.scss"; +import { Providers } from "./releases-providers"; +import type { ReleasesRepository } from "./releases-repository"; + +function isDateWithin(date: Date, relativeDate: string): boolean { + const amount = parseInt(relativeDate.slice(0, -1), 10); + const unit = relativeDate.slice(-1); + + const startTime = new Date().getTime(); + const endTime = new Date(date).getTime(); + const diffTime = Math.abs(endTime - startTime); + const diffHours = Math.ceil(diffTime / (1000 * 60 * 60)); + + switch (unit) { + case "h": + return diffHours < amount; + + case "d": + return diffHours / 24 < amount; + + case "w": + return diffHours / (24 * 7) < amount; + + case "m": + return diffHours / (24 * 30) < amount; + + case "y": + return diffHours / (24 * 365) < amount; + + default: + throw new Error("Invalid unit"); + } +} + +export default function ReleasesWidget({ options }: WidgetComponentProps<"releases">) { + const t = useScopedI18n("widget.releases"); + const now = useNow(); + const formatter = useFormatter(); + const board = useRequiredBoard(); + const [expandedRepository, setExpandedRepository] = useState(""); + const hasIconColor = useMemo(() => board.iconColor !== null, [board.iconColor]); + + const [results] = clientApi.widget.releases.getLatest.useSuspenseQuery( + { + repositories: options.repositories.map((repository) => ({ + providerKey: repository.providerKey, + identifier: repository.identifier, + versionFilter: repository.versionFilter, + })), + }, + { + refetchOnMount: false, + refetchOnWindowFocus: false, + refetchOnReconnect: false, + retry: false, + }, + ); + + const repositories = useMemo(() => { + return results + .map(({ data }) => { + if (data === undefined) return undefined; + + const repository = options.repositories.find( + (repository: ReleasesRepository) => + repository.providerKey === data.providerKey && repository.identifier === data.identifier, + ); + + if (repository === undefined) return undefined; + + return { + ...repository, + ...data, + isNewRelease: + options.newReleaseWithin !== "" ? isDateWithin(data.latestReleaseAt, options.newReleaseWithin) : false, + isStaleRelease: + options.staleReleaseWithin !== "" ? !isDateWithin(data.latestReleaseAt, options.staleReleaseWithin) : false, + }; + }) + .filter( + (repository) => + repository !== undefined && + (!options.showOnlyHighlighted || repository.isNewRelease || repository.isStaleRelease), + ) + .sort((repoA, repoB) => { + if (repoA?.latestReleaseAt === undefined) return 1; + if (repoB?.latestReleaseAt === undefined) return -1; + return repoA.latestReleaseAt > repoB.latestReleaseAt ? -1 : 1; + }) as ReleasesRepository[]; + }, [ + results, + options.repositories, + options.showOnlyHighlighted, + options.newReleaseWithin, + options.staleReleaseWithin, + ]); + + const toggleExpandedRepository = useCallback( + (identifier: string) => { + setExpandedRepository(expandedRepository === identifier ? "" : identifier); + }, + [expandedRepository], + ); + + return ( + + {repositories.map((repository: ReleasesRepository) => { + const isActive = expandedRepository === repository.identifier; + + return ( + + toggleExpandedRepository(repository.identifier)} + > + + + + {repository.identifier} + + + + {repository.latestRelease ?? t("not-found")} + + + + + + + {repository.latestReleaseAt && + formatter.relativeTime(repository.latestReleaseAt, { + now, + style: "narrow", + })} + + {(repository.isNewRelease || repository.isStaleRelease) && ( + + )} + + + {options.showDetails && ( + + )} + {isActive && } + + + ); + })} + + ); +} + +interface DetailsDisplayProps { + repository: ReleasesRepository; + toggleExpandedRepository: (identifier: string) => void; +} + +const DetailsDisplay = ({ repository, toggleExpandedRepository }: DetailsDisplayProps) => { + const t = useScopedI18n("widget.releases"); + const formatter = useFormatter(); + + return ( + <> + toggleExpandedRepository(repository.identifier)} /> + toggleExpandedRepository(repository.identifier)} + > + + + + + + + + + + + + + + + + + + + {repository.starsCount === 0 + ? "-" + : formatter.number(repository.starsCount ?? 0, { + notation: "compact", + maximumFractionDigits: 1, + })} + + + + + + + + + {repository.forksCount === 0 + ? "-" + : formatter.number(repository.forksCount ?? 0, { + notation: "compact", + maximumFractionDigits: 1, + })} + + + + + + + + + {repository.openIssues === 0 + ? "-" + : formatter.number(repository.openIssues ?? 0, { + notation: "compact", + maximumFractionDigits: 1, + })} + + + + + + + ); +}; + +interface ExtendedDisplayProps { + repository: ReleasesRepository; + hasIconColor: boolean; +} + +const ExpandedDisplay = ({ repository, hasIconColor }: ExtendedDisplayProps) => { + const t = useScopedI18n("widget.releases"); + const now = useNow(); + const formatter = useFormatter(); + + return ( + <> + + + + + + + {Providers[repository.providerKey]?.name} + + + {repository.createdAt && ( + + {t("created")} + | + + {formatter.relativeTime(repository.createdAt, { + now, + style: "narrow", + })} + + + )} + + + + {repository.releaseDescription && ( + <> + + + {t("releaseDescription")} + + + {repository.releaseDescription} + + + )} + + + ); +}; diff --git a/packages/widgets/src/releases/index.ts b/packages/widgets/src/releases/index.ts new file mode 100644 index 000000000..1afeabb1e --- /dev/null +++ b/packages/widgets/src/releases/index.ts @@ -0,0 +1,53 @@ +import { IconRocket } from "@tabler/icons-react"; +import { z } from "zod"; + +import { createWidgetDefinition } from "../definition"; +import { optionsBuilder } from "../options"; + +export const { definition, componentLoader } = createWidgetDefinition("releases", { + icon: IconRocket, + createOptions() { + return optionsBuilder.from((factory) => ({ + newReleaseWithin: factory.text({ + defaultValue: "1w", + withDescription: true, + validate: z + .string() + .regex(/^\d+[hdwmy]$/) + .or(z.literal("")), + }), + staleReleaseWithin: factory.text({ + defaultValue: "6m", + withDescription: true, + validate: z + .string() + .regex(/^\d+[hdwmy]$/) + .or(z.literal("")), + }), + showOnlyHighlighted: factory.switch({ + withDescription: true, + defaultValue: true, + }), + showDetails: factory.switch({ + defaultValue: true, + }), + repositories: factory.multiReleasesRepositories({ + defaultValue: [], + validate: z.array( + z.object({ + providerKey: z.string().min(1), + identifier: z.string().min(1), + versionFilter: z + .object({ + prefix: z.string().optional(), + precision: z.number(), + suffix: z.string().optional(), + }) + .optional(), + iconUrl: z.string().url().optional(), + }), + ), + }), + })); + }, +}).withDynamicImport(() => import("./component")); diff --git a/packages/widgets/src/releases/releases-providers.ts b/packages/widgets/src/releases/releases-providers.ts new file mode 100644 index 000000000..a30c16908 --- /dev/null +++ b/packages/widgets/src/releases/releases-providers.ts @@ -0,0 +1,36 @@ +export interface ReleasesProvider { + name: string; + iconUrl: string; +} + +interface ProvidersProps { + [key: string]: ReleasesProvider; + DockerHub: ReleasesProvider; + Github: ReleasesProvider; + Gitlab: ReleasesProvider; + Npm: ReleasesProvider; + Codeberg: ReleasesProvider; +} + +export const Providers: ProvidersProps = { + DockerHub: { + name: "Docker Hub", + iconUrl: "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/docker.svg", + }, + Github: { + name: "Github", + iconUrl: "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/github-dark.svg", + }, + Gitlab: { + name: "Gitlab", + iconUrl: "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/gitlab.svg", + }, + Npm: { + name: "Npm", + iconUrl: "https://cdn.jsdelivr.net/gh/loganmarchione/homelab-svg-assets//assets/npm.svg", + }, + Codeberg: { + name: "Codeberg", + iconUrl: "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/codeberg.svg", + }, +}; diff --git a/packages/widgets/src/releases/releases-repository.ts b/packages/widgets/src/releases/releases-repository.ts new file mode 100644 index 000000000..a6fe7f368 --- /dev/null +++ b/packages/widgets/src/releases/releases-repository.ts @@ -0,0 +1,30 @@ +export interface ReleasesVersionFilter { + prefix?: string; + precision: number; + suffix?: string; +} + +export interface ReleasesRepository { + providerKey: string; + identifier: string; + versionFilter?: ReleasesVersionFilter; + iconUrl?: string; + + latestRelease?: string; + latestReleaseAt?: Date; + isNewRelease: boolean; + isStaleRelease: boolean; + + releaseUrl?: string; + releaseDescription?: string; + isPreRelease?: boolean; + + projectUrl?: string; + projectDescription?: string; + isFork?: boolean; + isArchived?: boolean; + createdAt?: Date; + starsCount?: number; + forksCount?: number; + openIssues?: number; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6e657bf06..6d043e25e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,7 +78,7 @@ importers: version: 5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) vitest: specifier: ^3.1.2 - version: 3.1.2(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + version: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) apps/nextjs: dependencies: @@ -2051,6 +2051,9 @@ importers: '@homarr/form': specifier: workspace:^0.1.0 version: link:../form + '@homarr/forms-collection': + specifier: workspace:^0.1.0 + version: link:../forms-collection '@homarr/integrations': specifier: workspace:^0.1.0 version: link:../integrations @@ -2159,6 +2162,9 @@ importers: react-dom: specifier: 19.1.0 version: 19.1.0(react@19.1.0) + react-markdown: + specifier: ^10.1.0 + version: 10.1.0(@types/react@19.1.2)(react@19.1.0) recharts: specifier: ^2.15.3 version: 2.15.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -4773,12 +4779,18 @@ packages: '@types/d3-timer@3.0.2': resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/docker-modem@3.0.6': resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} '@types/dockerode@3.3.38': resolution: {integrity: sha512-nnrcfUe2iR+RyOuz0B4bZgQwD9djQa9ADEjp7OAgBs10pYT0KSCtplJjcmBDJz0qaReX5T7GbE5i4VplvzUHvA==} + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -4797,6 +4809,9 @@ packages: '@types/hast@2.3.10': resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} @@ -4821,6 +4836,9 @@ packages: '@types/markdown-it@14.1.2': resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} @@ -4830,6 +4848,9 @@ packages: '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node-cron@3.0.11': resolution: {integrity: sha512-0ikrnug3/IyneSHqCBeslAhlK2aBfYek1fGo4bP4QnZPmiqSGRK+Oy7ZMisLWkesffJvQ1cqAcBnJC+8+nxIAg==} @@ -4907,6 +4928,9 @@ packages: '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/use-sync-external-store@0.0.6': resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} @@ -4969,6 +4993,9 @@ packages: '@umami/node@0.4.0': resolution: {integrity: sha512-pyphprbiF7KiDSc+SWZ4/rVM8B5vU27zIiFfEPj2lEqczpI4xAKSp+dM3tlzyRAWJL32fcbCfAaLGhJZQV13Rg==} + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@videojs/http-streaming@3.17.0': resolution: {integrity: sha512-Ch1P3tvvIEezeZXyK11UfWgp4cWKX4vIhZ30baN/lRinqdbakZ5hiAI3pGjRy3d+q/Epyc8Csz5xMdKNNGYpcw==} engines: {node: '>=8', npm: '>=5'} @@ -5377,6 +5404,9 @@ packages: babel-plugin-syntax-hermes-parser@0.21.1: resolution: {integrity: sha512-tUCEa+EykZx3oJXc+PolKz2iwDscCJ2hCONMvEqjAb4jIQH5ZapDd5Brs2Nk4TQpSJ/1Ykz53ksQbevXbF0wxg==} + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -5556,6 +5586,9 @@ packages: caniuse-lite@1.0.30001703: resolution: {integrity: sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@5.2.0: resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} engines: {node: '>=12'} @@ -5583,15 +5616,27 @@ packages: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + character-entities@1.2.4: resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + character-reference-invalid@1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -5731,6 +5776,9 @@ packages: comma-separated-tokens@1.0.8: resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} @@ -6011,6 +6059,9 @@ packages: decimal.js@10.5.0: resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + decode-named-character-reference@1.1.0: + resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} + decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} @@ -6094,6 +6145,9 @@ packages: detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -6559,6 +6613,9 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -6600,6 +6657,9 @@ packages: resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -7029,6 +7089,12 @@ packages: hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + hastscript@6.0.0: resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} @@ -7077,6 +7143,9 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-url-attributes@3.0.1: + resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -7180,6 +7249,9 @@ packages: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} engines: {node: '>=10'} + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + inquirer@7.3.3: resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} engines: {node: '>=8.0.0'} @@ -7224,9 +7296,15 @@ packages: is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + is-alphanumerical@1.0.4: resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -7291,6 +7369,9 @@ packages: is-decimal@1.0.4: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -7317,6 +7398,9 @@ packages: is-hexadecimal@1.0.4: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} @@ -7742,6 +7826,9 @@ packages: long@5.2.3: resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -7832,6 +7919,30 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -7850,6 +7961,69 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -8455,6 +8629,9 @@ packages: parse-entities@2.0.0: resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} @@ -8705,6 +8882,9 @@ packages: property-information@5.6.0: resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} + property-information@7.0.0: + resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + prosemirror-changeset@2.2.1: resolution: {integrity: sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==} @@ -8884,6 +9064,12 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-markdown@10.1.0: + resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + react-number-format@5.4.3: resolution: {integrity: sha512-VCY5hFg/soBighAoGcdE+GagkJq0230qN6jcS5sp8wQX1qy1fYN/RX7/BXkrs0oyzzwqR8/+eSUrqXbGeywdUQ==} peerDependencies: @@ -9062,6 +9248,12 @@ packages: resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} engines: {node: '>=8'} + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.1: + resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} + remarkable@2.0.1: resolution: {integrity: sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==} engines: {node: '>= 6.0.0'} @@ -9428,6 +9620,9 @@ packages: space-separated-tokens@1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + spawn-error-forwarder@1.0.0: resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==} @@ -9543,6 +9738,9 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -9578,6 +9776,12 @@ packages: strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + style-to-js@1.1.16: + resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==} + + style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} @@ -9849,10 +10053,16 @@ packages: tree-sitter@0.22.1: resolution: {integrity: sha512-gRO+jk2ljxZlIn20QRskIvpLCMtzuLl5T0BY6L9uvPYD17uUrxlxWkvYCiVqED2q2q7CVtY52Uex4WcYo2FEXw==} + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + triple-beam@1.4.1: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + trpc-to-openapi@2.2.0: resolution: {integrity: sha512-tIKpykAKsZqad/AQXc0JKDd1Evq8fm8j3jVMVVJ+keo2KUb67uyucHRzEsJWSN99RPf6esuytsmnetx7Q0S9wg==} peerDependencies: @@ -10097,6 +10307,9 @@ packages: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} @@ -10105,6 +10318,21 @@ packages: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universal-github-app-jwt@2.2.0: resolution: {integrity: sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ==} @@ -10257,6 +10485,12 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + victory-vendor@36.9.2: resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} @@ -10620,6 +10854,9 @@ packages: zod@3.24.3: resolution: {integrity: sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==} + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + snapshots: '@ampproject/remapping@2.3.0': @@ -13259,6 +13496,10 @@ snapshots: '@types/d3-timer@3.0.2': {} + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + '@types/docker-modem@3.0.6': dependencies: '@types/node': 22.15.2 @@ -13270,6 +13511,10 @@ snapshots: '@types/node': 22.15.2 '@types/ssh2': 1.15.1 + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.6 + '@types/estree@1.0.5': {} '@types/estree@1.0.6': {} @@ -13297,6 +13542,10 @@ snapshots: dependencies: '@types/unist': 2.0.11 + '@types/hast@3.0.4': + dependencies: + '@types/unist': 2.0.11 + '@types/http-errors@2.0.4': {} '@types/inquirer@6.5.0': @@ -13319,12 +13568,18 @@ snapshots: '@types/linkify-it': 5.0.0 '@types/mdurl': 2.0.0 + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 2.0.11 + '@types/mdurl@2.0.0': {} '@types/mime@1.3.5': {} '@types/minimatch@5.1.2': {} + '@types/ms@2.1.0': {} + '@types/node-cron@3.0.11': {} '@types/node-fetch@2.6.12': @@ -13412,6 +13667,8 @@ snapshots: '@types/unist@2.0.11': {} + '@types/unist@3.0.3': {} + '@types/use-sync-external-store@0.0.6': {} '@types/video.js@7.3.58': {} @@ -13503,6 +13760,8 @@ snapshots: '@umami/node@0.4.0': {} + '@ungap/structured-clone@1.3.0': {} + '@videojs/http-streaming@3.17.0(video.js@8.22.0)': dependencies: '@babel/runtime': 7.25.6 @@ -13556,7 +13815,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -13603,7 +13862,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.13 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) '@vitest/utils@3.1.2': dependencies: @@ -14019,6 +14278,8 @@ snapshots: dependencies: hermes-parser: 0.21.1 + bail@2.0.2: {} + balanced-match@1.0.2: {} bare-events@2.5.4: @@ -14204,6 +14465,8 @@ snapshots: caniuse-lite@1.0.30001703: {} + ccount@2.0.1: {} + chai@5.2.0: dependencies: assertion-error: 2.0.1 @@ -14253,12 +14516,20 @@ snapshots: char-regex@1.0.2: {} + character-entities-html4@2.1.0: {} + character-entities-legacy@1.1.4: {} + character-entities-legacy@3.0.0: {} + character-entities@1.2.4: {} + character-entities@2.0.2: {} + character-reference-invalid@1.1.4: {} + character-reference-invalid@2.0.1: {} + chardet@0.7.0: {} check-error@2.1.1: {} @@ -14390,6 +14661,8 @@ snapshots: comma-separated-tokens@1.0.8: {} + comma-separated-tokens@2.0.3: {} + commander@10.0.1: {} commander@2.20.3: {} @@ -14664,6 +14937,10 @@ snapshots: decimal.js@10.5.0: {} + decode-named-character-reference@1.1.0: + dependencies: + character-entities: 2.0.2 + decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 @@ -14734,6 +15011,10 @@ snapshots: detect-node-es@1.1.0: {} + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + diff@4.0.2: {} diff@5.2.0: {} @@ -15414,6 +15695,8 @@ snapshots: estraverse@5.3.0: {} + estree-util-is-identifier-name@3.0.0: {} + estree-walker@2.0.2: {} estree-walker@3.0.3: @@ -15471,6 +15754,8 @@ snapshots: expect-type@1.2.1: {} + extend@3.0.2: {} + external-editor@3.1.0: dependencies: chardet: 0.7.0 @@ -15941,6 +16226,30 @@ snapshots: hast-util-parse-selector@2.2.5: {} + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.6 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.0.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.16 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + hastscript@6.0.0: dependencies: '@types/hast': 2.3.10 @@ -15986,6 +16295,8 @@ snapshots: html-escaper@2.0.2: {} + html-url-attributes@3.0.1: {} + http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -16081,6 +16392,8 @@ snapshots: ini@2.0.0: {} + inline-style-parser@0.2.4: {} + inquirer@7.3.3: dependencies: ansi-escapes: 4.3.2 @@ -16168,11 +16481,18 @@ snapshots: is-alphabetical@1.0.4: {} + is-alphabetical@2.0.1: {} + is-alphanumerical@1.0.4: dependencies: is-alphabetical: 1.0.4 is-decimal: 1.0.4 + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.8 @@ -16241,6 +16561,8 @@ snapshots: is-decimal@1.0.4: {} + is-decimal@2.0.1: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -16261,6 +16583,8 @@ snapshots: is-hexadecimal@1.0.4: {} + is-hexadecimal@2.0.1: {} + is-installed-globally@0.4.0: dependencies: global-dirs: 3.0.1 @@ -16673,6 +16997,8 @@ snapshots: long@5.2.3: {} + longest-streak@3.1.0: {} + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -16768,6 +17094,95 @@ snapshots: math-intrinsics@1.1.0: {} + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdurl@2.0.0: {} media-typer@0.3.0: {} @@ -16778,6 +17193,139 @@ snapshots: merge2@1.4.1: {} + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.0 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -17355,6 +17903,16 @@ snapshots: is-decimal: 1.0.4 is-hexadecimal: 1.0.4 + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.1.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + parse-json@4.0.0: dependencies: error-ex: 1.3.2 @@ -17590,6 +18148,8 @@ snapshots: dependencies: xtend: 4.0.2 + property-information@7.0.0: {} + prosemirror-changeset@2.2.1: dependencies: prosemirror-transform: 1.10.2 @@ -17829,6 +18389,24 @@ snapshots: react-is@18.3.1: {} + react-markdown@10.1.0(@types/react@19.1.2)(react@19.1.0): + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/react': 19.1.2 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.0 + react: 19.1.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.1 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + react-number-format@5.4.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: react: 19.1.0 @@ -18054,6 +18632,23 @@ snapshots: dependencies: rc: 1.2.8 + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 + remarkable@2.0.1: dependencies: argparse: 1.0.10 @@ -18529,6 +19124,8 @@ snapshots: space-separated-tokens@1.1.5: {} + space-separated-tokens@2.0.2: {} + spawn-error-forwarder@1.0.0: {} spdx-correct@3.2.0: @@ -18681,6 +19278,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -18703,6 +19305,14 @@ snapshots: strnum@1.0.5: {} + style-to-js@1.1.16: + dependencies: + style-to-object: 1.0.8 + + style-to-object@1.0.8: + dependencies: + inline-style-parser: 0.2.4 + styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.1.0): dependencies: client-only: 0.0.1 @@ -19062,8 +19672,12 @@ snapshots: node-gyp-build: 4.8.4 optional: true + trim-lines@3.0.1: {} + triple-beam@1.4.1: {} + trough@2.2.0: {} + trpc-to-openapi@2.2.0(@trpc/server@11.1.1(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3): dependencies: '@trpc/server': 11.1.1(typescript@5.8.3) @@ -19319,6 +19933,16 @@ snapshots: unicorn-magic@0.3.0: {} + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 @@ -19327,6 +19951,29 @@ snapshots: dependencies: crypto-random-string: 4.0.0 + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + universal-github-app-jwt@2.2.0: {} universal-user-agent@7.0.2: {} @@ -19469,6 +20116,16 @@ snapshots: vary@1.1.2: {} + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + victory-vendor@36.9.2: dependencies: '@types/d3-array': 3.2.1 @@ -19553,7 +20210,7 @@ snapshots: sugarss: 4.0.1(postcss@8.4.47) terser: 5.39.0 - vitest@3.1.2(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: '@vitest/expect': 3.1.2 '@vitest/mocker': 3.1.2(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) @@ -19577,6 +20234,7 @@ snapshots: vite-node: 3.1.2(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) why-is-node-running: 2.3.0 optionalDependencies: + '@types/debug': 4.1.12 '@types/node': 22.15.2 '@vitest/ui': 3.1.2(vitest@3.1.2) jsdom: 26.1.0 @@ -19887,3 +20545,5 @@ snapshots: zod: 3.24.3 zod@3.24.3: {} + + zwitch@2.0.4: {} From 8550c69d51497676b654e204a85cdc84e8a38e30 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Fri, 25 Apr 2025 18:58:55 +0000 Subject: [PATCH 38/38] feat: migrate to unifi package (#2894) --- .vscode/settings.json | 1 + apps/tasks/package.json | 2 +- apps/websocket/package.json | 2 +- packages/integrations/package.json | 2 + .../unifi-controller-integration.ts | 231 ++++-------------- .../unifi-controller-types.ts | 131 +--------- pnpm-lock.yaml | 106 ++++++++ 7 files changed, 166 insertions(+), 309 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 51d2500a1..f018a27b5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -26,6 +26,7 @@ "Sabnzbd", "SeDemal", "Sonarr", + "sslverify", "superjson", "tabler", "trpc", diff --git a/apps/tasks/package.json b/apps/tasks/package.json index cbf7791f1..ce39ff56d 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -10,7 +10,7 @@ "main": "./src/main.ts", "types": "./src/main.ts", "scripts": { - "build": "esbuild src/main.ts --bundle --platform=node --loader:.scss=text --external:@opentelemetry/api --outfile=tasks.cjs", + "build": "esbuild src/main.ts --bundle --platform=node --loader:.scss=text --external:@opentelemetry/api --external:http-cookie-agent --outfile=tasks.cjs", "clean": "rm -rf .turbo node_modules", "dev": "pnpm with-env tsx ./src/main.ts", "format": "prettier --check . --ignore-path ../../.gitignore", diff --git a/apps/websocket/package.json b/apps/websocket/package.json index 5d8c700fa..e7b8fafea 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -7,7 +7,7 @@ "main": "./src/main.ts", "types": "./src/main.ts", "scripts": { - "build": "esbuild src/main.ts --bundle --platform=node --outfile=wssServer.cjs --external:bcrypt --external:@opentelemetry/api --external:cpu-features --loader:.html=text --loader:.scss=text --loader:.node=text", + "build": "esbuild src/main.ts --bundle --platform=node --outfile=wssServer.cjs --external:bcrypt --external:@opentelemetry/api --external:http-cookie-agent --external:cpu-features --loader:.html=text --loader:.scss=text --loader:.node=text", "clean": "rm -rf .turbo node_modules", "dev": "pnpm with-env tsx ./src/main.ts", "format": "prettier --check . --ignore-path ../../.gitignore", diff --git a/packages/integrations/package.json b/packages/integrations/package.json index b3aa41a3c..c3f02434e 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -38,6 +38,7 @@ "@jellyfin/sdk": "^0.11.0", "maria2": "^0.4.0", "node-ical": "^0.20.1", + "node-unifi": "^2.5.1", "proxmox-api": "1.1.1", "tsdav": "^2.1.4", "undici": "7.8.0", @@ -48,6 +49,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", + "@types/node-unifi": "^2.5.1", "@types/xml2js": "^0.4.14", "eslint": "^9.25.1", "typescript": "^5.8.3" diff --git a/packages/integrations/src/unifi-controller/unifi-controller-integration.ts b/packages/integrations/src/unifi-controller/unifi-controller-integration.ts index 06e45adae..4d5233762 100644 --- a/packages/integrations/src/unifi-controller/unifi-controller-integration.ts +++ b/packages/integrations/src/unifi-controller/unifi-controller-integration.ts @@ -1,103 +1,78 @@ -import type z from "zod"; +import type { SiteStats } from "node-unifi"; +import { Controller } from "node-unifi"; -import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; -import { logger } from "@homarr/log"; - -import { ParseError } from "../base/error"; -import { Integration, throwErrorByStatusCode } from "../base/integration"; -import { IntegrationTestConnectionError } from "../base/test-connection-error"; +import { Integration } from "../base/integration"; import type { NetworkControllerSummaryIntegration } from "../interfaces/network-controller-summary/network-controller-summary-integration"; import type { NetworkControllerSummary } from "../interfaces/network-controller-summary/network-controller-summary-types"; -import { unifiSummaryResponseSchema } from "./unifi-controller-types"; - -const udmpPrefix = "proxy/network"; -type Subsystem = "www" | "wan" | "wlan" | "lan" | "vpn"; +import type { HealthSubsystem } from "./unifi-controller-types"; export class UnifiControllerIntegration extends Integration implements NetworkControllerSummaryIntegration { - private prefix: string | undefined; - public async getNetworkSummaryAsync(): Promise { - if (!this.headers) { - await this.authenticateAndConstructSessionInHeaderAsync(); - } - - const requestUrl = this.url(`/${this.prefix}/api/stat/sites`); - - const requestHeaders: Record = { - "Content-Type": "application/json", - ...this.headers, - }; - if (this.csrfToken) { - requestHeaders["X-CSRF-TOKEN"] = this.csrfToken; - } - - const statsResponse = await fetchWithTrustedCertificatesAsync(requestUrl, { - method: "GET", - headers: { - ...requestHeaders, - }, - }).catch((err: TypeError) => { - const detailMessage = String(err.cause); - throw new IntegrationTestConnectionError("invalidUrl", detailMessage); - }); - - if (!statsResponse.ok) { - throwErrorByStatusCode(statsResponse.status); - } - - const result = unifiSummaryResponseSchema.safeParse(await statsResponse.json()); - - if (!result.success) { - throw new ParseError("Unifi controller", result.error); - } + const client = await this.createControllerClientAsync(); + const stats = await client.getSitesStats(); return { - wanStatus: this.getStatusValueOverAllSites(result.data, "wan", (site) => site.status === "ok"), + wanStatus: this.getStatusValueOverAllSites(stats, "wan", (site) => site.status === "ok"), www: { - status: this.getStatusValueOverAllSites(result.data, "wan", (site) => site.status === "ok"), - latency: this.getNumericValueOverAllSites(result.data, "www", (site) => site.latency, "max"), - ping: this.getNumericValueOverAllSites(result.data, "www", (site) => site.speedtest_ping, "max"), - uptime: this.getNumericValueOverAllSites(result.data, "www", (site) => site.uptime, "max"), + status: this.getStatusValueOverAllSites(stats, "wan", (site) => site.status === "ok"), + latency: this.getNumericValueOverAllSites(stats, "www", (site) => site.latency, "max"), + ping: this.getNumericValueOverAllSites(stats, "www", (site) => site.speedtest_ping, "max"), + uptime: this.getNumericValueOverAllSites(stats, "www", (site) => site.uptime, "max"), }, wifi: { - status: this.getStatusValueOverAllSites(result.data, "wlan", (site) => site.status === "ok"), - users: this.getNumericValueOverAllSites(result.data, "wlan", (site) => site.num_user, "sum"), - guests: this.getNumericValueOverAllSites(result.data, "wlan", (site) => site.num_guest, "sum"), + status: this.getStatusValueOverAllSites(stats, "wlan", (site) => site.status === "ok"), + users: this.getNumericValueOverAllSites(stats, "wlan", (site) => site.num_user, "sum"), + guests: this.getNumericValueOverAllSites(stats, "wlan", (site) => site.num_guest, "sum"), }, lan: { - status: this.getStatusValueOverAllSites(result.data, "lan", (site) => site.status === "ok"), - users: this.getNumericValueOverAllSites(result.data, "lan", (site) => site.num_user, "sum"), - guests: this.getNumericValueOverAllSites(result.data, "lan", (site) => site.num_guest, "sum"), + status: this.getStatusValueOverAllSites(stats, "lan", (site) => site.status === "ok"), + users: this.getNumericValueOverAllSites(stats, "lan", (site) => site.num_user, "sum"), + guests: this.getNumericValueOverAllSites(stats, "lan", (site) => site.num_guest, "sum"), }, vpn: { - status: this.getStatusValueOverAllSites(result.data, "vpn", (site) => site.status === "ok"), - users: this.getNumericValueOverAllSites(result.data, "vpn", (site) => site.remote_user_num_active, "sum"), + status: this.getStatusValueOverAllSites(stats, "vpn", (site) => site.status === "ok"), + users: this.getNumericValueOverAllSites(stats, "vpn", (site) => site.remote_user_num_active, "sum"), }, } satisfies NetworkControllerSummary; } public async testConnectionAsync(): Promise { - await this.authenticateAndConstructSessionInHeaderAsync(); + const client = await this.createControllerClientAsync(); + await client.getSitesStats(); } - private getStatusValueOverAllSites( - data: z.infer, - subsystem: Subsystem, - selectCallback: (obj: z.infer["data"][number]["health"][number]) => boolean, + private async createControllerClientAsync() { + const portString = new URL(this.integration.url).port; + const port = Number.isInteger(portString) ? Number(portString) : undefined; + const hostname = new URL(this.integration.url).hostname; + + const client = new Controller({ + host: hostname, + // @ts-expect-error the URL construction is incorrect and does not append the required / at the end: https://github.com/jens-maus/node-unifi/blob/05665e8f82a900a15a9ea8b1071750b29825b3bc/unifi.js#L56, https://github.com/jens-maus/node-unifi/blob/05665e8f82a900a15a9ea8b1071750b29825b3bc/unifi.js#L95 + port: port === undefined ? "/" : `${port}/`, + sslverify: false, // TODO: implement a "ignore certificate toggle", see https://github.com/homarr-labs/homarr/issues/2553 + username: this.getSecretValue("username"), + password: this.getSecretValue("password"), + }); + + // Object.defineProperty(client, '_baseurl', { value: url }); + await client.login(this.getSecretValue("username"), this.getSecretValue("password"), null); + return client; + } + + private getStatusValueOverAllSites( + data: SiteStats[], + subsystem: S, + selectCallback: (obj: SiteStats["health"][number]) => boolean, ) { return this.getBooleanValueOverAllSites(data, subsystem, selectCallback) ? "enabled" : "disabled"; } private getNumericValueOverAllSites< - S extends Subsystem, - T extends Extract["data"][number]["health"][number], { subsystem: S }>, - >( - data: z.infer, - subsystem: S, - selectCallback: (obj: T) => number, - strategy: "average" | "sum" | "max", - ): number { - const values = data.data.map((site) => selectCallback(this.getSubsystem(site.health, subsystem) as T)); + S extends HealthSubsystem, + T extends Extract, + >(data: SiteStats[], subsystem: S, selectCallback: (obj: T) => number, strategy: "average" | "sum" | "max"): number { + const values = data.map((site) => selectCallback(this.getSubsystem(site.health, subsystem) as T)); if (strategy === "sum") { return values.reduce((first, second) => first + second, 0); @@ -111,118 +86,18 @@ export class UnifiControllerIntegration extends Integration implements NetworkCo } private getBooleanValueOverAllSites( - data: z.infer, - subsystem: Subsystem, - selectCallback: (obj: z.infer["data"][number]["health"][number]) => boolean, + data: SiteStats[], + subsystem: HealthSubsystem, + selectCallback: (obj: SiteStats["health"][number]) => boolean, ): boolean { - return data.data.every((site) => selectCallback(this.getSubsystem(site.health, subsystem))); + return data.every((site) => selectCallback(this.getSubsystem(site.health, subsystem))); } - private getSubsystem( - health: z.infer["data"][number]["health"], - subsystem: Subsystem, - ) { + private getSubsystem(health: SiteStats["health"], subsystem: HealthSubsystem) { const value = health.find((health) => health.subsystem === subsystem); if (!value) { throw new Error(`Subsystem ${subsystem} not found!`); } return value; } - - private headers: Record | undefined = undefined; - private csrfToken: string | undefined; - - private async authenticateAndConstructSessionInHeaderAsync(): Promise { - await this.determineUDMVariantAsync(); - await this.authenticateAndSetCookieAsync(); - } - - private async authenticateAndSetCookieAsync(): Promise { - if (this.headers) { - return; - } - - const endpoint = this.prefix === udmpPrefix ? "auth/login" : "login"; - logger.debug("Authenticating at network console: " + endpoint); - - const loginUrl = this.url(`/api/${endpoint}`); - - const loginBody = { - username: this.getSecretValue("username"), - password: this.getSecretValue("password"), - remember: true, - }; - - const requestHeaders: Record = { "Content-Type": "application/json" }; - if (this.csrfToken) { - requestHeaders["X-CSRF-TOKEN"] = this.csrfToken; - } - - const loginResponse = await fetchWithTrustedCertificatesAsync(loginUrl, { - method: "POST", - headers: { - ...requestHeaders, - }, - body: JSON.stringify(loginBody), - }).catch((err: TypeError) => { - const detailMessage = String(err.cause); - throw new IntegrationTestConnectionError("invalidUrl", detailMessage); - }); - - if (!loginResponse.ok) { - throwErrorByStatusCode(loginResponse.status); - } - - const responseHeaders = loginResponse.headers; - const newHeaders: Record = {}; - const loginToken = UnifiControllerIntegration.extractLoginTokenFromCookies(responseHeaders); - newHeaders.Cookie = `${loginToken};`; - this.headers = newHeaders; - } - - private async determineUDMVariantAsync(): Promise { - if (this.prefix) { - return; - } - - logger.debug("Prefix for authentication not set; initial connect to determine UDM variant"); - const url = this.url("/"); - - const { status, ok, headers } = await fetchWithTrustedCertificatesAsync(url, { method: "HEAD" }) - .then((res) => res) - .catch((err: TypeError) => { - const detailMessage = String(err.cause); - throw new IntegrationTestConnectionError("invalidUrl", detailMessage); - }); - - if (!ok) { - throw new IntegrationTestConnectionError("invalidUrl", "status code: " + status); - } - - let prefix = ""; - if (headers.get("x-csrf-token") !== null) { - // Unifi OS < 3.2.5 passes & requires csrf-token - prefix = udmpPrefix; - const headersCSRFToken = headers.get("x-csrf-token"); - if (headersCSRFToken) { - this.csrfToken = headersCSRFToken; - } - } else if (headers.get("access-control-expose-headers") !== null) { - // Unifi OS ≥ 3.2.5 doesnt pass csrf token but still uses different endpoint - prefix = udmpPrefix; - } - this.prefix = prefix; - logger.debug("Final prefix: " + this.prefix); - } - - private static extractLoginTokenFromCookies(headers: Headers): string { - const cookies = headers.get("set-cookie") ?? ""; - const loginToken = cookies.split(";").find((cookie) => cookie.includes("TOKEN")); - - if (loginToken) { - return loginToken; - } - - throw new Error("Login token not found in cookies"); - } } diff --git a/packages/integrations/src/unifi-controller/unifi-controller-types.ts b/packages/integrations/src/unifi-controller/unifi-controller-types.ts index cbca72820..bed6923b5 100644 --- a/packages/integrations/src/unifi-controller/unifi-controller-types.ts +++ b/packages/integrations/src/unifi-controller/unifi-controller-types.ts @@ -1,130 +1,3 @@ -import { z } from "zod"; +import type { SiteStats } from "node-unifi"; -export const healthSchema = z.discriminatedUnion("subsystem", [ - z.object({ - subsystem: z.literal("wlan"), - num_user: z.number(), - num_guest: z.number(), - num_iot: z.number(), - "tx_bytes-r": z.number(), - "rx_bytes-r": z.number(), - status: z.string(), - num_ap: z.number(), - num_adopted: z.number(), - num_disabled: z.number(), - num_disconnected: z.number(), - num_pending: z.number(), - }), - z.object({ - subsystem: z.literal("wan"), - num_gw: z.number(), - num_adopted: z.number(), - num_disconnected: z.number(), - num_pending: z.number(), - status: z.string(), - wan_ip: z.string().ip(), - gateways: z.array(z.string().ip()), - netmask: z.string().ip(), - nameservers: z.array(z.string().ip()).optional(), - num_sta: z.number(), - "tx_bytes-r": z.number(), - "rx_bytes-r": z.number(), - gw_mac: z.string(), - gw_name: z.string(), - "gw_system-stats": z.object({ - cpu: z.string(), - mem: z.string(), - uptime: z.string(), - }), - gw_version: z.string(), - isp_name: z.string(), - isp_organization: z.string(), - uptime_stats: z.object({ - WAN: z.object({ - alerting_monitors: z.array( - z.object({ - availability: z.number(), - latency_average: z.number(), - target: z.string(), - type: z.enum(["icmp", "dns"]), - }), - ), - availability: z.number(), - latency_average: z.number(), - monitors: z.array( - z.object({ - availability: z.number(), - latency_average: z.number(), - target: z.string(), - type: z.enum(["icmp", "dns"]), - }), - ), - time_period: z.number(), - uptime: z.number(), - }), - }), - }), - z.object({ - subsystem: z.literal("www"), - status: z.string(), - "tx_bytes-r": z.number(), - "rx_bytes-r": z.number(), - latency: z.number(), - uptime: z.number(), - drops: z.number(), - xput_up: z.number(), - xput_down: z.number(), - speedtest_status: z.string(), - speedtest_lastrun: z.number(), - speedtest_ping: z.number(), - gw_mac: z.string(), - }), - z.object({ - subsystem: z.literal("lan"), - lan_ip: z.string().ip().nullish(), - status: z.string(), - num_user: z.number(), - num_guest: z.number(), - num_iot: z.number(), - "tx_bytes-r": z.number(), - "rx_bytes-r": z.number(), - num_sw: z.number(), - num_adopted: z.number(), - num_disconnected: z.number(), - num_pending: z.number(), - }), - z.object({ - subsystem: z.literal("vpn"), - status: z.string(), - remote_user_enabled: z.boolean(), - remote_user_num_active: z.number(), - remote_user_num_inactive: z.number(), - remote_user_rx_bytes: z.number(), - remote_user_tx_bytes: z.number(), - remote_user_rx_packets: z.number(), - remote_user_tx_packets: z.number(), - site_to_site_enabled: z.boolean(), - }), -]); - -export type Health = z.infer; - -export const siteSchema = z.object({ - anonymous_id: z.string().uuid(), - name: z.string(), - external_id: z.string().uuid(), - _id: z.string(), - attr_no_delete: z.boolean(), - attr_hidden_id: z.string(), - desc: z.string(), - health: z.array(healthSchema), - num_new_alarms: z.number(), -}); -export type Site = z.infer; - -export const unifiSummaryResponseSchema = z.object({ - meta: z.object({ - rc: z.enum(["ok"]), - }), - data: z.array(siteSchema), -}); +export type HealthSubsystem = SiteStats["health"][number]["subsystem"]; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d043e25e..e97eeaf55 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1312,6 +1312,9 @@ importers: node-ical: specifier: ^0.20.1 version: 0.20.1 + node-unifi: + specifier: ^2.5.1 + version: 2.5.1(undici@7.8.0) proxmox-api: specifier: 1.1.1 version: 1.1.1 @@ -1337,6 +1340,9 @@ importers: '@homarr/tsconfig': specifier: workspace:^0.1.0 version: link:../../tooling/typescript + '@types/node-unifi': + specifier: ^2.5.1 + version: 2.5.1 '@types/xml2js': specifier: ^0.4.14 version: 0.4.14 @@ -4857,6 +4863,9 @@ packages: '@types/node-fetch@2.6.12': resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + '@types/node-unifi@2.5.1': + resolution: {integrity: sha512-NgZ7Q7k6CehvneroTcqeeJT3lcpQEAyntwF8XA6QFwHsNIo0ZC7Ba5d1kCmBkRZU7+oX6YDlCLflYbbzEJPvbg==} + '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} @@ -5388,6 +5397,9 @@ packages: resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} engines: {node: '>=4'} + axios@1.6.2: + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + axios@1.7.7: resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} @@ -6630,6 +6642,9 @@ packages: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} + eventemitter2@6.4.9: + resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} + eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -7146,6 +7161,19 @@ packages: html-url-attributes@3.0.1: resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + http-cookie-agent@5.0.4: + resolution: {integrity: sha512-OtvikW69RvfyP6Lsequ0fN5R49S+8QcS9zwd58k6VSr6r57T8G29BkPdyrBcSwLq6ExLs9V+rBlfxu7gDstJag==} + engines: {node: '>=14.18.0 <15.0.0 || >=16.0.0'} + peerDependencies: + deasync: ^0.1.26 + tough-cookie: ^4.0.0 + undici: ^5.11.0 + peerDependenciesMeta: + deasync: + optional: true + undici: + optional: true + http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -8343,6 +8371,10 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-unifi@2.5.1: + resolution: {integrity: sha512-mYLJFNKhONaXIFU2PeQ+p1fjr6C3q/Na8XyhZXpGalOArCAJLzpAoWl1rg9ZbmuJiVqwprqCq3u9Srn23CcpuA==} + engines: {node: '>=14.18.0 <15.0.0 || >=16.0.0'} + nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -8960,6 +8992,9 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} @@ -8967,6 +9002,9 @@ packages: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -10019,6 +10057,10 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + tough-cookie@5.0.0: resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} engines: {node: '>=16'} @@ -10339,6 +10381,10 @@ packages: universal-user-agent@7.0.2: resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -10397,6 +10443,10 @@ packages: url-toolkit@2.2.5: resolution: {integrity: sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==} + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -13587,6 +13637,10 @@ snapshots: '@types/node': 22.15.2 form-data: 4.0.1 + '@types/node-unifi@2.5.1': + dependencies: + eventemitter2: 6.4.9 + '@types/node@18.19.50': dependencies: undici-types: 5.26.5 @@ -14254,6 +14308,14 @@ snapshots: axe-core@4.10.0: {} + axios@1.6.2: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + axios@1.7.7: dependencies: follow-redirects: 1.15.9 @@ -15707,6 +15769,8 @@ snapshots: event-target-shim@5.0.1: {} + eventemitter2@6.4.9: {} + eventemitter3@4.0.7: {} events@3.3.0: {} @@ -16297,6 +16361,13 @@ snapshots: html-url-attributes@3.0.1: {} + http-cookie-agent@5.0.4(tough-cookie@4.1.4)(undici@7.8.0): + dependencies: + agent-base: 7.1.3 + tough-cookie: 4.1.4 + optionalDependencies: + undici: 7.8.0 + http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -17641,6 +17712,21 @@ snapshots: node-releases@2.0.19: {} + node-unifi@2.5.1(undici@7.8.0): + dependencies: + axios: 1.6.2 + eventemitter2: 6.4.9 + http-cookie-agent: 5.0.4(tough-cookie@4.1.4)(undici@7.8.0) + tough-cookie: 4.1.4 + url: 0.11.4 + ws: 8.18.1 + transitivePeerDependencies: + - bufferutil + - deasync + - debug + - undici + - utf-8-validate + nopt@5.0.0: dependencies: abbrev: 1.1.1 @@ -18289,6 +18375,10 @@ snapshots: proxy-from-env@1.1.0: {} + psl@1.15.0: + dependencies: + punycode: 2.3.1 + pump@3.0.2: dependencies: end-of-stream: 1.4.4 @@ -18296,6 +18386,8 @@ snapshots: punycode.js@2.3.1: {} + punycode@1.4.1: {} + punycode@2.3.1: {} pupa@2.1.1: @@ -19640,6 +19732,13 @@ snapshots: totalist@3.0.1: {} + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + tough-cookie@5.0.0: dependencies: tldts: 6.1.69 @@ -19978,6 +20077,8 @@ snapshots: universal-user-agent@7.0.2: {} + universalify@0.2.0: {} + universalify@2.0.1: {} unpipe@1.0.0: {} @@ -20048,6 +20149,11 @@ snapshots: url-toolkit@2.2.5: {} + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.13.1 + use-callback-ref@1.3.3(@types/react@19.1.2)(react@19.1.0): dependencies: react: 19.1.0