From 219a6adeddbb62cbac27891772d93fad60f35124 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 02:15:25 +0000 Subject: [PATCH 01/48] chore(deps): update dependency @types/node to ^22.9.2 (#1526) 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 | 793 +++++---------------------------------- 3 files changed, 97 insertions(+), 700 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index abf9adb01..c9f4e6b2a 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -80,7 +80,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "2.4.4", - "@types/node": "^22.9.1", + "@types/node": "^22.9.2", "@types/prismjs": "^1.26.5", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", diff --git a/apps/tasks/package.json b/apps/tasks/package.json index c2b7cfb8b..2cd6d8262 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.9.1", + "@types/node": "^22.9.2", "dotenv-cli": "^7.4.4", "eslint": "^9.15.0", "prettier": "^3.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f2916ee0d..0f5b660d6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,10 +18,10 @@ importers: version: link:tooling/prettier '@turbo/gen': specifier: ^2.3.1 - version: 2.3.1(@types/node@22.9.1)(typescript@5.6.3) + version: 2.3.1(@types/node@22.9.2)(typescript@5.6.3) '@vitejs/plugin-react': specifier: ^4.3.3 - version: 4.3.3(vite@5.4.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 4.3.3(vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': specifier: ^2.1.5 version: 2.1.5(vitest@2.1.5) @@ -48,10 +48,10 @@ importers: version: 5.6.3 vite-tsconfig-paths: specifier: ^5.1.3 - version: 5.1.3(typescript@5.6.3)(vite@5.4.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 5.1.3(typescript@5.6.3)(vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.1)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + version: 2.1.5(@types/node@22.9.2)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) apps/nextjs: dependencies: @@ -156,16 +156,16 @@ importers: version: 5.61.0(@tanstack/react-query@5.61.0(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) '@trpc/client': specifier: next - version: 11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)) + version: 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3) '@trpc/next': specifier: next - version: 11.0.0-rc.638(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)))(@trpc/react-query@11.0.0-rc.638(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)))(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.638(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)))(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@trpc/server': specifier: next - version: 11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + version: 11.0.0-rc.643(typescript@5.6.3) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -246,8 +246,8 @@ importers: specifier: 2.4.4 version: 2.4.4 '@types/node': - specifier: ^22.9.1 - version: 22.9.1 + specifier: ^22.9.2 + version: 22.9.2 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 @@ -346,8 +346,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^22.9.1 - version: 22.9.1 + specifier: ^22.9.2 + version: 22.9.2 dotenv-cli: specifier: ^7.4.4 version: 7.4.4 @@ -505,13 +505,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)) + version: 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.638(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)))(@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@trpc/server': specifier: next - version: 11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + version: 11.0.0-rc.643(typescript@5.6.3) dockerode: specifier: ^4.0.2 version: 4.0.2 @@ -526,7 +526,7 @@ importers: version: 2.2.1 trpc-swagger: specifier: ^1.2.6 - version: 1.2.6(patch_hash=6s72z7zx33c52iesv5sewipn6i)(@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)))(@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(zod@3.23.8) + version: 1.2.6(patch_hash=6s72z7zx33c52iesv5sewipn6i)(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(zod@3.23.8) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -2759,22 +2759,10 @@ packages: resolution: {integrity: sha512-USRVpGw4fWlnz8O8gB95UDJJaU5wg2EFESDe9nut0mHFJ8bOxDKGoo3g6EaKU24YzaPUBweKENdEJfuTUgr/uA==} engines: {node: '>= 18'} - '@fastify/ajv-compiler@4.0.1': - resolution: {integrity: sha512-DxrBdgsjNLP0YM6W5Hd6/Fmj43S8zMKiFJYgi+Ri3htTGAowPVG/tG1wpnWLMjufEnehRivUCKZ1pLDIoZdTuw==} - '@fastify/busboy@2.1.1': resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@fastify/error@4.0.0': - resolution: {integrity: sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA==} - - '@fastify/fast-json-stringify-compiler@5.0.1': - resolution: {integrity: sha512-f2d3JExJgFE3UbdFcpPwqNUEoHWmt8pAKf8f+9YuLESdefA0WgqxeT6DrGL4Yrf/9ihXNSKOqpjEmurV405meA==} - - '@fastify/merge-json-schemas@0.1.1': - resolution: {integrity: sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==} - '@floating-ui/core@1.6.8': resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} @@ -3631,38 +3619,43 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trpc/client@11.0.0-rc.638': - resolution: {integrity: sha512-zKOZZwUMcF4cvm04aawG7dP6M9dCs7FEWHuiBy7xmU+RIonsgpolLMRXm7bFie5EhQOGizhLRGnhneGwjNzWMA==} + '@trpc/client@11.0.0-rc.643': + resolution: {integrity: sha512-Y7coaGHPxnzW9nZrigXInjSw3QoQ2IOIBnBaalC4m5B0Tt72j3UTc4gnELKDWxD/u3tRV7EoSnf8MvFhNsuDHA==} peerDependencies: - '@trpc/server': 11.0.0-rc.638+09a76869e + '@trpc/server': 11.0.0-rc.643+0914e43c5 + typescript: '>=5.6.2' - '@trpc/next@11.0.0-rc.638': - resolution: {integrity: sha512-f02/WcSzoW7/pP5fQr5k3q+4Q5iuQutC+NGJdYVH0W4RZjbSTfg0ME5M/AduZBS3OmxhXBmIIfJ5KKJ4DfdFVg==} + '@trpc/next@11.0.0-rc.643': + resolution: {integrity: sha512-etjsk9BHwi4sRGw2vjzWJZer5d5RpsOIwZX2rLqaPjOyyh5QtiVpHjL1G62tote/40nghvIQ2+GNyNj8RBUgjQ==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.638+09a76869e - '@trpc/react-query': 11.0.0-rc.638+09a76869e - '@trpc/server': 11.0.0-rc.638+09a76869e + '@trpc/client': 11.0.0-rc.643+0914e43c5 + '@trpc/react-query': 11.0.0-rc.643+0914e43c5 + '@trpc/server': 11.0.0-rc.643+0914e43c5 next: 15.0.3 react: '>=16.8.0' react-dom: '>=16.8.0' + typescript: '>=5.6.2' peerDependenciesMeta: '@tanstack/react-query': optional: true '@trpc/react-query': optional: true - '@trpc/react-query@11.0.0-rc.638': - resolution: {integrity: sha512-DiNfWXQ6FEedUbn9YzxSlIeAv17mYHUwUMPdQBgcvfWBviNQZoeyXWAsjq9LD+DVsfNfmcS6aSD+Y4KG4P4lcA==} + '@trpc/react-query@11.0.0-rc.643': + resolution: {integrity: sha512-uLXdWprp2IgpxSpUaAKBRgge0vzVlDCS9F4ivG+LErUM05+hAOMS2iVeNDyR4uvVfdYj9i2nNeGB+7lmZDT2Ww==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.638+09a76869e - '@trpc/server': 11.0.0-rc.638+09a76869e + '@trpc/client': 11.0.0-rc.643+0914e43c5 + '@trpc/server': 11.0.0-rc.643+0914e43c5 react: '>=18.2.0' react-dom: '>=18.2.0' + typescript: '>=5.6.2' - '@trpc/server@11.0.0-rc.638': - resolution: {integrity: sha512-ho3sRx66UuncKTtuy7UKbYP8IB4qaPj2gmdDIIdQOftta1oYzEsQuYiBozQAIAmX9TbV5FaqAdBUl2alFBSbdg==} + '@trpc/server@11.0.0-rc.643': + resolution: {integrity: sha512-w8qPtnbvKF441erzLjDX55AcgrC+5wXT3VCyBp8HMCUKJS4Q7LSEmig02Kva+gJ3E6cYTahsQFTDWaVnr26YZA==} + peerDependencies: + typescript: '>=5.6.2' '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -3690,9 +3683,6 @@ packages: '@types/asn1@0.2.4': resolution: {integrity: sha512-V91DSJ2l0h0gRhVP4oBfBzRBN9lAbPUkGDMCnwedqPKX2d84aAMc9CulOvxdw1f7DfEYx99afab+Rsm3e52jhA==} - '@types/aws-lambda@8.10.145': - resolution: {integrity: sha512-dtByW6WiFk5W5Jfgz1VM+YPA21xMXTuSFoLYIDY0L44jDLLflVPtZkYuu3/YxpGcvjzKFBZLU+GyKjR0HOYtyw==} - '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -3792,8 +3782,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.9.1': - resolution: {integrity: sha512-p8Yy/8sw1caA8CdRIQBG5tiLHmxtQKObCijiAa9Ez+d4+PRffM4054xbju0msf+cvhJpnFEeNjxmVT/0ipktrg==} + '@types/node@22.9.2': + resolution: {integrity: sha512-wwuxAVEbsRvDD9x7buvAl7DyQ7Oj+va/d/Veug7higYzp9MF0CINbfWTBgDFMpcVwcdUiYuNmX2KfnvY3N70mw==} '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -4070,9 +4060,6 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} - abstract-logging@2.0.1: - resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} - accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -4111,14 +4098,6 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} - ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - ajv-keywords@3.5.2: resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -4127,9 +4106,6 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -4193,9 +4169,6 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - array-includes@3.1.8: resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} @@ -4259,10 +4232,6 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - autolinker@3.16.2: resolution: {integrity: sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==} @@ -4270,9 +4239,6 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - avvio@9.1.0: - resolution: {integrity: sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==} - aws-ssl-profiles@1.1.2: resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==} engines: {node: '>= 6.0.0'} @@ -4346,10 +4312,6 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - boxen@5.1.2: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} engines: {node: '>=10'} @@ -4615,16 +4577,9 @@ packages: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - cookie@0.7.1: resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} @@ -4738,14 +4693,6 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -4830,10 +4777,6 @@ packages: destr@2.0.3: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} @@ -5017,9 +4960,6 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - effect@3.9.2: resolution: {integrity: sha512-1sx/v1HTWHTodXfzWxAFg+SCF+ACgpJVruaAMIh/NmDVvrUsf0x9PzpXvkgJUbQ1fMdmKYK//FqxeHSQ+Zxv/Q==} @@ -5042,14 +4982,6 @@ packages: enabled@2.0.0: resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} @@ -5140,9 +5072,6 @@ packages: resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} engines: {node: '>=8'} - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -5285,10 +5214,6 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -5309,17 +5234,10 @@ packages: resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} engines: {node: '>=12.0.0'} - express@4.21.1: - resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} - engines: {node: '>= 0.10.0'} - external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} - fast-decode-uri-component@1.0.1: - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -5336,25 +5254,9 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-json-stringify@6.0.0: - resolution: {integrity: sha512-FGMKZwniMTgZh7zQp9b6XnBVxUmKVahQLQeRQHqwYmPDqDhcEKZ3BaQsxelFFI5PY7nN71OEeiL47/zUWcYe1A==} - fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - - fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - - fast-uri@2.4.0: - resolution: {integrity: sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==} - - fast-uri@3.0.3: - resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} - fast-xml-parser@4.5.0: resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==} hasBin: true @@ -5365,9 +5267,6 @@ packages: peerDependencies: '@babel/types': ^7 - fastify@5.1.0: - resolution: {integrity: sha512-0SdUC5AoiSgMSc2Vxwv3WyKzyGMDJRAW/PgNsK1kZrnkO6MeqUIW9ovVg9F2UGIqtIcclYMyeJa4rK6OZc7Jxg==} - fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -5409,14 +5308,6 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - - find-my-way@9.1.0: - resolution: {integrity: sha512-Y5jIsuYR4BwWDYYQ2A/RWWE6gD8a0FMgtU+HOq1WKku+Cwdz8M1v8wcAmRXXM1/iqtoqg06v+LjAxMYbCjViMw==} - engines: {node: '>=14'} - find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -5458,10 +5349,6 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -5792,10 +5679,6 @@ packages: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} @@ -6083,15 +5966,9 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-ref-resolver@1.0.1: - resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -6144,9 +6021,6 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - light-my-request@6.3.0: - resolution: {integrity: sha512-bWTAPJmeWQH5suJNYwG0f5cs0p6ho9e6f1Ppoxv5qMosY+s9Ir2+ZLvvHcgA7VTDop4zl/NCHhOVVqU+kd++Ow==} - linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} @@ -6386,9 +6260,6 @@ packages: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -6615,14 +6486,6 @@ packages: ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} - on-exit-leak-free@2.1.2: - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} - engines: {node: '>=14.0.0'} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -6739,9 +6602,6 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} - path-to-regexp@0.1.10: - resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -6770,16 +6630,6 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} - pino-abstract-transport@2.0.0: - resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} - - pino-std-serializers@7.0.0: - resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - - pino@9.5.0: - resolution: {integrity: sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==} - hasBin: true - piscina@4.6.1: resolution: {integrity: sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==} @@ -6880,9 +6730,6 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - process-warning@4.0.0: - resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==} - process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -6961,10 +6808,6 @@ packages: proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - proxy-agent@6.4.0: resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} engines: {node: '>= 14'} @@ -7000,9 +6843,6 @@ packages: queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - ramda-adjunct@5.1.0: resolution: {integrity: sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==} engines: {node: '>=0.10.3'} @@ -7168,10 +7008,6 @@ packages: resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} engines: {node: '>= 14.16.0'} - real-require@0.2.0: - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} - engines: {node: '>= 12.13.0'} - recast@0.23.9: resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} engines: {node: '>= 4'} @@ -7237,10 +7073,6 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -7270,10 +7102,6 @@ packages: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} - ret@0.5.0: - resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==} - engines: {node: '>=10'} - retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} @@ -7285,9 +7113,6 @@ packages: rfc4648@1.5.3: resolution: {integrity: sha512-MjOWxM065+WswwnmNONOT+bD1nXzY9Km6u3kzvnx8F8/HXGZdz3T6e6vZJ8Q/RIMUSp/nxqjH3GwvJDy8ijeQQ==} - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -7347,9 +7172,6 @@ packages: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} - safe-regex2@4.0.0: - resolution: {integrity: sha512-Hvjfv25jPDVr3U+4LDzBuZPPOymELG3PYcSk5hcevooo1yxxamQL/bHs/GrEPGmMoMEwRrHVGiCA1pXi97B8Ew==} - safe-stable-stringify@2.5.0: resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} engines: {node: '>=10'} @@ -7376,9 +7198,6 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - semver-diff@3.1.1: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} engines: {node: '>=8'} @@ -7397,10 +7216,6 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - sentence-case@2.1.1: resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} @@ -7414,16 +7229,9 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -7511,9 +7319,6 @@ packages: resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - sonic-boom@4.2.0: - resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} - source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -7531,10 +7336,6 @@ packages: split-ca@1.0.1: resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==} - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -7759,9 +7560,6 @@ packages: text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - thread-stream@3.1.0: - resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} - through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -7825,10 +7623,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toad-cache@3.7.0: - resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} - engines: {node: '>=12'} - toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} @@ -8178,10 +7972,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - uuid@10.0.0: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true @@ -8201,10 +7991,6 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - video.js@8.19.1: resolution: {integrity: sha512-MVuayhXpzTBv5Jk3nYEU2akawPhuBBlizEbpQGx2i+6FiBmqxGjkrkLdDLOzG54ut7xapjp26IfWQLGSpeLmcQ==} @@ -9296,28 +9082,8 @@ snapshots: transitivePeerDependencies: - encoding - '@fastify/ajv-compiler@4.0.1': - dependencies: - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - fast-uri: 3.0.3 - optional: true - '@fastify/busboy@2.1.1': {} - '@fastify/error@4.0.0': - optional: true - - '@fastify/fast-json-stringify-compiler@5.0.1': - dependencies: - fast-json-stringify: 6.0.0 - optional: true - - '@fastify/merge-json-schemas@0.1.1': - dependencies: - fast-deep-equal: 3.1.3 - optional: true - '@floating-ui/core@1.6.8': dependencies: '@floating-ui/utils': 0.2.8 @@ -10406,78 +10172,35 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))': + '@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3)': dependencies: - '@trpc/server': 11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + '@trpc/server': 11.0.0-rc.643(typescript@5.6.3) + typescript: 5.6.3 - '@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))': + '@trpc/next@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@trpc/server': 11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) - - '@trpc/next@11.0.0-rc.638(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)))(@trpc/react-query@11.0.0-rc.638(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)))(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@trpc/client': 11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)) - '@trpc/server': 11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3) + '@trpc/server': 11.0.0-rc.643(typescript@5.6.3) next: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + typescript: 5.6.3 optionalDependencies: '@tanstack/react-query': 5.61.0(react@18.3.1) - '@trpc/react-query': 11.0.0-rc.638(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)))(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@trpc/react-query': 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@trpc/react-query@11.0.0-rc.638(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)))(@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: '@tanstack/react-query': 5.61.0(react@18.3.1) - '@trpc/client': 11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)) - '@trpc/server': 11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3) + '@trpc/server': 11.0.0-rc.643(typescript@5.6.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + typescript: 5.6.3 - '@trpc/react-query@11.0.0-rc.638(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)))(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@trpc/server@11.0.0-rc.643(typescript@5.6.3)': dependencies: - '@tanstack/react-query': 5.61.0(react@18.3.1) - '@trpc/client': 11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)) - '@trpc/server': 11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)': - optionalDependencies: - '@types/aws-lambda': 8.10.145 - express: 4.21.1 - fastify: 5.1.0 - next: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) - ws: 8.18.0 - transitivePeerDependencies: - - '@babel/core' - - '@opentelemetry/api' - - '@playwright/test' - - babel-plugin-macros - - bufferutil - - react - - react-dom - - sass - - supports-color - - utf-8-validate - - '@trpc/server@11.0.0-rc.638(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)': - optionalDependencies: - '@types/aws-lambda': 8.10.145 - express: 4.21.1 - fastify: 5.1.0 - next: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) - ws: 8.18.0 - transitivePeerDependencies: - - '@babel/core' - - '@opentelemetry/api' - - '@playwright/test' - - babel-plugin-macros - - bufferutil - - react - - react-dom - - sass - - supports-color - - utf-8-validate + typescript: 5.6.3 '@tsconfig/node10@1.0.11': {} @@ -10489,7 +10212,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.3.1(@types/node@22.9.1)(typescript@5.6.3)': + '@turbo/gen@2.3.1(@types/node@22.9.2)(typescript@5.6.3)': dependencies: '@turbo/workspaces': 2.3.1 commander: 10.0.1 @@ -10499,7 +10222,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.4.0 - ts-node: 10.9.2(@types/node@22.9.1)(typescript@5.6.3) + ts-node: 10.9.2(@types/node@22.9.2)(typescript@5.6.3) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -10526,10 +10249,7 @@ snapshots: '@types/asn1@0.2.4': dependencies: - '@types/node': 22.9.1 - - '@types/aws-lambda@8.10.145': - optional: true + '@types/node': 22.9.2 '@types/babel__core@7.20.5': dependencies: @@ -10554,22 +10274,22 @@ snapshots: '@types/bcrypt@5.0.2': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/better-sqlite3@7.6.12': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/chroma-js@2.4.4': {} '@types/connect@3.4.38': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/cookie@0.6.0': {} @@ -10578,7 +10298,7 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/css-font-loading-module@0.0.7': {} @@ -10586,13 +10306,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.32': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/ssh2': 1.15.1 '@types/estree@1.0.5': {} @@ -10601,7 +10321,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -10616,7 +10336,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/hast@2.3.10': dependencies: @@ -10654,7 +10374,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@22.9.1': + '@types/node@22.9.2': dependencies: undici-types: 6.19.8 @@ -10682,21 +10402,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/ssh2@0.5.52': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -10709,7 +10429,7 @@ snapshots: '@types/through@0.0.33': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/tinycolor2@1.4.6': {} @@ -10725,11 +10445,11 @@ snapshots: '@types/ws@8.5.13': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@typescript-eslint/eslint-plugin@8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0)(typescript@5.6.3)': dependencies: @@ -10843,14 +10563,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.3.3(vite@5.4.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitejs/plugin-react@4.3.3(vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -10868,7 +10588,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.5(@types/node@22.9.1)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.5(@types/node@22.9.2)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -10879,13 +10599,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.5(vite@5.4.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitest/mocker@2.1.5(vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@vitest/spy': 2.1.5 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/pretty-format@2.1.5': dependencies: @@ -10915,7 +10635,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.5(@types/node@22.9.1)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.5(@types/node@22.9.2)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/utils@2.1.5': dependencies: @@ -11023,9 +10743,6 @@ snapshots: dependencies: event-target-shim: 5.0.1 - abstract-logging@2.0.1: - optional: true - accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -11069,11 +10786,6 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv-formats@3.0.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - optional: true - ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 @@ -11085,14 +10797,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - optional: true - ansi-align@3.0.1: dependencies: string-width: 4.2.3 @@ -11159,9 +10863,6 @@ snapshots: call-bind: 1.0.7 is-array-buffer: 3.0.4 - array-flatten@1.1.1: - optional: true - array-includes@3.1.8: dependencies: call-bind: 1.0.7 @@ -11250,9 +10951,6 @@ snapshots: asynckit@0.4.0: {} - atomic-sleep@1.0.0: - optional: true - autolinker@3.16.2: dependencies: tslib: 2.7.0 @@ -11261,12 +10959,6 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - avvio@9.1.0: - dependencies: - '@fastify/error': 4.0.0 - fastq: 1.17.1 - optional: true - aws-ssl-profiles@1.1.2: {} axe-core@4.10.0: {} @@ -11350,24 +11042,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - body-parser@1.20.3: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - optional: true - boxen@5.1.2: dependencies: ansi-align: 3.0.1 @@ -11660,14 +11334,8 @@ snapshots: dependencies: safe-buffer: 5.2.1 - content-type@1.0.5: - optional: true - convert-source-map@2.0.0: {} - cookie-signature@1.0.6: - optional: true - cookie@0.7.1: {} cookie@0.7.2: {} @@ -11777,11 +11445,6 @@ snapshots: dayjs@1.11.13: {} - debug@2.6.9: - dependencies: - ms: 2.0.0 - optional: true - debug@3.2.7: dependencies: ms: 2.1.3 @@ -11851,9 +11514,6 @@ snapshots: destr@2.0.3: {} - destroy@1.2.0: - optional: true - detect-libc@1.0.3: optional: true @@ -11963,9 +11623,6 @@ snapshots: eastasianwidth@0.2.0: {} - ee-first@1.1.1: - optional: true - effect@3.9.2: {} electron-to-chromium@1.5.23: {} @@ -11980,12 +11637,6 @@ snapshots: enabled@2.0.0: {} - encodeurl@1.0.2: - optional: true - - encodeurl@2.0.0: - optional: true - end-of-stream@1.4.4: dependencies: once: 1.4.0 @@ -12246,9 +11897,6 @@ snapshots: escape-goat@2.1.1: {} - escape-html@1.0.3: - optional: true - escape-string-regexp@1.0.5: {} escape-string-regexp@4.0.0: {} @@ -12448,9 +12096,6 @@ snapshots: esutils@2.0.3: {} - etag@1.8.1: - optional: true - event-target-shim@5.0.1: {} events@3.3.0: {} @@ -12471,52 +12116,12 @@ snapshots: expect-type@1.1.0: {} - express@4.21.1: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.10 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - optional: true - external-editor@3.1.0: dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - fast-decode-uri-component@1.0.1: - optional: true - fast-deep-equal@3.1.3: {} fast-fifo@1.3.2: {} @@ -12533,33 +12138,8 @@ snapshots: fast-json-stable-stringify@2.1.0: {} - fast-json-stringify@6.0.0: - dependencies: - '@fastify/merge-json-schemas': 0.1.1 - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - fast-deep-equal: 3.1.3 - fast-uri: 2.4.0 - json-schema-ref-resolver: 1.0.1 - rfdc: 1.4.1 - optional: true - fast-levenshtein@2.0.6: {} - fast-querystring@1.1.2: - dependencies: - fast-decode-uri-component: 1.0.1 - optional: true - - fast-redact@3.5.0: - optional: true - - fast-uri@2.4.0: - optional: true - - fast-uri@3.0.3: - optional: true - fast-xml-parser@4.5.0: dependencies: strnum: 1.0.5 @@ -12568,25 +12148,6 @@ snapshots: dependencies: '@babel/types': 7.26.0 - fastify@5.1.0: - dependencies: - '@fastify/ajv-compiler': 4.0.1 - '@fastify/error': 4.0.0 - '@fastify/fast-json-stringify-compiler': 5.0.1 - abstract-logging: 2.0.1 - avvio: 9.1.0 - fast-json-stringify: 6.0.0 - find-my-way: 9.1.0 - light-my-request: 6.3.0 - pino: 9.5.0 - process-warning: 4.0.0 - proxy-addr: 2.0.7 - rfdc: 1.4.1 - secure-json-parse: 2.7.0 - semver: 7.6.3 - toad-cache: 3.7.0 - optional: true - fastq@1.17.1: dependencies: reusify: 1.0.4 @@ -12621,26 +12182,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - optional: true - - find-my-way@9.1.0: - dependencies: - fast-deep-equal: 3.1.3 - fast-querystring: 1.1.2 - safe-regex2: 4.0.0 - optional: true - find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -12676,9 +12217,6 @@ snapshots: format@0.2.2: {} - forwarded@0.2.0: - optional: true - fresh@0.5.2: {} fs-constants@1.0.0: {} @@ -13070,9 +12608,6 @@ snapshots: jsbn: 1.1.0 sprintf-js: 1.1.3 - ipaddr.js@1.9.1: - optional: true - is-alphabetical@1.0.4: {} is-alphanumerical@1.0.4: @@ -13285,7 +12820,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -13347,16 +12882,8 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-schema-ref-resolver@1.0.1: - dependencies: - fast-deep-equal: 3.1.3 - optional: true - json-schema-traverse@0.4.1: {} - json-schema-traverse@1.0.0: - optional: true - json-stable-stringify-without-jsonify@1.0.1: {} json5@1.0.2: @@ -13416,13 +12943,6 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - light-my-request@6.3.0: - dependencies: - cookie: 1.0.1 - process-warning: 4.0.0 - set-cookie-parser: 2.7.1 - optional: true - linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 @@ -13644,9 +13164,6 @@ snapshots: mrmime@2.0.0: {} - ms@2.0.0: - optional: true - ms@2.1.3: {} mute-stream@0.0.8: {} @@ -13811,7 +13328,7 @@ snapshots: node-mocks-http@1.16.0: dependencies: '@types/express': 4.17.21 - '@types/node': 22.9.1 + '@types/node': 22.9.2 accepts: 1.3.8 content-disposition: 0.5.4 depd: 1.1.2 @@ -13906,14 +13423,6 @@ snapshots: node-fetch-native: 1.6.4 ufo: 1.5.4 - on-exit-leak-free@2.1.2: - optional: true - - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - optional: true - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -14058,9 +13567,6 @@ snapshots: lru-cache: 11.0.1 minipass: 7.1.2 - path-to-regexp@0.1.10: - optional: true - path-type@4.0.0: {} pathe@1.1.2: {} @@ -14077,29 +13583,6 @@ snapshots: picomatch@4.0.2: {} - pino-abstract-transport@2.0.0: - dependencies: - split2: 4.2.0 - optional: true - - pino-std-serializers@7.0.0: - optional: true - - pino@9.5.0: - dependencies: - atomic-sleep: 1.0.0 - fast-redact: 3.5.0 - on-exit-leak-free: 2.1.2 - pino-abstract-transport: 2.0.0 - pino-std-serializers: 7.0.0 - process-warning: 4.0.0 - quick-format-unescaped: 4.0.4 - real-require: 0.2.0 - safe-stable-stringify: 2.5.0 - sonic-boom: 4.2.0 - thread-stream: 3.1.0 - optional: true - piscina@4.6.1: optionalDependencies: nice-napi: 1.0.2 @@ -14199,9 +13682,6 @@ snapshots: process-nextick-args@2.0.1: {} - process-warning@4.0.0: - optional: true - process@0.11.10: {} prop-types@15.8.1: @@ -14329,12 +13809,6 @@ snapshots: proto-list@1.2.4: {} - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - optional: true - proxy-agent@6.4.0: dependencies: agent-base: 7.1.1 @@ -14373,9 +13847,6 @@ snapshots: queue-tick@1.0.1: {} - quick-format-unescaped@4.0.4: - optional: true - ramda-adjunct@5.1.0(ramda@0.30.1): dependencies: ramda: 0.30.1 @@ -14557,9 +14028,6 @@ snapshots: readdirp@4.0.1: {} - real-require@0.2.0: - optional: true - recast@0.23.9: dependencies: ast-types: 0.16.1 @@ -14633,9 +14101,6 @@ snapshots: require-directory@2.1.1: {} - require-from-string@2.0.2: - optional: true - requires-port@1.0.0: {} reselect@5.1.1: {} @@ -14663,18 +14128,12 @@ snapshots: ret@0.2.2: {} - ret@0.5.0: - optional: true - retry@0.12.0: {} reusify@1.0.4: {} rfc4648@1.5.3: {} - rfdc@1.4.1: - optional: true - rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -14762,11 +14221,6 @@ snapshots: es-errors: 1.3.0 is-regex: 1.1.4 - safe-regex2@4.0.0: - dependencies: - ret: 0.5.0 - optional: true - safe-stable-stringify@2.5.0: {} safer-buffer@2.1.2: {} @@ -14795,9 +14249,6 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - secure-json-parse@2.7.0: - optional: true - semver-diff@3.1.1: dependencies: semver: 6.3.1 @@ -14808,25 +14259,6 @@ snapshots: semver@7.6.3: {} - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - optional: true - sentence-case@2.1.1: dependencies: no-case: 2.3.2 @@ -14842,21 +14274,8 @@ snapshots: dependencies: randombytes: 2.1.0 - serve-static@1.16.2: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - optional: true - set-blocking@2.0.0: {} - set-cookie-parser@2.7.1: - optional: true - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -14962,11 +14381,6 @@ snapshots: ip-address: 9.0.5 smart-buffer: 4.2.0 - sonic-boom@4.2.0: - dependencies: - atomic-sleep: 1.0.0 - optional: true - source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -14980,9 +14394,6 @@ snapshots: split-ca@1.0.1: {} - split2@4.2.0: - optional: true - sprintf-js@1.0.3: {} sprintf-js@1.1.3: {} @@ -15314,11 +14725,6 @@ snapshots: text-hex@1.0.0: {} - thread-stream@3.1.0: - dependencies: - real-require: 0.2.0 - optional: true - through@2.3.8: {} tiny-invariant@1.3.3: {} @@ -15372,9 +14778,6 @@ snapshots: dependencies: is-number: 7.0.0 - toad-cache@3.7.0: - optional: true - toggle-selection@1.0.6: {} toidentifier@1.0.1: {} @@ -15411,10 +14814,10 @@ snapshots: triple-beam@1.4.1: {} - trpc-swagger@1.2.6(patch_hash=6s72z7zx33c52iesv5sewipn6i)(@trpc/client@11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)))(@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(zod@3.23.8): + trpc-swagger@1.2.6(patch_hash=6s72z7zx33c52iesv5sewipn6i)(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(zod@3.23.8): dependencies: - '@trpc/client': 11.0.0-rc.638(@trpc/server@11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0)) - '@trpc/server': 11.0.0-rc.638(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3) + '@trpc/server': 11.0.0-rc.643(typescript@5.6.3) chalk-scripts: 1.2.8 co-body: 6.2.0 lodash.clonedeep: 4.5.0 @@ -15429,14 +14832,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.9.1)(typescript@5.6.3): + ts-node@10.9.2(@types/node@22.9.2)(typescript@5.6.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.9.1 + '@types/node': 22.9.2 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -15722,9 +15125,6 @@ snapshots: util-deprecate@1.0.2: {} - utils-merge@1.0.1: - optional: true - uuid@10.0.0: {} uuid@8.3.2: {} @@ -15735,9 +15135,6 @@ snapshots: validate-npm-package-name@5.0.1: {} - vary@1.1.2: - optional: true - video.js@8.19.1: dependencies: '@babel/runtime': 7.25.6 @@ -15764,13 +15161,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@2.1.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite-node@2.1.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.3.7 es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -15782,33 +15179,33 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.3(typescript@5.6.3)(vite@5.4.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): + vite-tsconfig-paths@5.1.3(typescript@5.6.3)(vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.6.3) optionalDependencies: - vite: 5.4.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.3 optionalDependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 fsevents: 2.3.3 sass: 1.81.0 sugarss: 4.0.1(postcss@8.4.47) terser: 5.32.0 - vitest@2.1.5(@types/node@22.9.1)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vitest@2.1.5(@types/node@22.9.2)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + '@vitest/mocker': 2.1.5(vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/pretty-format': 2.1.5 '@vitest/runner': 2.1.5 '@vitest/snapshot': 2.1.5 @@ -15824,11 +15221,11 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) - vite-node: 2.1.5(@types/node@22.9.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite-node: 2.1.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.2 '@vitest/ui': 2.1.5(vitest@2.1.5) jsdom: 25.0.1 transitivePeerDependencies: From 482ca497f442cc8115af6fad1665594696f417a6 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 05:12:09 +0000 Subject: [PATCH 02/48] chore(deps): update dependency @types/node to ^22.9.3 (#1527) 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 | 102 +++++++++++++++++++-------------------- 3 files changed, 53 insertions(+), 53 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index c9f4e6b2a..b509de6ea 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -80,7 +80,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "2.4.4", - "@types/node": "^22.9.2", + "@types/node": "^22.9.3", "@types/prismjs": "^1.26.5", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 2cd6d8262..1a33555d8 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.9.2", + "@types/node": "^22.9.3", "dotenv-cli": "^7.4.4", "eslint": "^9.15.0", "prettier": "^3.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f5b660d6..5efec75ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,10 +18,10 @@ importers: version: link:tooling/prettier '@turbo/gen': specifier: ^2.3.1 - version: 2.3.1(@types/node@22.9.2)(typescript@5.6.3) + version: 2.3.1(@types/node@22.9.3)(typescript@5.6.3) '@vitejs/plugin-react': specifier: ^4.3.3 - version: 4.3.3(vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 4.3.3(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': specifier: ^2.1.5 version: 2.1.5(vitest@2.1.5) @@ -48,10 +48,10 @@ importers: version: 5.6.3 vite-tsconfig-paths: specifier: ^5.1.3 - version: 5.1.3(typescript@5.6.3)(vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 5.1.3(typescript@5.6.3)(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.2)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + version: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) apps/nextjs: dependencies: @@ -246,8 +246,8 @@ importers: specifier: 2.4.4 version: 2.4.4 '@types/node': - specifier: ^22.9.2 - version: 22.9.2 + specifier: ^22.9.3 + version: 22.9.3 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 @@ -346,8 +346,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^22.9.2 - version: 22.9.2 + specifier: ^22.9.3 + version: 22.9.3 dotenv-cli: specifier: ^7.4.4 version: 7.4.4 @@ -3782,8 +3782,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.9.2': - resolution: {integrity: sha512-wwuxAVEbsRvDD9x7buvAl7DyQ7Oj+va/d/Veug7higYzp9MF0CINbfWTBgDFMpcVwcdUiYuNmX2KfnvY3N70mw==} + '@types/node@22.9.3': + resolution: {integrity: sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==} '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -10212,7 +10212,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.3.1(@types/node@22.9.2)(typescript@5.6.3)': + '@turbo/gen@2.3.1(@types/node@22.9.3)(typescript@5.6.3)': dependencies: '@turbo/workspaces': 2.3.1 commander: 10.0.1 @@ -10222,7 +10222,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.4.0 - ts-node: 10.9.2(@types/node@22.9.2)(typescript@5.6.3) + ts-node: 10.9.2(@types/node@22.9.3)(typescript@5.6.3) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -10249,7 +10249,7 @@ snapshots: '@types/asn1@0.2.4': dependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/babel__core@7.20.5': dependencies: @@ -10274,22 +10274,22 @@ snapshots: '@types/bcrypt@5.0.2': dependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/better-sqlite3@7.6.12': dependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/chroma-js@2.4.4': {} '@types/connect@3.4.38': dependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/cookie@0.6.0': {} @@ -10298,7 +10298,7 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/css-font-loading-module@0.0.7': {} @@ -10306,13 +10306,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.32': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/ssh2': 1.15.1 '@types/estree@1.0.5': {} @@ -10321,7 +10321,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -10336,7 +10336,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/hast@2.3.10': dependencies: @@ -10374,7 +10374,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@22.9.2': + '@types/node@22.9.3': dependencies: undici-types: 6.19.8 @@ -10402,21 +10402,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/ssh2@0.5.52': dependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -10429,7 +10429,7 @@ snapshots: '@types/through@0.0.33': dependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/tinycolor2@1.4.6': {} @@ -10445,11 +10445,11 @@ snapshots: '@types/ws@8.5.13': dependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@typescript-eslint/eslint-plugin@8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0)(typescript@5.6.3)': dependencies: @@ -10563,14 +10563,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.3.3(vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitejs/plugin-react@4.3.3(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -10588,7 +10588,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.5(@types/node@22.9.2)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -10599,13 +10599,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.5(vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitest/mocker@2.1.5(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@vitest/spy': 2.1.5 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/pretty-format@2.1.5': dependencies: @@ -10635,7 +10635,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.5(@types/node@22.9.2)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/utils@2.1.5': dependencies: @@ -12820,7 +12820,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -13328,7 +13328,7 @@ snapshots: node-mocks-http@1.16.0: dependencies: '@types/express': 4.17.21 - '@types/node': 22.9.2 + '@types/node': 22.9.3 accepts: 1.3.8 content-disposition: 0.5.4 depd: 1.1.2 @@ -14832,14 +14832,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.9.2)(typescript@5.6.3): + ts-node@10.9.2(@types/node@22.9.3)(typescript@5.6.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.9.2 + '@types/node': 22.9.3 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -15161,13 +15161,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@2.1.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite-node@2.1.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.3.7 es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -15179,33 +15179,33 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.3(typescript@5.6.3)(vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): + vite-tsconfig-paths@5.1.3(typescript@5.6.3)(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.6.3) optionalDependencies: - vite: 5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.3 optionalDependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 fsevents: 2.3.3 sass: 1.81.0 sugarss: 4.0.1(postcss@8.4.47) terser: 5.32.0 - vitest@2.1.5(@types/node@22.9.2)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vitest@2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + '@vitest/mocker': 2.1.5(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/pretty-format': 2.1.5 '@vitest/runner': 2.1.5 '@vitest/snapshot': 2.1.5 @@ -15221,11 +15221,11 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) - vite-node: 2.1.5(@types/node@22.9.2)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite-node: 2.1.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.9.2 + '@types/node': 22.9.3 '@vitest/ui': 2.1.5(vitest@2.1.5) jsdom: 25.0.1 transitivePeerDependencies: From cdfb61fb28f6a9adc8658187a41e0cfb3fdc1a8f Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 14:39:52 +0000 Subject: [PATCH 03/48] fix(deps): update dependency tldts to ^6.1.64 (#1529) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/common/package.json | 2 +- pnpm-lock.yaml | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/common/package.json b/packages/common/package.json index 784febf48..b3730fed5 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -29,7 +29,7 @@ "dayjs": "^1.11.13", "next": "^14.2.18", "react": "^18.3.1", - "tldts": "^6.1.63" + "tldts": "^6.1.64" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5efec75ed..2219ff613 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -672,8 +672,8 @@ importers: specifier: ^18.3.1 version: 18.3.1 tldts: - specifier: ^6.1.63 - version: 6.1.63 + specifier: ^6.1.64 + version: 6.1.64 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -7600,11 +7600,11 @@ packages: title-case@2.1.1: resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} - tldts-core@6.1.63: - resolution: {integrity: sha512-H1XCt54xY+QPbwhTgmxLkepX0MVHu3USfMmejiCOdkMbRcP22Pn2FVF127r/GWXVDmXTRezyF3Ckvhn4Fs6j7Q==} + tldts-core@6.1.64: + resolution: {integrity: sha512-uqnl8vGV16KsyflHOzqrYjjArjfXaU6rMPXYy2/ZWoRKCkXtghgB4VwTDXUG+t0OTGeSewNAG31/x1gCTfLt+Q==} - tldts@6.1.63: - resolution: {integrity: sha512-YWwhsjyn9sB/1rOkSRYxvkN/wl5LFM1QDv6F2pVR+pb/jFne4EOBxHfkKVWvDIBEAw9iGOwwubHtQTm0WRT5sQ==} + tldts@6.1.64: + resolution: {integrity: sha512-ph4AE5BXWIOsSy9stpoeo7bYe/Cy7VfpciIH4RhVZUPItCJmhqWCN0EVzxd8BOHiyNb42vuJc6NWTjJkg91Tuw==} hasBin: true tmp@0.0.33: @@ -14760,11 +14760,11 @@ snapshots: no-case: 2.3.2 upper-case: 1.1.3 - tldts-core@6.1.63: {} + tldts-core@6.1.64: {} - tldts@6.1.63: + tldts@6.1.64: dependencies: - tldts-core: 6.1.63 + tldts-core: 6.1.64 tmp@0.0.33: dependencies: @@ -14786,7 +14786,7 @@ snapshots: tough-cookie@5.0.0: dependencies: - tldts: 6.1.63 + tldts: 6.1.64 tr46@0.0.3: {} From 32ee9f3dcce3e559bb73e0b5f3d8da4b467cf9e3 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 23 Nov 2024 17:16:44 +0100 Subject: [PATCH 04/48] refactor: add request handlers for centralized cached requests (#1504) * feat: add object base64 hash method * chore: add script to add package * feat: add request-handler package * wip: add request handlers for all jobs and widget api procedures * wip: remove errors shown in logs, add missing decryption for secrets in cached-request-job-handler * wip: highly improve request handler, add request handlers for calendar, media-server, indexer-manager and more, add support for multiple inputs from job handler creator * refactor: move media-server requests to request-handler, add invalidation logic for dns-hole and media requests * refactor: remove unused integration item middleware * feat: add invalidation to switch entity action of smart-home * fix: lint issues * chore: use integration-kind-by-category instead of union for request-handlers * fix: build not working for tasks and websocket * refactor: add more logs * refactor: readd timestamp logic for diconnect status * fix: lint and typecheck issue * chore: address pull request feedback --- .../app/[locale]/widgets/[kind]/_content.tsx | 8 +- .../src/components/board/items/item-menu.tsx | 3 +- apps/nextjs/src/middleware.ts | 7 +- apps/tasks/package.json | 2 +- apps/websocket/package.json | 2 +- package.json | 1 + packages/api/package.json | 1 + packages/api/src/middlewares/integration.ts | 77 ------------- packages/api/src/router/widgets/calendar.ts | 24 ++-- packages/api/src/router/widgets/dns-hole.ts | 45 +++++--- packages/api/src/router/widgets/downloads.ts | 24 ++-- .../src/router/widgets/health-monitoring.ts | 14 +-- .../api/src/router/widgets/indexer-manager.ts | 21 ++-- .../api/src/router/widgets/media-requests.ts | 109 +++++++++++++----- .../api/src/router/widgets/media-server.ts | 13 ++- packages/api/src/router/widgets/smart-home.ts | 52 ++++++--- packages/common/src/hooks.ts | 17 +++ packages/common/src/object.ts | 6 + packages/common/src/types.ts | 2 + packages/cron-jobs/package.json | 1 + packages/cron-jobs/src/index.ts | 5 +- .../src/jobs/integrations/dns-hole.ts | 35 ++---- .../src/jobs/integrations/downloads.ts | 33 ++---- .../jobs/integrations/health-monitoring.ts | 28 ++--- .../src/jobs/integrations/home-assistant.ts | 50 ++------ .../src/jobs/integrations/indexer-manager.ts | 27 ++--- .../src/jobs/integrations/media-organizer.ts | 51 ++++---- .../src/jobs/integrations/media-requests.ts | 58 ++++------ .../src/jobs/integrations/media-server.ts | 28 ++--- packages/integrations/src/calendar-types.ts | 4 +- .../downloads/download-client-items.ts | 2 +- .../downloads/download-client-status.ts | 2 +- .../media-requests/media-request.ts | 4 - .../src/overseerr/overseerr-integration.ts | 19 +++ packages/integrations/src/types.ts | 1 + packages/redis/src/index.ts | 9 +- packages/redis/src/lib/channel.ts | 14 ++- packages/request-handler/eslint.config.js | 9 ++ packages/request-handler/package.json | 41 +++++++ packages/request-handler/src/calendar.ts | 22 ++++ packages/request-handler/src/dns-hole.ts | 20 ++++ packages/request-handler/src/downloads.ts | 20 ++++ .../request-handler/src/health-monitoring.ts | 20 ++++ .../request-handler/src/indexer-manager.ts | 20 ++++ .../lib/cached-integration-request-handler.ts | 42 +++++++ .../src/lib/cached-request-handler.ts | 74 ++++++++++++ .../cached-request-integration-job-handler.ts | 103 +++++++++++++++++ .../request-handler/src/media-request-list.ts | 20 ++++ .../src/media-request-stats.ts | 23 ++++ packages/request-handler/src/media-server.ts | 20 ++++ .../src/smart-home-entity-state.ts | 25 ++++ packages/request-handler/tsconfig.json | 8 ++ packages/translation/src/lang/en.json | 7 +- packages/widgets/package.json | 3 +- packages/widgets/src/bookmarks/add-button.tsx | 23 ++++ packages/widgets/src/bookmarks/index.tsx | 17 +-- packages/widgets/src/calendar/component.tsx | 14 +-- .../src/dns-hole/controls/component.tsx | 37 +++--- .../src/dns-hole/summary/component.tsx | 15 +-- packages/widgets/src/downloads/component.tsx | 97 +++++----------- .../src/health-monitoring/component.tsx | 45 +++----- packages/widgets/src/iframe/component.tsx | 2 + packages/widgets/src/index.tsx | 25 +++- .../src/media-requests/list/component.tsx | 51 ++++---- .../src/media-requests/stats/component.tsx | 46 +++----- packages/widgets/src/modals/index.ts | 1 + packages/widgets/src/options.ts | 18 +-- packages/widgets/src/rssFeed/component.tsx | 2 + .../src/smart-home/entity-state/component.tsx | 53 +++++---- .../execute-automation/component.tsx | 2 + packages/widgets/src/weather/component.tsx | 2 + pnpm-lock.yaml | 49 ++++++++ turbo/generators/templates/package.json.hbs | 4 +- 73 files changed, 1114 insertions(+), 665 deletions(-) create mode 100644 packages/request-handler/eslint.config.js create mode 100644 packages/request-handler/package.json create mode 100644 packages/request-handler/src/calendar.ts create mode 100644 packages/request-handler/src/dns-hole.ts create mode 100644 packages/request-handler/src/downloads.ts create mode 100644 packages/request-handler/src/health-monitoring.ts create mode 100644 packages/request-handler/src/indexer-manager.ts create mode 100644 packages/request-handler/src/lib/cached-integration-request-handler.ts create mode 100644 packages/request-handler/src/lib/cached-request-handler.ts create mode 100644 packages/request-handler/src/lib/cached-request-integration-job-handler.ts create mode 100644 packages/request-handler/src/media-request-list.ts create mode 100644 packages/request-handler/src/media-request-stats.ts create mode 100644 packages/request-handler/src/media-server.ts create mode 100644 packages/request-handler/src/smart-home-entity-state.ts create mode 100644 packages/request-handler/tsconfig.json create mode 100644 packages/widgets/src/bookmarks/add-button.tsx create mode 100644 packages/widgets/src/modals/index.ts diff --git a/apps/nextjs/src/app/[locale]/widgets/[kind]/_content.tsx b/apps/nextjs/src/app/[locale]/widgets/[kind]/_content.tsx index 0d7f1b880..d351c9238 100644 --- a/apps/nextjs/src/app/[locale]/widgets/[kind]/_content.tsx +++ b/apps/nextjs/src/app/[locale]/widgets/[kind]/_content.tsx @@ -11,13 +11,9 @@ import { useModalAction } from "@homarr/modals"; import { showSuccessNotification } from "@homarr/notifications"; import { useScopedI18n } from "@homarr/translation/client"; import type { BoardItemAdvancedOptions } from "@homarr/validation"; -import { - loadWidgetDynamic, - reduceWidgetOptionsWithDefaultValues, - WidgetEditModal, - widgetImports, -} from "@homarr/widgets"; +import { loadWidgetDynamic, reduceWidgetOptionsWithDefaultValues, widgetImports } from "@homarr/widgets"; import { WidgetError } from "@homarr/widgets/errors"; +import { WidgetEditModal } from "@homarr/widgets/modals"; import type { Dimensions } from "./_dimension-modal"; import { PreviewDimensionsModal } from "./_dimension-modal"; diff --git a/apps/nextjs/src/components/board/items/item-menu.tsx b/apps/nextjs/src/components/board/items/item-menu.tsx index 4c4d9642f..d16ec2c7a 100644 --- a/apps/nextjs/src/components/board/items/item-menu.tsx +++ b/apps/nextjs/src/components/board/items/item-menu.tsx @@ -5,7 +5,8 @@ import { IconCopy, IconDotsVertical, IconLayoutKanban, IconPencil, IconTrash } f import { clientApi } from "@homarr/api/client"; import { useConfirmModal, useModalAction } from "@homarr/modals"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; -import { WidgetEditModal, widgetImports } from "@homarr/widgets"; +import { widgetImports } from "@homarr/widgets"; +import { WidgetEditModal } from "@homarr/widgets/modals"; import type { Item } from "~/app/[locale]/boards/_types"; import { useEditMode } from "~/app/[locale]/boards/(content)/_context"; diff --git a/apps/nextjs/src/middleware.ts b/apps/nextjs/src/middleware.ts index 491d5b40a..f20def82b 100644 --- a/apps/nextjs/src/middleware.ts +++ b/apps/nextjs/src/middleware.ts @@ -3,6 +3,7 @@ import { createTRPCClient, httpLink } from "@trpc/client"; import SuperJSON from "superjson"; import type { AppRouter } from "@homarr/api"; +import { createHeadersCallbackForSource } from "@homarr/api/client"; import { createI18nMiddleware } from "@homarr/translation/middleware"; export async function middleware(request: NextRequest) { @@ -25,11 +26,7 @@ export const serverFetchApi = createTRPCClient({ httpLink({ url: `http://${process.env.HOSTNAME ?? "localhost"}:3000/api/trpc`, transformer: SuperJSON, - headers() { - const headers = new Headers(); - headers.set("x-trpc-source", "server-fetch"); - return headers; - }, + headers: createHeadersCallbackForSource("server-fetch"), }), ], }); diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 1a33555d8..1871bf767 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 --outfile=tasks.cjs", + "build": "esbuild src/main.ts --bundle --platform=node --loader:.scss=text --external:@opentelemetry/api --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 d1113bc21..b0b192993 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:cpu-features --loader:.html=text --loader:.node=text", + "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", "clean": "rm -rf .turbo node_modules", "dev": "pnpm with-env tsx ./src/main.ts", "format": "prettier --check . --ignore-path ../../.gitignore", diff --git a/package.json b/package.json index aa6d89119..338be184b 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "lint": "turbo lint --continue -- --cache --cache-location node_modules/.cache/.eslintcache", "lint:fix": "turbo lint --continue -- --fix --cache --cache-location node_modules/.cache/.eslintcache", "lint:ws": "pnpm dlx sherif@latest", + "package:new": "turbo gen init", "test": "cross-env NODE_ENV=development vitest run --exclude e2e --coverage.enabled ", "test:e2e": "cross-env NODE_ENV=development vitest e2e", "test:ui": "cross-env NODE_ENV=development vitest --exclude e2e --ui --coverage.enabled", diff --git a/packages/api/package.json b/packages/api/package.json index 9bbb3cb1b..04b35ec93 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -33,6 +33,7 @@ "@homarr/old-schema": "workspace:^0.1.0", "@homarr/ping": "workspace:^0.1.0", "@homarr/redis": "workspace:^0.1.0", + "@homarr/request-handler": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@trpc/client": "next", diff --git a/packages/api/src/middlewares/integration.ts b/packages/api/src/middlewares/integration.ts index 78b3326c9..62343ac87 100644 --- a/packages/api/src/middlewares/integration.ts +++ b/packages/api/src/middlewares/integration.ts @@ -150,83 +150,6 @@ export const createManyIntegrationMiddleware = ( }); }; -/** - * Creates a middleware that provides the integrations and their items in the context that are of the specified kinds and have the specified item - * It also ensures that the user has permission to perform the specified action on the integrations - * @param action query for showing data or interact for mutating data - * @param kinds kinds of integrations that are supported - * @returns middleware that can be used with trpc - * @example publicProcedure.unstable_concat(createManyIntegrationOfOneItemMiddleware("query", "piHole", "homeAssistant")).query(...) - * @throws TRPCError NOT_FOUND if the integration for the item was not found - * @throws TRPCError FORBIDDEN if the user does not have permission to perform the specified action on at least one of the specified integrations - */ -export const createManyIntegrationOfOneItemMiddleware = ( - action: IntegrationAction, - ...kinds: AtLeastOneOf // Ensure at least one kind is provided -) => { - return publicProcedure - .input(z.object({ integrationIds: z.array(z.string()).min(1), itemId: z.string() })) - .use(async ({ ctx, input, next }) => { - const dbIntegrations = await ctx.db.query.integrations.findMany({ - where: and(inArray(integrations.id, input.integrationIds), inArray(integrations.kind, kinds)), - with: { - secrets: true, - items: { - with: { - item: { - with: { - section: { - columns: { - boardId: true, - }, - }, - }, - }, - }, - }, - userPermissions: true, - groupPermissions: true, - }, - }); - - const offset = input.integrationIds.length - dbIntegrations.length; - if (offset !== 0) { - throw new TRPCError({ - code: "NOT_FOUND", - message: `${offset} of the specified integrations not found or not of kinds ${kinds.join(",")}`, - }); - } - - await throwIfActionIsNotAllowedAsync(action, ctx.db, dbIntegrations, ctx.session); - - const dbIntegrationWithItem = dbIntegrations.filter((integration) => - integration.items.some((item) => item.itemId === input.itemId), - ); - - if (dbIntegrationWithItem.length === 0) { - throw new TRPCError({ - code: "NOT_FOUND", - message: "Integrations for item were not found", - }); - } - - return next({ - ctx: { - integrations: dbIntegrationWithItem.map( - ({ secrets, kind, groupPermissions: _ignore1, userPermissions: _ignore2, ...rest }) => ({ - ...rest, - kind: kind as TKind, - decryptedSecrets: secrets.map((secret) => ({ - ...secret, - value: decryptSecret(secret.value), - })), - }), - ), - }, - }); - }); -}; - /** * Throws a TRPCError FORBIDDEN if the user does not have permission to perform the specified action on at least one of the specified integrations * @param action action to perform diff --git a/packages/api/src/router/widgets/calendar.ts b/packages/api/src/router/widgets/calendar.ts index 7713db4f7..6628cf81f 100644 --- a/packages/api/src/router/widgets/calendar.ts +++ b/packages/api/src/router/widgets/calendar.ts @@ -1,20 +1,24 @@ import { getIntegrationKindsByCategory } from "@homarr/definitions"; -import type { CalendarEvent } from "@homarr/integrations/types"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; +import { radarrReleaseTypes } from "@homarr/integrations/types"; +import { calendarMonthRequestHandler } from "@homarr/request-handler/calendar"; +import { z } from "@homarr/validation"; -import { createManyIntegrationOfOneItemMiddleware } from "../../middlewares/integration"; +import { createManyIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, publicProcedure } from "../../trpc"; export const calendarRouter = createTRPCRouter({ findAllEvents: publicProcedure - .unstable_concat(createManyIntegrationOfOneItemMiddleware("query", ...getIntegrationKindsByCategory("calendar"))) - .query(async ({ ctx }) => { - const result = await Promise.all( - ctx.integrations.flatMap(async (integration) => { - const cache = createItemAndIntegrationChannel("calendar", integration.id); - return await cache.getAsync(); + .input(z.object({ year: z.number(), month: z.number(), releaseType: z.array(z.enum(radarrReleaseTypes)) })) + .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("calendar"))) + .query(async ({ ctx, input }) => { + const results = await Promise.all( + ctx.integrations.map(async (integration) => { + const innerHandler = calendarMonthRequestHandler.handler(integration, input); + const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); + + return data; }), ); - return result.filter((item) => item !== null).flatMap((item) => item.data); + return results.flat(); }), }); diff --git a/packages/api/src/router/widgets/dns-hole.ts b/packages/api/src/router/widgets/dns-hole.ts index 0257c1d7c..a9b76be4f 100644 --- a/packages/api/src/router/widgets/dns-hole.ts +++ b/packages/api/src/router/widgets/dns-hole.ts @@ -2,31 +2,33 @@ import { observable } from "@trpc/server/observable"; import type { Modify } from "@homarr/common/types"; import type { Integration } from "@homarr/db/schema/sqlite"; -import type { IntegrationKindByCategory, WidgetKind } from "@homarr/definitions"; +import type { IntegrationKindByCategory } from "@homarr/definitions"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { integrationCreator } from "@homarr/integrations"; import type { DnsHoleSummary } from "@homarr/integrations/types"; import { controlsInputSchema } from "@homarr/integrations/types"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; -import { z } from "@homarr/validation"; +import { dnsHoleRequestHandler } from "@homarr/request-handler/dns-hole"; import { createManyIntegrationMiddleware, createOneIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, publicProcedure } from "../../trpc"; export const dnsHoleRouter = createTRPCRouter({ summary: publicProcedure - .input(z.object({ widgetKind: z.enum(["dnsHoleSummary", "dnsHoleControls"]) })) .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("dnsHole"))) - .query(async ({ input: { widgetKind }, ctx }) => { + .query(async ({ ctx }) => { const results = await Promise.all( - ctx.integrations.map(async ({ decryptedSecrets: _, ...integration }) => { - const channel = createItemAndIntegrationChannel(widgetKind, integration.id); - const { data: summary, timestamp } = (await channel.getAsync()) ?? { data: null, timestamp: new Date(0) }; + ctx.integrations.map(async (integration) => { + const innerHandler = dnsHoleRequestHandler.handler(integration, {}); + const { data, timestamp } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); return { - integration, - timestamp, - summary, + integration: { + id: integration.id, + name: integration.name, + kind: integration.kind, + updatedAt: timestamp, + }, + summary: data, }; }), ); @@ -34,22 +36,19 @@ export const dnsHoleRouter = createTRPCRouter({ }), subscribeToSummary: publicProcedure - .input(z.object({ widgetKind: z.enum(["dnsHoleSummary", "dnsHoleControls"]) })) .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("dnsHole"))) - .subscription(({ input: { widgetKind }, ctx }) => { + .subscription(({ ctx }) => { return observable<{ integration: Modify }>; - timestamp: Date; summary: DnsHoleSummary; }>((emit) => { const unsubscribes: (() => void)[] = []; for (const integrationWithSecrets of ctx.integrations) { const { decryptedSecrets: _, ...integration } = integrationWithSecrets; - const channel = createItemAndIntegrationChannel(widgetKind as WidgetKind, integration.id); - const unsubscribe = channel.subscribe((summary) => { + const innerHandler = dnsHoleRequestHandler.handler(integrationWithSecrets, {}); + const unsubscribe = innerHandler.subscribe((summary) => { emit.next({ integration, - timestamp: new Date(), summary, }); }); @@ -68,6 +67,12 @@ export const dnsHoleRouter = createTRPCRouter({ .mutation(async ({ ctx: { integration } }) => { const client = integrationCreator(integration); await client.enableAsync(); + + const innerHandler = dnsHoleRequestHandler.handler(integration, {}); + // We need to wait for the integration to be enabled before invalidating the cache + await new Promise((resolve) => { + setTimeout(() => void innerHandler.invalidateAsync().then(resolve), 1000); + }); }), disable: publicProcedure @@ -76,5 +81,11 @@ export const dnsHoleRouter = createTRPCRouter({ .mutation(async ({ ctx: { integration }, input }) => { const client = integrationCreator(integration); await client.disableAsync(input.duration); + + const innerHandler = dnsHoleRequestHandler.handler(integration, {}); + // We need to wait for the integration to be disabled before invalidating the cache + await new Promise((resolve) => { + setTimeout(() => void innerHandler.invalidateAsync().then(resolve), 1000); + }); }), }); diff --git a/packages/api/src/router/widgets/downloads.ts b/packages/api/src/router/widgets/downloads.ts index 5627a7b4e..e9cdb380e 100644 --- a/packages/api/src/router/widgets/downloads.ts +++ b/packages/api/src/router/widgets/downloads.ts @@ -6,7 +6,7 @@ import type { IntegrationKindByCategory } from "@homarr/definitions"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import type { DownloadClientJobsAndStatus } from "@homarr/integrations"; import { downloadClientItemSchema, integrationCreator } from "@homarr/integrations"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; +import { downloadClientRequestHandler } from "@homarr/request-handler/downloads"; import { z } from "@homarr/validation"; import type { IntegrationAction } from "../../middlewares/integration"; @@ -21,12 +21,18 @@ export const downloadsRouter = createTRPCRouter({ .unstable_concat(createDownloadClientIntegrationMiddleware("query")) .query(async ({ ctx }) => { return await Promise.all( - ctx.integrations.map(async ({ decryptedSecrets: _, ...integration }) => { - const channel = createItemAndIntegrationChannel("downloads", integration.id); - const { data, timestamp } = (await channel.getAsync()) ?? { data: null, timestamp: new Date(0) }; + ctx.integrations.map(async (integration) => { + const innerHandler = downloadClientRequestHandler.handler(integration, {}); + + const { data, timestamp } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); + return { - integration, - timestamp, + integration: { + id: integration.id, + name: integration.name, + kind: integration.kind, + updatedAt: timestamp, + }, data, }; }), @@ -37,17 +43,15 @@ export const downloadsRouter = createTRPCRouter({ .subscription(({ ctx }) => { return observable<{ integration: Modify }>; - timestamp: Date; data: DownloadClientJobsAndStatus; }>((emit) => { const unsubscribes: (() => void)[] = []; for (const integrationWithSecrets of ctx.integrations) { const { decryptedSecrets: _, ...integration } = integrationWithSecrets; - const channel = createItemAndIntegrationChannel("downloads", integration.id); - const unsubscribe = channel.subscribe((data) => { + const innerHandler = downloadClientRequestHandler.handler(integrationWithSecrets, {}); + const unsubscribe = innerHandler.subscribe((data) => { emit.next({ integration, - timestamp: new Date(), data, }); }); diff --git a/packages/api/src/router/widgets/health-monitoring.ts b/packages/api/src/router/widgets/health-monitoring.ts index 28e0b9b6a..8c7ee16dc 100644 --- a/packages/api/src/router/widgets/health-monitoring.ts +++ b/packages/api/src/router/widgets/health-monitoring.ts @@ -1,7 +1,7 @@ import { observable } from "@trpc/server/observable"; import type { HealthMonitoring } from "@homarr/integrations"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; +import { systemInfoRequestHandler } from "@homarr/request-handler/health-monitoring"; import { createManyIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, publicProcedure } from "../../trpc"; @@ -12,14 +12,14 @@ export const healthMonitoringRouter = createTRPCRouter({ .query(async ({ ctx }) => { return await Promise.all( ctx.integrations.map(async (integration) => { - const channel = createItemAndIntegrationChannel("healthMonitoring", integration.id); - const { data: healthInfo, timestamp } = (await channel.getAsync()) ?? { data: null, timestamp: new Date(0) }; + const innerHandler = systemInfoRequestHandler.handler(integration, {}); + const { data, timestamp } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); return { integrationId: integration.id, integrationName: integration.name, - healthInfo, - timestamp, + healthInfo: data, + updatedAt: timestamp, }; }), ); @@ -31,8 +31,8 @@ export const healthMonitoringRouter = createTRPCRouter({ return observable<{ integrationId: string; healthInfo: HealthMonitoring; timestamp: Date }>((emit) => { const unsubscribes: (() => void)[] = []; for (const integration of ctx.integrations) { - const channel = createItemAndIntegrationChannel("healthMonitoring", integration.id); - const unsubscribe = channel.subscribe((healthInfo) => { + const innerHandler = systemInfoRequestHandler.handler(integration, {}); + const unsubscribe = innerHandler.subscribe((healthInfo) => { emit.next({ integrationId: integration.id, healthInfo, diff --git a/packages/api/src/router/widgets/indexer-manager.ts b/packages/api/src/router/widgets/indexer-manager.ts index 731216f0c..19dedb595 100644 --- a/packages/api/src/router/widgets/indexer-manager.ts +++ b/packages/api/src/router/widgets/indexer-manager.ts @@ -5,7 +5,7 @@ import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { integrationCreator } from "@homarr/integrations"; import type { Indexer } from "@homarr/integrations/types"; import { logger } from "@homarr/log"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; +import { indexerManagerRequestHandler } from "@homarr/request-handler/indexer-manager"; import type { IntegrationAction } from "../../middlewares/integration"; import { createManyIntegrationMiddleware } from "../../middlewares/integration"; @@ -20,14 +20,8 @@ export const indexerManagerRouter = createTRPCRouter({ .query(async ({ ctx }) => { const results = await Promise.all( ctx.integrations.map(async (integration) => { - const client = integrationCreator(integration); - const indexers = await client.getIndexersAsync().catch((err) => { - logger.error("indexer-manager router - ", err); - throw new TRPCError({ - code: "INTERNAL_SERVER_ERROR", - message: `Failed to fetch indexers for ${integration.name} (${integration.id})`, - }); - }); + const innerHandler = indexerManagerRequestHandler.handler(integration, {}); + const { data: indexers } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); return { integrationId: integration.id, @@ -43,11 +37,11 @@ export const indexerManagerRouter = createTRPCRouter({ .subscription(({ ctx }) => { return observable<{ integrationId: string; indexers: Indexer[] }>((emit) => { const unsubscribes: (() => void)[] = []; - for (const integration of ctx.integrations) { - const channel = createItemAndIntegrationChannel("indexerManager", integration.id); - const unsubscribe = channel.subscribe((indexers) => { + for (const integrationWithSecrets of ctx.integrations) { + const innerHandler = indexerManagerRequestHandler.handler(integrationWithSecrets, {}); + const unsubscribe = innerHandler.subscribe((indexers) => { emit.next({ - integrationId: integration.id, + integrationId: integrationWithSecrets.id, indexers, }); }); @@ -60,7 +54,6 @@ export const indexerManagerRouter = createTRPCRouter({ }; }); }), - testAllIndexers: publicProcedure .unstable_concat(createIndexerManagerIntegrationMiddleware("interact")) .mutation(async ({ ctx }) => { diff --git a/packages/api/src/router/widgets/media-requests.ts b/packages/api/src/router/widgets/media-requests.ts index 2c2916715..c1a237d03 100644 --- a/packages/api/src/router/widgets/media-requests.ts +++ b/packages/api/src/router/widgets/media-requests.ts @@ -1,53 +1,110 @@ +import { observable } from "@trpc/server/observable"; + import { getIntegrationKindsByCategory } from "@homarr/definitions"; -import type { MediaRequestList, MediaRequestStats } from "@homarr/integrations"; -import { integrationCreator } from "@homarr/integrations"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; +import { integrationCreator, MediaRequestStatus } from "@homarr/integrations"; +import type { MediaRequest } from "@homarr/integrations/types"; +import { mediaRequestListRequestHandler } from "@homarr/request-handler/media-request-list"; +import { mediaRequestStatsRequestHandler } from "@homarr/request-handler/media-request-stats"; import { z } from "@homarr/validation"; -import { - createManyIntegrationOfOneItemMiddleware, - createOneIntegrationMiddleware, -} from "../../middlewares/integration"; +import { createManyIntegrationMiddleware, createOneIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, protectedProcedure, publicProcedure } from "../../trpc"; export const mediaRequestsRouter = createTRPCRouter({ getLatestRequests: publicProcedure - .unstable_concat( - createManyIntegrationOfOneItemMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest")), - ) - .query(async ({ input }) => { - return await Promise.all( - input.integrationIds.map(async (integrationId) => { - const channel = createItemAndIntegrationChannel("mediaRequests-requestList", integrationId); - return await channel.getAsync(); + .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest"))) + .query(async ({ ctx }) => { + const results = await Promise.all( + ctx.integrations.map(async (integration) => { + const innerHandler = mediaRequestListRequestHandler.handler(integration, {}); + const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); + return { + integration: { + id: integration.id, + name: integration.name, + kind: integration.kind, + }, + data, + }; }), ); + return results + .flatMap(({ data, integration }) => data.map((request) => ({ ...request, integrationId: integration.id }))) + .sort(({ status: statusA }, { status: statusB }) => { + if (statusA === MediaRequestStatus.PendingApproval) { + return -1; + } + if (statusB === MediaRequestStatus.PendingApproval) { + return 1; + } + return 0; + }); + }), + subscribeToLatestRequests: publicProcedure + .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest"))) + .subscription(({ ctx }) => { + return observable<{ + integrationId: string; + requests: MediaRequest[]; + }>((emit) => { + const unsubscribes: (() => void)[] = []; + for (const integrationWithSecrets of ctx.integrations) { + const { decryptedSecrets: _, ...integration } = integrationWithSecrets; + const innerHandler = mediaRequestListRequestHandler.handler(integrationWithSecrets, {}); + const unsubscribe = innerHandler.subscribe((requests) => { + emit.next({ + integrationId: integration.id, + requests, + }); + }); + unsubscribes.push(unsubscribe); + } + return () => { + unsubscribes.forEach((unsubscribe) => { + unsubscribe(); + }); + }; + }); }), getStats: publicProcedure - .unstable_concat( - createManyIntegrationOfOneItemMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest")), - ) - .query(async ({ input }) => { - return await Promise.all( - input.integrationIds.map(async (integrationId) => { - const channel = createItemAndIntegrationChannel( - "mediaRequests-requestStats", - integrationId, - ); - return await channel.getAsync(); + .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest"))) + .query(async ({ ctx }) => { + const results = await Promise.all( + ctx.integrations.map(async (integration) => { + const innerHandler = mediaRequestStatsRequestHandler.handler(integration, {}); + const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); + return { + integration: { + id: integration.id, + name: integration.name, + kind: integration.kind, + }, + data, + }; }), ); + return { + stats: results.flatMap((result) => result.data.stats), + users: results + .map((result) => result.data.users.map((user) => ({ ...user, integration: result.integration }))) + .flat() + .sort(({ requestCount: countA }, { requestCount: countB }) => countB - countA), + integrations: results.map((result) => result.integration), + }; }), answerRequest: protectedProcedure .unstable_concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("mediaRequest"))) .input(z.object({ requestId: z.number(), answer: z.enum(["approve", "decline"]) })) .mutation(async ({ ctx: { integration }, input }) => { const integrationInstance = integrationCreator(integration); + const innerHandler = mediaRequestListRequestHandler.handler(integration, {}); if (input.answer === "approve") { await integrationInstance.approveRequestAsync(input.requestId); + await innerHandler.invalidateAsync(); return; } await integrationInstance.declineRequestAsync(input.requestId); + await innerHandler.invalidateAsync(); }), }); diff --git a/packages/api/src/router/widgets/media-server.ts b/packages/api/src/router/widgets/media-server.ts index ec93ad206..c567c21a2 100644 --- a/packages/api/src/router/widgets/media-server.ts +++ b/packages/api/src/router/widgets/media-server.ts @@ -2,7 +2,7 @@ import { observable } from "@trpc/server/observable"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import type { StreamSession } from "@homarr/integrations"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; +import { mediaServerRequestHandler } from "@homarr/request-handler/media-server"; import type { IntegrationAction } from "../../middlewares/integration"; import { createManyIntegrationMiddleware } from "../../middlewares/integration"; @@ -17,11 +17,11 @@ export const mediaServerRouter = createTRPCRouter({ .query(async ({ ctx }) => { return await Promise.all( ctx.integrations.map(async (integration) => { - const channel = createItemAndIntegrationChannel("mediaServer", integration.id); - const data = await channel.getAsync(); + const innerHandler = mediaServerRequestHandler.handler(integration, {}); + const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); return { integrationId: integration.id, - sessions: data?.data ?? [], + sessions: data, }; }), ); @@ -32,8 +32,9 @@ export const mediaServerRouter = createTRPCRouter({ return observable<{ integrationId: string; data: StreamSession[] }>((emit) => { const unsubscribes: (() => void)[] = []; for (const integration of ctx.integrations) { - const channel = createItemAndIntegrationChannel("mediaServer", integration.id); - const unsubscribe = channel.subscribe((sessions) => { + const innerHandler = mediaServerRequestHandler.handler(integration, {}); + + const unsubscribe = innerHandler.subscribe((sessions) => { emit.next({ integrationId: integration.id, data: sessions, diff --git a/packages/api/src/router/widgets/smart-home.ts b/packages/api/src/router/widgets/smart-home.ts index 3cfd3a98a..1b8b6ec64 100644 --- a/packages/api/src/router/widgets/smart-home.ts +++ b/packages/api/src/router/widgets/smart-home.ts @@ -2,7 +2,7 @@ import { observable } from "@trpc/server/observable"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { integrationCreator } from "@homarr/integrations"; -import { homeAssistantEntityState } from "@homarr/redis"; +import { smartHomeEntityStateRequestHandler } from "@homarr/request-handler/smart-home-entity-state"; import { z } from "@homarr/validation"; import type { IntegrationAction } from "../../middlewares/integration"; @@ -13,29 +13,45 @@ const createSmartHomeIntegrationMiddleware = (action: IntegrationAction) => createOneIntegrationMiddleware(action, ...getIntegrationKindsByCategory("smartHomeServer")); export const smartHomeRouter = createTRPCRouter({ - subscribeEntityState: publicProcedure.input(z.object({ entityId: z.string() })).subscription(({ input }) => { - return observable<{ - entityId: string; - state: string; - }>((emit) => { - const unsubscribe = homeAssistantEntityState.subscribe((message) => { - if (message.entityId !== input.entityId) { - return; - } - emit.next(message); - }); + entityState: publicProcedure + .input(z.object({ entityId: z.string() })) + .unstable_concat(createSmartHomeIntegrationMiddleware("query")) + .query(async ({ ctx: { integration }, input }) => { + const innerHandler = smartHomeEntityStateRequestHandler.handler(integration, { entityId: input.entityId }); + const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); + return data; + }), + subscribeEntityState: publicProcedure + .unstable_concat(createSmartHomeIntegrationMiddleware("query")) + .input(z.object({ entityId: z.string() })) + .subscription(({ input, ctx }) => { + return observable<{ + entityId: string; + state: string; + }>((emit) => { + const innerHandler = smartHomeEntityStateRequestHandler.handler(ctx.integration, { + entityId: input.entityId, + }); + const unsubscribe = innerHandler.subscribe((state) => { + emit.next({ state, entityId: input.entityId }); + }); - return () => { - unsubscribe(); - }; - }); - }), + return () => { + unsubscribe(); + }; + }); + }), switchEntity: publicProcedure .unstable_concat(createSmartHomeIntegrationMiddleware("interact")) .input(z.object({ entityId: z.string() })) .mutation(async ({ ctx: { integration }, input }) => { const client = integrationCreator(integration); - return await client.triggerToggleAsync(input.entityId); + const success = await client.triggerToggleAsync(input.entityId); + + const innerHandler = smartHomeEntityStateRequestHandler.handler(integration, { entityId: input.entityId }); + await innerHandler.invalidateAsync(); + + return success; }), executeAutomation: publicProcedure .unstable_concat(createSmartHomeIntegrationMiddleware("interact")) diff --git a/packages/common/src/hooks.ts b/packages/common/src/hooks.ts index 6185b27e2..e5040968e 100644 --- a/packages/common/src/hooks.ts +++ b/packages/common/src/hooks.ts @@ -21,3 +21,20 @@ export const useTimeAgo = (timestamp: Date) => { return timeAgo; }; + +export const useIntegrationConnected = (updatedAt: Date, { timeout = 30000 }) => { + const [connected, setConnected] = useState(Math.abs(dayjs(updatedAt).diff()) < timeout); + + useEffect(() => { + setConnected(Math.abs(dayjs(updatedAt).diff()) < timeout); + + const delayUntilTimeout = timeout - Math.abs(dayjs(updatedAt).diff()); + const timeoutRef = setTimeout(() => { + setConnected(false); + }, delayUntilTimeout); + + return () => clearTimeout(timeoutRef); + }, [updatedAt, timeout]); + + return connected; +}; diff --git a/packages/common/src/object.ts b/packages/common/src/object.ts index 7e0ccde7f..96ec46dbb 100644 --- a/packages/common/src/object.ts +++ b/packages/common/src/object.ts @@ -1,3 +1,5 @@ +import { hashKey } from "@tanstack/query-core"; + export function objectKeys(obj: O): (keyof O)[] { return Object.keys(obj) as (keyof O)[]; } @@ -7,3 +9,7 @@ type Entries = { }[keyof T][]; export const objectEntries = (obj: T) => Object.entries(obj) as Entries; + +export const hashObjectBase64 = (obj: object) => { + return Buffer.from(hashKey([obj])).toString("base64"); +}; diff --git a/packages/common/src/types.ts b/packages/common/src/types.ts index 45c9ad902..be56092f5 100644 --- a/packages/common/src/types.ts +++ b/packages/common/src/types.ts @@ -9,3 +9,5 @@ export type Modify>> = { export type RemoveReadonly = { -readonly [P in keyof T]: T[P] extends Record ? RemoveReadonly : T[P]; }; + +export type MaybeArray = T | T[]; diff --git a/packages/cron-jobs/package.json b/packages/cron-jobs/package.json index 12ed55a0d..a23e7cc0e 100644 --- a/packages/cron-jobs/package.json +++ b/packages/cron-jobs/package.json @@ -35,6 +35,7 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/ping": "workspace:^0.1.0", "@homarr/redis": "workspace:^0.1.0", + "@homarr/request-handler": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0" diff --git a/packages/cron-jobs/src/index.ts b/packages/cron-jobs/src/index.ts index 8a358988f..cf4132911 100644 --- a/packages/cron-jobs/src/index.ts +++ b/packages/cron-jobs/src/index.ts @@ -6,7 +6,7 @@ import { healthMonitoringJob } from "./jobs/integrations/health-monitoring"; import { smartHomeEntityStateJob } from "./jobs/integrations/home-assistant"; import { indexerManagerJob } from "./jobs/integrations/indexer-manager"; import { mediaOrganizerJob } from "./jobs/integrations/media-organizer"; -import { mediaRequestsJob } from "./jobs/integrations/media-requests"; +import { mediaRequestListJob, mediaRequestStatsJob } from "./jobs/integrations/media-requests"; import { mediaServerJob } from "./jobs/integrations/media-server"; import { pingJob } from "./jobs/ping"; import type { RssFeed } from "./jobs/rss-feeds"; @@ -23,7 +23,8 @@ export const jobGroup = createCronJobGroup({ mediaOrganizer: mediaOrganizerJob, downloads: downloadsJob, dnsHole: dnsHoleJob, - mediaRequests: mediaRequestsJob, + mediaRequestStats: mediaRequestStatsJob, + mediaRequestList: mediaRequestListJob, rssFeeds: rssFeedsJob, indexerManager: indexerManagerJob, healthMonitoring: healthMonitoringJob, diff --git a/packages/cron-jobs/src/jobs/integrations/dns-hole.ts b/packages/cron-jobs/src/jobs/integrations/dns-hole.ts index aaeaf4bee..45e83d814 100644 --- a/packages/cron-jobs/src/jobs/integrations/dns-hole.ts +++ b/packages/cron-jobs/src/jobs/integrations/dns-hole.ts @@ -1,28 +1,15 @@ import { EVERY_5_SECONDS } from "@homarr/cron-jobs-core/expressions"; -import { db } from "@homarr/db"; -import { getItemsWithIntegrationsAsync } from "@homarr/db/queries"; -import { integrationCreatorFromSecrets } from "@homarr/integrations"; -import type { DnsHoleSummary } from "@homarr/integrations/types"; -import { logger } from "@homarr/log"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; +import { dnsHoleRequestHandler } from "@homarr/request-handler/dns-hole"; +import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler"; import { createCronJob } from "../../lib"; -export const dnsHoleJob = createCronJob("dnsHole", EVERY_5_SECONDS).withCallback(async () => { - const itemsForIntegration = await getItemsWithIntegrationsAsync(db, { - kinds: ["dnsHoleSummary", "dnsHoleControls"], - }); - - for (const itemForIntegration of itemsForIntegration) { - for (const { integration } of itemForIntegration.integrations) { - const integrationInstance = integrationCreatorFromSecrets(integration); - await integrationInstance - .getSummaryAsync() - .then(async (data) => { - const channel = createItemAndIntegrationChannel(itemForIntegration.kind, integration.id); - await channel.publishAndUpdateLastStateAsync(data); - }) - .catch((error) => logger.error(`Could not retrieve data for ${integration.name}: "${error}"`)); - } - } -}); +export const dnsHoleJob = createCronJob("dnsHole", EVERY_5_SECONDS).withCallback( + createRequestIntegrationJobHandler(dnsHoleRequestHandler.handler, { + widgetKinds: ["dnsHoleSummary", "dnsHoleControls"], + getInput: { + dnsHoleSummary: () => ({}), + dnsHoleControls: () => ({}), + }, + }), +); diff --git a/packages/cron-jobs/src/jobs/integrations/downloads.ts b/packages/cron-jobs/src/jobs/integrations/downloads.ts index 35ff36277..e7d010d65 100644 --- a/packages/cron-jobs/src/jobs/integrations/downloads.ts +++ b/packages/cron-jobs/src/jobs/integrations/downloads.ts @@ -1,27 +1,14 @@ import { EVERY_5_SECONDS } from "@homarr/cron-jobs-core/expressions"; -import { db } from "@homarr/db"; -import { getItemsWithIntegrationsAsync } from "@homarr/db/queries"; -import type { DownloadClientJobsAndStatus } from "@homarr/integrations"; -import { integrationCreatorFromSecrets } from "@homarr/integrations"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; +import { downloadClientRequestHandler } from "@homarr/request-handler/downloads"; +import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler"; import { createCronJob } from "../../lib"; -export const downloadsJob = createCronJob("downloads", EVERY_5_SECONDS).withCallback(async () => { - const itemsForIntegration = await getItemsWithIntegrationsAsync(db, { - kinds: ["downloads"], - }); - - for (const itemForIntegration of itemsForIntegration) { - for (const { integration } of itemForIntegration.integrations) { - const integrationInstance = integrationCreatorFromSecrets(integration); - await integrationInstance - .getClientJobsAndStatusAsync() - .then(async (data) => { - const channel = createItemAndIntegrationChannel("downloads", integration.id); - await channel.publishAndUpdateLastStateAsync(data); - }) - .catch((error) => console.error(`Could not retrieve data for ${integration.name}: "${error}"`)); - } - } -}); +export const downloadsJob = createCronJob("downloads", EVERY_5_SECONDS).withCallback( + createRequestIntegrationJobHandler(downloadClientRequestHandler.handler, { + widgetKinds: ["downloads"], + getInput: { + downloads: () => ({}), + }, + }), +); diff --git a/packages/cron-jobs/src/jobs/integrations/health-monitoring.ts b/packages/cron-jobs/src/jobs/integrations/health-monitoring.ts index 1f187d354..50c80ce84 100644 --- a/packages/cron-jobs/src/jobs/integrations/health-monitoring.ts +++ b/packages/cron-jobs/src/jobs/integrations/health-monitoring.ts @@ -1,22 +1,14 @@ import { EVERY_5_SECONDS } from "@homarr/cron-jobs-core/expressions"; -import { db } from "@homarr/db"; -import { getItemsWithIntegrationsAsync } from "@homarr/db/queries"; -import { integrationCreatorFromSecrets } from "@homarr/integrations"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; +import { systemInfoRequestHandler } from "@homarr/request-handler/health-monitoring"; +import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler"; import { createCronJob } from "../../lib"; -export const healthMonitoringJob = createCronJob("healthMonitoring", EVERY_5_SECONDS).withCallback(async () => { - const itemsForIntegration = await getItemsWithIntegrationsAsync(db, { - kinds: ["healthMonitoring"], - }); - - for (const itemForIntegration of itemsForIntegration) { - for (const integration of itemForIntegration.integrations) { - const openmediavault = integrationCreatorFromSecrets(integration.integration); - const healthInfo = await openmediavault.getSystemInfoAsync(); - const channel = createItemAndIntegrationChannel("healthMonitoring", integration.integrationId); - await channel.publishAndUpdateLastStateAsync(healthInfo); - } - } -}); +export const healthMonitoringJob = createCronJob("healthMonitoring", EVERY_5_SECONDS).withCallback( + createRequestIntegrationJobHandler(systemInfoRequestHandler.handler, { + widgetKinds: ["healthMonitoring"], + getInput: { + healthMonitoring: () => ({}), + }, + }), +); diff --git a/packages/cron-jobs/src/jobs/integrations/home-assistant.ts b/packages/cron-jobs/src/jobs/integrations/home-assistant.ts index 782bb5bbc..2723391a7 100644 --- a/packages/cron-jobs/src/jobs/integrations/home-assistant.ts +++ b/packages/cron-jobs/src/jobs/integrations/home-assistant.ts @@ -1,42 +1,16 @@ -import SuperJSON from "superjson"; - import { EVERY_MINUTE } from "@homarr/cron-jobs-core/expressions"; -import { db } from "@homarr/db"; -import { getItemsWithIntegrationsAsync } from "@homarr/db/queries"; -import { integrationCreatorFromSecrets } from "@homarr/integrations"; -import { logger } from "@homarr/log"; -import { homeAssistantEntityState } from "@homarr/redis"; +import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler"; +import { smartHomeEntityStateRequestHandler } from "@homarr/request-handler/smart-home-entity-state"; -// This import is done that way to avoid circular dependencies. -import type { WidgetComponentProps } from "../../../../widgets"; import { createCronJob } from "../../lib"; -export const smartHomeEntityStateJob = createCronJob("smartHomeEntityState", EVERY_MINUTE).withCallback(async () => { - const itemsForIntegration = await getItemsWithIntegrationsAsync(db, { - kinds: ["smartHome-entityState"], - }); - - for (const itemForIntegration of itemsForIntegration) { - const integration = itemForIntegration.integrations[0]?.integration; - if (!integration) { - continue; - } - - const options = SuperJSON.parse["options"]>( - itemForIntegration.options, - ); - - const homeAssistant = integrationCreatorFromSecrets(integration); - const state = await homeAssistant.getEntityStateAsync(options.entityId); - - if (!state.success) { - logger.error("Unable to fetch data from Home Assistant"); - continue; - } - - await homeAssistantEntityState.publishAsync({ - entityId: options.entityId, - state: state.data.state, - }); - } -}); +export const smartHomeEntityStateJob = createCronJob("smartHomeEntityState", EVERY_MINUTE).withCallback( + createRequestIntegrationJobHandler(smartHomeEntityStateRequestHandler.handler, { + widgetKinds: ["smartHome-entityState"], + getInput: { + "smartHome-entityState": (options) => ({ + entityId: options.entityId, + }), + }, + }), +); diff --git a/packages/cron-jobs/src/jobs/integrations/indexer-manager.ts b/packages/cron-jobs/src/jobs/integrations/indexer-manager.ts index 858e0c84a..11da75508 100644 --- a/packages/cron-jobs/src/jobs/integrations/indexer-manager.ts +++ b/packages/cron-jobs/src/jobs/integrations/indexer-manager.ts @@ -1,19 +1,14 @@ -import { EVERY_MINUTE } from "@homarr/cron-jobs-core/expressions"; -import { db } from "@homarr/db"; -import { getItemsWithIntegrationsAsync } from "@homarr/db/queries"; -import { integrationCreatorFromSecrets } from "@homarr/integrations"; +import { EVERY_5_MINUTES } from "@homarr/cron-jobs-core/expressions"; +import { indexerManagerRequestHandler } from "@homarr/request-handler/indexer-manager"; +import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler"; import { createCronJob } from "../../lib"; -export const indexerManagerJob = createCronJob("indexerManager", EVERY_MINUTE).withCallback(async () => { - const itemsForIntegration = await getItemsWithIntegrationsAsync(db, { - kinds: ["indexerManager"], - }); - - for (const itemForIntegration of itemsForIntegration) { - for (const { integration } of itemForIntegration.integrations) { - const integrationInstance = integrationCreatorFromSecrets(integration); - await integrationInstance.getIndexersAsync(); - } - } -}); +export const indexerManagerJob = createCronJob("indexerManager", EVERY_5_MINUTES).withCallback( + createRequestIntegrationJobHandler(indexerManagerRequestHandler.handler, { + widgetKinds: ["indexerManager"], + getInput: { + indexerManager: () => ({}), + }, + }), +); diff --git a/packages/cron-jobs/src/jobs/integrations/media-organizer.ts b/packages/cron-jobs/src/jobs/integrations/media-organizer.ts index ede54eaf7..1d7128e4d 100644 --- a/packages/cron-jobs/src/jobs/integrations/media-organizer.ts +++ b/packages/cron-jobs/src/jobs/integrations/media-organizer.ts @@ -1,36 +1,35 @@ import dayjs from "dayjs"; -import SuperJSON from "superjson"; import { EVERY_MINUTE } from "@homarr/cron-jobs-core/expressions"; -import { db } from "@homarr/db"; -import { getItemsWithIntegrationsAsync } from "@homarr/db/queries"; -import { integrationCreatorFromSecrets } from "@homarr/integrations"; -import type { CalendarEvent } from "@homarr/integrations/types"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; +import { calendarMonthRequestHandler } from "@homarr/request-handler/calendar"; +import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler"; -// This import is done that way to avoid circular dependencies. -import type { WidgetComponentProps } from "../../../../widgets"; import { createCronJob } from "../../lib"; -export const mediaOrganizerJob = createCronJob("mediaOrganizer", EVERY_MINUTE).withCallback(async () => { - const itemsForIntegration = await getItemsWithIntegrationsAsync(db, { - kinds: ["calendar"], - }); +export const mediaOrganizerJob = createCronJob("mediaOrganizer", EVERY_MINUTE).withCallback( + createRequestIntegrationJobHandler(calendarMonthRequestHandler.handler, { + widgetKinds: ["calendar"], + getInput: { + // Request handler will run for all specified months + calendar: (options) => { + const inputs = []; - for (const itemForIntegration of itemsForIntegration) { - for (const { integration } of itemForIntegration.integrations) { - const options = SuperJSON.parse["options"]>(itemForIntegration.options); + const startOffset = -Number(options.filterPastMonths); + const endOffset = Number(options.filterFutureMonths); - const start = dayjs().subtract(Number(options.filterPastMonths), "months").toDate(); - const end = dayjs().add(Number(options.filterFutureMonths), "months").toDate(); + for (let offsetMonths = startOffset; offsetMonths <= endOffset; offsetMonths++) { + const year = dayjs().subtract(offsetMonths, "months").year(); + const month = dayjs().subtract(offsetMonths, "months").month(); - //Asserting the integration kind until all of them get implemented - const integrationInstance = integrationCreatorFromSecrets(integration); + inputs.push({ + year, + month, + releaseType: options.releaseType, + }); + } - const events = await integrationInstance.getCalendarEventsAsync(start, end); - - const cache = createItemAndIntegrationChannel("calendar", integration.id); - await cache.setAsync(events); - } - } -}); + return inputs; + }, + }, + }), +); diff --git a/packages/cron-jobs/src/jobs/integrations/media-requests.ts b/packages/cron-jobs/src/jobs/integrations/media-requests.ts index 8e34d7305..ededb6141 100644 --- a/packages/cron-jobs/src/jobs/integrations/media-requests.ts +++ b/packages/cron-jobs/src/jobs/integrations/media-requests.ts @@ -1,42 +1,24 @@ -import { EVERY_5_SECONDS } from "@homarr/cron-jobs-core/expressions"; -import { db } from "@homarr/db"; -import { getItemsWithIntegrationsAsync } from "@homarr/db/queries"; -import type { MediaRequestList, MediaRequestStats } from "@homarr/integrations"; -import { integrationCreatorFromSecrets } from "@homarr/integrations"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; +import { EVERY_MINUTE } from "@homarr/cron-jobs-core/expressions"; +import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler"; +import { mediaRequestListRequestHandler } from "@homarr/request-handler/media-request-list"; +import { mediaRequestStatsRequestHandler } from "@homarr/request-handler/media-request-stats"; import { createCronJob } from "../../lib"; -export const mediaRequestsJob = createCronJob("mediaRequests", EVERY_5_SECONDS).withCallback(async () => { - const itemsForIntegration = await getItemsWithIntegrationsAsync(db, { - kinds: ["mediaRequests-requestList", "mediaRequests-requestStats"], - }); +export const mediaRequestStatsJob = createCronJob("mediaRequestStats", EVERY_MINUTE).withCallback( + createRequestIntegrationJobHandler(mediaRequestStatsRequestHandler.handler, { + widgetKinds: ["mediaRequests-requestStats"], + getInput: { + "mediaRequests-requestStats": () => ({}), + }, + }), +); - for (const itemForIntegration of itemsForIntegration) { - for (const { integration } of itemForIntegration.integrations) { - const requestsIntegration = integrationCreatorFromSecrets(integration); - - const mediaRequests = await requestsIntegration.getRequestsAsync(); - const requestsStats = await requestsIntegration.getStatsAsync(); - const requestsUsers = await requestsIntegration.getUsersAsync(); - const requestListChannel = createItemAndIntegrationChannel( - "mediaRequests-requestList", - integration.id, - ); - await requestListChannel.publishAndUpdateLastStateAsync({ - integration: { id: integration.id }, - medias: mediaRequests, - }); - - const requestStatsChannel = createItemAndIntegrationChannel( - "mediaRequests-requestStats", - integration.id, - ); - await requestStatsChannel.publishAndUpdateLastStateAsync({ - integration: { kind: integration.kind, name: integration.name }, - stats: requestsStats, - users: requestsUsers, - }); - } - } -}); +export const mediaRequestListJob = createCronJob("mediaRequestList", EVERY_MINUTE).withCallback( + createRequestIntegrationJobHandler(mediaRequestListRequestHandler.handler, { + widgetKinds: ["mediaRequests-requestList"], + getInput: { + "mediaRequests-requestList": () => ({}), + }, + }), +); diff --git a/packages/cron-jobs/src/jobs/integrations/media-server.ts b/packages/cron-jobs/src/jobs/integrations/media-server.ts index 88c7e85ba..3ba0324cb 100644 --- a/packages/cron-jobs/src/jobs/integrations/media-server.ts +++ b/packages/cron-jobs/src/jobs/integrations/media-server.ts @@ -1,22 +1,14 @@ import { EVERY_5_SECONDS } from "@homarr/cron-jobs-core/expressions"; -import { db } from "@homarr/db"; -import { getItemsWithIntegrationsAsync } from "@homarr/db/queries"; -import { integrationCreatorFromSecrets } from "@homarr/integrations"; -import { createItemAndIntegrationChannel } from "@homarr/redis"; +import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler"; +import { mediaServerRequestHandler } from "@homarr/request-handler/media-server"; import { createCronJob } from "../../lib"; -export const mediaServerJob = createCronJob("mediaServer", EVERY_5_SECONDS).withCallback(async () => { - const itemsForIntegration = await getItemsWithIntegrationsAsync(db, { - kinds: ["mediaServer"], - }); - - for (const itemForIntegration of itemsForIntegration) { - for (const { integration } of itemForIntegration.integrations) { - const integrationInstance = integrationCreatorFromSecrets(integration); - const streamSessions = await integrationInstance.getCurrentSessionsAsync(); - const channel = createItemAndIntegrationChannel("mediaServer", integration.id); - await channel.publishAndUpdateLastStateAsync(streamSessions); - } - } -}); +export const mediaServerJob = createCronJob("mediaServer", EVERY_5_SECONDS).withCallback( + createRequestIntegrationJobHandler(mediaServerRequestHandler.handler, { + widgetKinds: ["mediaServer"], + getInput: { + mediaServer: () => ({}), + }, + }), +); diff --git a/packages/integrations/src/calendar-types.ts b/packages/integrations/src/calendar-types.ts index 95399c4b1..0aad96b03 100644 --- a/packages/integrations/src/calendar-types.ts +++ b/packages/integrations/src/calendar-types.ts @@ -1,11 +1,11 @@ export const radarrReleaseTypes = ["inCinemas", "digitalRelease", "physicalRelease"] as const; -type ReleaseType = (typeof radarrReleaseTypes)[number]; +export type RadarrReleaseType = (typeof radarrReleaseTypes)[number]; export interface CalendarEvent { name: string; subName: string; date: Date; - dates?: { type: ReleaseType; date: Date }[]; + dates?: { type: RadarrReleaseType; date: Date }[]; description?: string; thumbnail?: string; mediaInformation?: { diff --git a/packages/integrations/src/interfaces/downloads/download-client-items.ts b/packages/integrations/src/interfaces/downloads/download-client-items.ts index aaca5b40a..53d31b49a 100644 --- a/packages/integrations/src/interfaces/downloads/download-client-items.ts +++ b/packages/integrations/src/interfaces/downloads/download-client-items.ts @@ -45,7 +45,7 @@ export const downloadClientItemSchema = z.object({ export type DownloadClientItem = z.infer; export type ExtendedDownloadClientItem = { - integration: Integration; + integration: Pick; received: number; ratio?: number; actions?: { diff --git a/packages/integrations/src/interfaces/downloads/download-client-status.ts b/packages/integrations/src/interfaces/downloads/download-client-status.ts index 7c55e77c5..d8bfc09c0 100644 --- a/packages/integrations/src/interfaces/downloads/download-client-status.ts +++ b/packages/integrations/src/interfaces/downloads/download-client-status.ts @@ -11,7 +11,7 @@ export interface DownloadClientStatus { type: "usenet" | "torrent"; } export interface ExtendedClientStatus { - integration: Integration; + integration: Pick & { updatedAt: Date }; interact: boolean; status?: { /** To derive from current items */ diff --git a/packages/integrations/src/interfaces/media-requests/media-request.ts b/packages/integrations/src/interfaces/media-requests/media-request.ts index 51c97c24c..c997e8014 100644 --- a/packages/integrations/src/interfaces/media-requests/media-request.ts +++ b/packages/integrations/src/interfaces/media-requests/media-request.ts @@ -39,10 +39,6 @@ export interface RequestUser { } export interface MediaRequestStats { - integration: { - kind: string; - name: string; - }; stats: RequestStats; users: RequestUser[]; } diff --git a/packages/integrations/src/overseerr/overseerr-integration.ts b/packages/integrations/src/overseerr/overseerr-integration.ts index 8b1d9e8e6..db5ab2b56 100644 --- a/packages/integrations/src/overseerr/overseerr-integration.ts +++ b/packages/integrations/src/overseerr/overseerr-integration.ts @@ -1,3 +1,4 @@ +import { logger } from "@homarr/log"; import { z } from "@homarr/validation"; import { Integration } from "../base/integration"; @@ -125,20 +126,38 @@ export class OverseerrIntegration extends Integration implements ISearchableInte } public async approveRequestAsync(requestId: number): Promise { + logger.info(`Approving media request id='${requestId}' integration='${this.integration.name}'`); await fetch(`${this.integration.url}/api/v1/request/${requestId}/approve`, { method: "POST", headers: { "X-Api-Key": this.getSecretValue("apiKey"), }, + }).then((response) => { + if (!response.ok) { + logger.error( + `Failed to approve media request id='${requestId}' integration='${this.integration.name}' reason='${response.status} ${response.statusText}' url='${response.url}'`, + ); + } + + logger.info(`Successfully approved media request id='${requestId}' integration='${this.integration.name}'`); }); } public async declineRequestAsync(requestId: number): Promise { + logger.info(`Declining media request id='${requestId}' integration='${this.integration.name}'`); await fetch(`${this.integration.url}/api/v1/request/${requestId}/decline`, { method: "POST", headers: { "X-Api-Key": this.getSecretValue("apiKey"), }, + }).then((response) => { + if (!response.ok) { + logger.error( + `Failed to decline media request id='${requestId}' integration='${this.integration.name}' reason='${response.status} ${response.statusText}' url='${response.url}'`, + ); + } + + logger.info(`Successfully declined media request id='${requestId}' integration='${this.integration.name}'`); }); } diff --git a/packages/integrations/src/types.ts b/packages/integrations/src/types.ts index 1d3c961d5..2c1f72c39 100644 --- a/packages/integrations/src/types.ts +++ b/packages/integrations/src/types.ts @@ -5,3 +5,4 @@ export * from "./interfaces/indexer-manager/indexer"; export * from "./interfaces/media-requests/media-request"; export * from "./pi-hole/pi-hole-types"; export * from "./base/searchable-integration"; +export * from "./homeassistant/homeassistant-types"; diff --git a/packages/redis/src/index.ts b/packages/redis/src/index.ts index 67373769e..d30adfccd 100644 --- a/packages/redis/src/index.ts +++ b/packages/redis/src/index.ts @@ -1,6 +1,13 @@ import { createListChannel, createQueueChannel, createSubPubChannel } from "./lib/channel"; -export { createCacheChannel, createItemAndIntegrationChannel, createItemChannel, handshakeAsync } from "./lib/channel"; +export { + createCacheChannel, + createItemAndIntegrationChannel, + createItemChannel, + createIntegrationOptionsChannel, + createChannelWithLatestAndEvents, + handshakeAsync, +} from "./lib/channel"; export const exampleChannel = createSubPubChannel<{ message: string }>("example"); export const pingChannel = createSubPubChannel<{ url: string; statusCode: number } | { url: string; error: string }>( diff --git a/packages/redis/src/lib/channel.ts b/packages/redis/src/lib/channel.ts index 698bafb7c..cdf84f492 100644 --- a/packages/redis/src/lib/channel.ts +++ b/packages/redis/src/lib/channel.ts @@ -1,5 +1,6 @@ import superjson from "superjson"; +import { hashObjectBase64 } from "@homarr/common"; import { createId } from "@homarr/db"; import type { WidgetKind } from "@homarr/definitions"; import { logger } from "@homarr/log"; @@ -172,11 +173,21 @@ export const createItemAndIntegrationChannel = (kind: WidgetKind, integra return createChannelWithLatestAndEvents(channelName); }; +export const createIntegrationOptionsChannel = ( + integrationId: string, + queryKey: string, + options: Record, +) => { + const optionsKey = hashObjectBase64(options); + const channelName = `integration:${integrationId}:${queryKey}:options:${optionsKey}`; + return createChannelWithLatestAndEvents(channelName); +}; + export const createItemChannel = (itemId: string) => { return createChannelWithLatestAndEvents(`item:${itemId}`); }; -const createChannelWithLatestAndEvents = (channelName: string) => { +export const createChannelWithLatestAndEvents = (channelName: string) => { return { subscribe: (callback: (data: TData) => void) => { return ChannelSubscriptionTracker.subscribe(channelName, (message) => { @@ -196,6 +207,7 @@ const createChannelWithLatestAndEvents = (channelName: string) => { return superjson.parse<{ data: TData; timestamp: Date }>(data); }, + name: channelName, }; }; diff --git a/packages/request-handler/eslint.config.js b/packages/request-handler/eslint.config.js new file mode 100644 index 000000000..5b19b6f8a --- /dev/null +++ b/packages/request-handler/eslint.config.js @@ -0,0 +1,9 @@ +import baseConfig from "@homarr/eslint-config/base"; + +/** @type {import('typescript-eslint').Config} */ +export default [ + { + ignores: [], + }, + ...baseConfig, +]; diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json new file mode 100644 index 000000000..13d3abe0b --- /dev/null +++ b/packages/request-handler/package.json @@ -0,0 +1,41 @@ +{ + "name": "@homarr/request-handler", + "private": true, + "version": "0.1.0", + "type": "module", + "exports": { + "./*": "./src/*.ts" + }, + "typesVersions": { + "*": { + "*": [ + "src/*" + ] + } + }, + "license": "MIT", + "scripts": { + "clean": "rm -rf .turbo node_modules", + "lint": "eslint", + "format": "prettier --check . --ignore-path ../../.gitignore", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@homarr/common": "workspace:^0.1.0", + "@homarr/db": "workspace:^0.1.0", + "@homarr/definitions": "workspace:^0.1.0", + "@homarr/integrations": "workspace:^0.1.0", + "@homarr/log": "workspace:^0.1.0", + "@homarr/redis": "workspace:^0.1.0", + "dayjs": "^1.11.13", + "superjson": "2.2.1" + }, + "devDependencies": { + "@homarr/eslint-config": "workspace:^0.2.0", + "@homarr/prettier-config": "workspace:^0.1.0", + "@homarr/tsconfig": "workspace:^0.1.0", + "eslint": "^9.15.0", + "typescript": "^5.6.3" + }, + "prettier": "@homarr/prettier-config" +} diff --git a/packages/request-handler/src/calendar.ts b/packages/request-handler/src/calendar.ts new file mode 100644 index 000000000..3987e0497 --- /dev/null +++ b/packages/request-handler/src/calendar.ts @@ -0,0 +1,22 @@ +import dayjs from "dayjs"; + +import type { IntegrationKindByCategory } from "@homarr/definitions"; +import { integrationCreator } from "@homarr/integrations"; +import type { CalendarEvent, RadarrReleaseType } from "@homarr/integrations/types"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const calendarMonthRequestHandler = createCachedIntegrationRequestHandler< + CalendarEvent[], + IntegrationKindByCategory<"calendar">, + { year: number; month: number; releaseType: RadarrReleaseType[] } +>({ + async requestAsync(integration, input) { + const integrationInstance = integrationCreator(integration); + const startDate = dayjs().year(input.year).month(input.month).startOf("month"); + const endDate = startDate.clone().endOf("month"); + return await integrationInstance.getCalendarEventsAsync(startDate.toDate(), endDate.toDate()); + }, + cacheDuration: dayjs.duration(1, "minute"), + queryKey: "calendarMonth", +}); diff --git a/packages/request-handler/src/dns-hole.ts b/packages/request-handler/src/dns-hole.ts new file mode 100644 index 000000000..c05ee575d --- /dev/null +++ b/packages/request-handler/src/dns-hole.ts @@ -0,0 +1,20 @@ +import dayjs from "dayjs"; + +import type { IntegrationKindByCategory } from "@homarr/definitions"; +import { integrationCreator } from "@homarr/integrations"; +import type { DnsHoleSummary } from "@homarr/integrations/types"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const dnsHoleRequestHandler = createCachedIntegrationRequestHandler< + DnsHoleSummary, + IntegrationKindByCategory<"dnsHole">, + Record +>({ + async requestAsync(integration, _input) { + const integrationInstance = integrationCreator(integration); + return await integrationInstance.getSummaryAsync(); + }, + cacheDuration: dayjs.duration(5, "seconds"), + queryKey: "dnsHoleSummary", +}); diff --git a/packages/request-handler/src/downloads.ts b/packages/request-handler/src/downloads.ts new file mode 100644 index 000000000..71fc0d4a4 --- /dev/null +++ b/packages/request-handler/src/downloads.ts @@ -0,0 +1,20 @@ +import dayjs from "dayjs"; + +import type { IntegrationKindByCategory } from "@homarr/definitions"; +import type { DownloadClientJobsAndStatus } from "@homarr/integrations"; +import { integrationCreator } from "@homarr/integrations"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const downloadClientRequestHandler = createCachedIntegrationRequestHandler< + DownloadClientJobsAndStatus, + IntegrationKindByCategory<"downloadClient">, + Record +>({ + async requestAsync(integration, _input) { + const integrationInstance = integrationCreator(integration); + return await integrationInstance.getClientJobsAndStatusAsync(); + }, + cacheDuration: dayjs.duration(5, "seconds"), + queryKey: "downloadClientJobStatus", +}); diff --git a/packages/request-handler/src/health-monitoring.ts b/packages/request-handler/src/health-monitoring.ts new file mode 100644 index 000000000..cd3b364d1 --- /dev/null +++ b/packages/request-handler/src/health-monitoring.ts @@ -0,0 +1,20 @@ +import dayjs from "dayjs"; + +import type { IntegrationKindByCategory } from "@homarr/definitions"; +import { integrationCreator } from "@homarr/integrations"; +import type { HealthMonitoring } from "@homarr/integrations/types"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const systemInfoRequestHandler = createCachedIntegrationRequestHandler< + HealthMonitoring, + IntegrationKindByCategory<"healthMonitoring">, + Record +>({ + async requestAsync(integration, _input) { + const integrationInstance = integrationCreator(integration); + return await integrationInstance.getSystemInfoAsync(); + }, + cacheDuration: dayjs.duration(5, "seconds"), + queryKey: "systemInfo", +}); diff --git a/packages/request-handler/src/indexer-manager.ts b/packages/request-handler/src/indexer-manager.ts new file mode 100644 index 000000000..5262fa8f0 --- /dev/null +++ b/packages/request-handler/src/indexer-manager.ts @@ -0,0 +1,20 @@ +import dayjs from "dayjs"; + +import type { IntegrationKindByCategory } from "@homarr/definitions"; +import { integrationCreator } from "@homarr/integrations"; +import type { Indexer } from "@homarr/integrations/types"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const indexerManagerRequestHandler = createCachedIntegrationRequestHandler< + Indexer[], + IntegrationKindByCategory<"indexerManager">, + Record +>({ + async requestAsync(integration, _input) { + const integrationInstance = integrationCreator(integration); + return await integrationInstance.getIndexersAsync(); + }, + cacheDuration: dayjs.duration(5, "minutes"), + queryKey: "indexerManager", +}); diff --git a/packages/request-handler/src/lib/cached-integration-request-handler.ts b/packages/request-handler/src/lib/cached-integration-request-handler.ts new file mode 100644 index 000000000..437e7117c --- /dev/null +++ b/packages/request-handler/src/lib/cached-integration-request-handler.ts @@ -0,0 +1,42 @@ +import type { Duration } from "dayjs/plugin/duration"; + +import type { Modify } from "@homarr/common/types"; +import type { Integration, IntegrationSecret } from "@homarr/db/schema/sqlite"; +import type { IntegrationKind } from "@homarr/definitions"; +import { createIntegrationOptionsChannel } from "@homarr/redis"; + +import { createCachedRequestHandler } from "./cached-request-handler"; + +type IntegrationOfKind = Omit & { + kind: TKind; + decryptedSecrets: Modify, { value: string }>[]; +}; + +interface Options> { + // Unique key for this request handler + queryKey: string; + requestAsync: (integration: IntegrationOfKind, input: TInput) => Promise; + cacheDuration: Duration; +} + +export const createCachedIntegrationRequestHandler = < + TData, + TKind extends IntegrationKind, + TInput extends Record, +>( + options: Options, +) => { + return { + handler: (integration: IntegrationOfKind, itemOptions: TInput) => + createCachedRequestHandler({ + queryKey: options.queryKey, + requestAsync: async (input: { options: TInput; integration: IntegrationOfKind }) => { + return await options.requestAsync(input.integration, input.options); + }, + cacheDuration: options.cacheDuration, + createRedisChannel(input, options) { + return createIntegrationOptionsChannel(input.integration.id, options.queryKey, input.options); + }, + }).handler({ options: itemOptions, integration }), + }; +}; diff --git a/packages/request-handler/src/lib/cached-request-handler.ts b/packages/request-handler/src/lib/cached-request-handler.ts new file mode 100644 index 000000000..2e1739248 --- /dev/null +++ b/packages/request-handler/src/lib/cached-request-handler.ts @@ -0,0 +1,74 @@ +import dayjs from "dayjs"; +import type { Duration } from "dayjs/plugin/duration"; + +import { logger } from "@homarr/log"; +import type { createChannelWithLatestAndEvents } from "@homarr/redis"; + +interface Options> { + // Unique key for this request handler + queryKey: string; + requestAsync: (input: TInput) => Promise; + createRedisChannel: ( + input: TInput, + options: Options, + ) => ReturnType>; + cacheDuration: Duration; +} + +export const createCachedRequestHandler = >( + options: Options, +) => { + return { + handler: (input: TInput) => { + const channel = options.createRedisChannel(input, options); + + return { + async getCachedOrUpdatedDataAsync({ forceUpdate = false }) { + const requestNewDataAsync = async () => { + const data = await options.requestAsync(input); + await channel.publishAndUpdateLastStateAsync(data); + return { + data, + timestamp: new Date(), + }; + }; + + if (forceUpdate) { + logger.debug( + `Cached request handler forced update for channel='${channel.name}' queryKey='${options.queryKey}'`, + ); + return await requestNewDataAsync(); + } + + const channelData = await channel.getAsync(); + + const shouldRequestNewData = + !channelData || + dayjs().diff(channelData.timestamp, "milliseconds") > options.cacheDuration.asMilliseconds(); + + if (shouldRequestNewData) { + logger.debug( + `Cached request handler cache miss for channel='${channel.name}' queryKey='${options.queryKey}' reason='${!channelData ? "no data" : "cache expired"}'`, + ); + return await requestNewDataAsync(); + } + + logger.debug( + `Cached request handler cache hit for channel='${channel.name}' queryKey='${options.queryKey}' expiresAt='${dayjs(channelData.timestamp).add(options.cacheDuration).toISOString()}'`, + ); + + return channelData; + }, + async invalidateAsync() { + logger.debug( + `Cached request handler invalidating cache channel='${channel.name}' queryKey='${options.queryKey}'`, + ); + await this.getCachedOrUpdatedDataAsync({ forceUpdate: true }); + }, + subscribe(callback: (data: TData) => void) { + return channel.subscribe(callback); + }, + }; + }, + }; +}; diff --git a/packages/request-handler/src/lib/cached-request-integration-job-handler.ts b/packages/request-handler/src/lib/cached-request-integration-job-handler.ts new file mode 100644 index 000000000..85bbd78f8 --- /dev/null +++ b/packages/request-handler/src/lib/cached-request-integration-job-handler.ts @@ -0,0 +1,103 @@ +import SuperJSON from "superjson"; + +import { hashObjectBase64, Stopwatch } from "@homarr/common"; +import { decryptSecret } from "@homarr/common/server"; +import type { MaybeArray } from "@homarr/common/types"; +import { db } from "@homarr/db"; +import { getItemsWithIntegrationsAsync } from "@homarr/db/queries"; +import type { WidgetKind } from "@homarr/definitions"; +import { logger } from "@homarr/log"; + +// This imports are done that way to avoid circular dependencies. +import type { inferSupportedIntegrationsStrict } from "../../../widgets/src"; +import { reduceWidgetOptionsWithDefaultValues } from "../../../widgets/src"; +import type { WidgetComponentProps } from "../../../widgets/src/definition"; +import type { createCachedIntegrationRequestHandler } from "./cached-integration-request-handler"; + +export const createRequestIntegrationJobHandler = < + TWidgetKind extends WidgetKind, + TIntegrationKind extends inferSupportedIntegrationsStrict, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + THandler extends ReturnType>["handler"], +>( + handler: THandler, + { + widgetKinds, + getInput, + }: { + widgetKinds: TWidgetKind[]; + getInput: { + [key in TWidgetKind]: (options: WidgetComponentProps["options"]) => MaybeArray[1]>; + }; + }, +) => { + return async () => { + const itemsForIntegration = await getItemsWithIntegrationsAsync(db, { + kinds: widgetKinds, + }); + + logger.debug( + `Found items for integration widgetKinds='${widgetKinds.join(",")}' count=${itemsForIntegration.length}`, + ); + + const distinctIntegrations: { + integrationId: string; + inputHash: string; + integration: (typeof itemsForIntegration)[number]["integrations"][number]["integration"]; + input: Parameters[1]; + }[] = []; + + for (const itemForIntegration of itemsForIntegration) { + const oneOrMultipleInputs = getInput[itemForIntegration.kind]( + reduceWidgetOptionsWithDefaultValues( + itemForIntegration.kind, + SuperJSON.parse(itemForIntegration.options), + ) as never, + ); + for (const { integration } of itemForIntegration.integrations) { + const inputArray = Array.isArray(oneOrMultipleInputs) ? oneOrMultipleInputs : [oneOrMultipleInputs]; + + for (const input of inputArray) { + const inputHash = hashObjectBase64(input); + if ( + distinctIntegrations.some( + (distinctIntegration) => + distinctIntegration.integrationId === integration.id && distinctIntegration.inputHash === inputHash, + ) + ) { + continue; + } + + distinctIntegrations.push({ integrationId: integration.id, inputHash, integration, input }); + } + } + } + + for (const { integrationId, integration, input, inputHash } of distinctIntegrations) { + try { + const decryptedSecrets = integration.secrets.map((secret) => ({ + ...secret, + value: decryptSecret(secret.value), + })); + + const innerHandler = handler( + { + ...integration, + kind: integration.kind as TIntegrationKind, + decryptedSecrets, + }, + input, + ); + const stopWatch = new Stopwatch(); + await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: true }); + logger.debug( + `Ran integration job integration=${integrationId} inputHash='${inputHash}' elapsed=${stopWatch.getElapsedInHumanWords()}`, + ); + } catch (error) { + logger.error( + `Failed to run integration job integration=${integrationId} inputHash='${inputHash}' error=${error as string}`, + ); + } + } + }; +}; diff --git a/packages/request-handler/src/media-request-list.ts b/packages/request-handler/src/media-request-list.ts new file mode 100644 index 000000000..53c31a7b8 --- /dev/null +++ b/packages/request-handler/src/media-request-list.ts @@ -0,0 +1,20 @@ +import dayjs from "dayjs"; + +import type { IntegrationKindByCategory } from "@homarr/definitions"; +import { integrationCreator } from "@homarr/integrations"; +import type { MediaRequest } from "@homarr/integrations/types"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const mediaRequestListRequestHandler = createCachedIntegrationRequestHandler< + MediaRequest[], + IntegrationKindByCategory<"mediaRequest">, + Record +>({ + async requestAsync(integration, _input) { + const integrationInstance = integrationCreator(integration); + return await integrationInstance.getRequestsAsync(); + }, + cacheDuration: dayjs.duration(1, "minute"), + queryKey: "mediaRequestList", +}); diff --git a/packages/request-handler/src/media-request-stats.ts b/packages/request-handler/src/media-request-stats.ts new file mode 100644 index 000000000..c4829167a --- /dev/null +++ b/packages/request-handler/src/media-request-stats.ts @@ -0,0 +1,23 @@ +import dayjs from "dayjs"; + +import type { IntegrationKindByCategory } from "@homarr/definitions"; +import { integrationCreator } from "@homarr/integrations"; +import type { MediaRequestStats } from "@homarr/integrations/types"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const mediaRequestStatsRequestHandler = createCachedIntegrationRequestHandler< + MediaRequestStats, + IntegrationKindByCategory<"mediaRequest">, + Record +>({ + async requestAsync(integration, _input) { + const integrationInstance = integrationCreator(integration); + return { + stats: await integrationInstance.getStatsAsync(), + users: await integrationInstance.getUsersAsync(), + }; + }, + cacheDuration: dayjs.duration(1, "minute"), + queryKey: "mediaRequestStats", +}); diff --git a/packages/request-handler/src/media-server.ts b/packages/request-handler/src/media-server.ts new file mode 100644 index 000000000..e2f52773f --- /dev/null +++ b/packages/request-handler/src/media-server.ts @@ -0,0 +1,20 @@ +import dayjs from "dayjs"; + +import type { IntegrationKindByCategory } from "@homarr/definitions"; +import type { StreamSession } from "@homarr/integrations"; +import { integrationCreator } from "@homarr/integrations"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const mediaServerRequestHandler = createCachedIntegrationRequestHandler< + StreamSession[], + IntegrationKindByCategory<"mediaService">, + Record +>({ + async requestAsync(integration, _input) { + const integrationInstance = integrationCreator(integration); + return await integrationInstance.getCurrentSessionsAsync(); + }, + cacheDuration: dayjs.duration(5, "seconds"), + queryKey: "mediaServerSessions", +}); diff --git a/packages/request-handler/src/smart-home-entity-state.ts b/packages/request-handler/src/smart-home-entity-state.ts new file mode 100644 index 000000000..69641949c --- /dev/null +++ b/packages/request-handler/src/smart-home-entity-state.ts @@ -0,0 +1,25 @@ +import dayjs from "dayjs"; + +import type { IntegrationKindByCategory } from "@homarr/definitions"; +import { integrationCreator } from "@homarr/integrations"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const smartHomeEntityStateRequestHandler = createCachedIntegrationRequestHandler< + string, + IntegrationKindByCategory<"smartHomeServer">, + { entityId: string } +>({ + async requestAsync(integration, input) { + const integrationInstance = integrationCreator(integration); + const result = await integrationInstance.getEntityStateAsync(input.entityId); + + if (!result.success) { + throw new Error(`Unable to fetch data from Home Assistant error='${result.error as string}'`); + } + + return result.data.state; + }, + cacheDuration: dayjs.duration(1, "minute"), + queryKey: "smartHome-entityState", +}); diff --git a/packages/request-handler/tsconfig.json b/packages/request-handler/tsconfig.json new file mode 100644 index 000000000..cbe8483d9 --- /dev/null +++ b/packages/request-handler/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@homarr/tsconfig/base.json", + "compilerOptions": { + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + }, + "include": ["*.ts", "src"], + "exclude": ["node_modules"] +} diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 7910e01ea..c50a77c28 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -2123,8 +2123,11 @@ "downloads": { "label": "Downloads" }, - "mediaRequests": { - "label": "Media Requests" + "mediaRequestStats": { + "label": "Media Request Stats" + }, + "mediaRequestList": { + "label": "Media Request List" }, "rssFeeds": { "label": "RSS feeds" diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 663a03780..3c45f761e 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -6,7 +6,8 @@ "type": "module", "exports": { ".": "./index.ts", - "./errors": "./src/errors/component.tsx" + "./errors": "./src/errors/component.tsx", + "./modals": "./src/modals/index.ts" }, "typesVersions": { "*": { diff --git a/packages/widgets/src/bookmarks/add-button.tsx b/packages/widgets/src/bookmarks/add-button.tsx new file mode 100644 index 000000000..738355cb9 --- /dev/null +++ b/packages/widgets/src/bookmarks/add-button.tsx @@ -0,0 +1,23 @@ +"use client"; + +import { Button } from "@mantine/core"; + +import { useModalAction } from "@homarr/modals"; +import { useI18n } from "@homarr/translation/client"; + +import type { SortableItemListInput } from "../options"; +import { AppSelectModal } from "./app-select-modal"; + +export const BookmarkAddButton: SortableItemListInput< + { name: string; description: string | null; id: string; iconUrl: string; href: string | null }, + string +>["AddButton"] = ({ addItem, values }) => { + const { openModal } = useModalAction(AppSelectModal); + const t = useI18n(); + + return ( + + ); +}; diff --git a/packages/widgets/src/bookmarks/index.tsx b/packages/widgets/src/bookmarks/index.tsx index 8c6288ed0..dccd16e3d 100644 --- a/packages/widgets/src/bookmarks/index.tsx +++ b/packages/widgets/src/bookmarks/index.tsx @@ -1,14 +1,12 @@ -import { ActionIcon, Avatar, Button, Group, Stack, Text } from "@mantine/core"; +import { ActionIcon, Avatar, Group, Stack, Text } from "@mantine/core"; import { IconClock, IconX } from "@tabler/icons-react"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; -import { useModalAction } from "@homarr/modals"; -import { useI18n } from "@homarr/translation/client"; import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; -import { AppSelectModal } from "./app-select-modal"; +import { BookmarkAddButton } from "./add-button"; export const { definition, componentLoader } = createWidgetDefinition("bookmarks", { icon: IconClock, @@ -42,16 +40,7 @@ export const { definition, componentLoader } = createWidgetDefinition("bookmarks ); }, - AddButton({ addItem, values }) { - const { openModal } = useModalAction(AppSelectModal); - const t = useI18n(); - - return ( - - ); - }, + AddButton: BookmarkAddButton, uniqueIdentifier: (item) => item.id, useData: (initialIds) => { const { data, error, isLoading } = clientApi.app.byIds.useQuery(initialIds); diff --git a/packages/widgets/src/calendar/component.tsx b/packages/widgets/src/calendar/component.tsx index bcdca811c..d2eb3c780 100644 --- a/packages/widgets/src/calendar/component.tsx +++ b/packages/widgets/src/calendar/component.tsx @@ -12,17 +12,14 @@ import type { WidgetComponentProps } from "../definition"; import { CalendarDay } from "./calender-day"; import classes from "./component.module.css"; -export default function CalendarWidget({ - isEditMode, - integrationIds, - itemId, - options, -}: WidgetComponentProps<"calendar">) { +export default function CalendarWidget({ isEditMode, integrationIds, options }: WidgetComponentProps<"calendar">) { + const [month, setMonth] = useState(new Date()); const [events] = clientApi.widget.calendar.findAllEvents.useSuspenseQuery( { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - itemId: itemId!, integrationIds, + month: month.getMonth(), + year: month.getFullYear(), + releaseType: options.releaseType, }, { refetchOnMount: false, @@ -31,7 +28,6 @@ export default function CalendarWidget({ retry: false, }, ); - const [month, setMonth] = useState(new Date()); const params = useParams(); const locale = params.locale as string; const [firstDayOfWeek] = clientApi.user.getFirstDayOfWeekForUserOrDefault.useSuspenseQuery(); diff --git a/packages/widgets/src/dns-hole/controls/component.tsx b/packages/widgets/src/dns-hole/controls/component.tsx index 06e41ea7b..36324d329 100644 --- a/packages/widgets/src/dns-hole/controls/component.tsx +++ b/packages/widgets/src/dns-hole/controls/component.tsx @@ -18,16 +18,16 @@ import { } from "@mantine/core"; import { useDisclosure } from "@mantine/hooks"; import { IconCircleFilled, IconClockPause, IconPlayerPlay, IconPlayerStop } from "@tabler/icons-react"; -import dayjs from "dayjs"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; import { useIntegrationsWithInteractAccess } from "@homarr/auth/client"; +import { useIntegrationConnected } from "@homarr/common"; import { integrationDefs } from "@homarr/definitions"; import type { TranslationFunction } from "@homarr/translation"; import { useI18n } from "@homarr/translation/client"; -import { widgetKind } from "."; +import type { widgetKind } from "."; import type { WidgetComponentProps } from "../../definition"; import { NoIntegrationSelectedError } from "../../errors"; import TimerModal from "./TimerModal"; @@ -47,7 +47,6 @@ export default function DnsHoleControlsWidget({ const [summaries] = clientApi.widget.dnsHole.summary.useSuspenseQuery( { - widgetKind: "dnsHoleControls", integrationIds, }, { @@ -61,21 +60,27 @@ export default function DnsHoleControlsWidget({ // Subscribe to summary updates clientApi.widget.dnsHole.subscribeToSummary.useSubscription( { - widgetKind, integrationIds, }, { onData: (data) => { utils.widget.dnsHole.summary.setData( { - widgetKind: "dnsHoleControls", integrationIds, }, (prevData) => { if (!prevData) return undefined; const newData = prevData.map((summary) => - summary.integration.id === data.integration.id ? { ...summary, summary: data.summary } : summary, + summary.integration.id === data.integration.id + ? { + integration: { + ...summary.integration, + updatedAt: new Date(), + }, + summary: data.summary, + } + : summary, ); return newData; @@ -90,14 +95,13 @@ export default function DnsHoleControlsWidget({ onSettled: (_, error, { integrationId }) => { utils.widget.dnsHole.summary.setData( { - widgetKind: "dnsHoleControls", integrationIds, }, (prevData) => { if (!prevData) return []; return prevData.map((item) => - item.integration.id === integrationId && item.summary + item.integration.id === integrationId ? { ...item, summary: { @@ -115,14 +119,13 @@ export default function DnsHoleControlsWidget({ onSettled: (_, error, { integrationId }) => { utils.widget.dnsHole.summary.setData( { - widgetKind: "dnsHoleControls", integrationIds, }, (prevData) => { if (!prevData) return []; return prevData.map((item) => - item.integration.id === integrationId && item.summary + item.integration.id === integrationId ? { ...item, summary: { @@ -138,17 +141,16 @@ export default function DnsHoleControlsWidget({ }); const toggleDns = (integrationId: string) => { const integrationStatus = summaries.find(({ integration }) => integration.id === integrationId); - if (!integrationStatus?.summary?.status) return; + if (!integrationStatus?.summary.status) return; utils.widget.dnsHole.summary.setData( { - widgetKind: "dnsHoleControls", integrationIds, }, (prevData) => { if (!prevData) return []; return prevData.map((item) => - item.integration.id === integrationId && item.summary + item.integration.id === integrationId ? { ...item, summary: { @@ -170,7 +172,7 @@ export default function DnsHoleControlsWidget({ // make lists of enabled and disabled interactable integrations (with permissions, not disconnected and not processing) const integrationsSummaries = summaries.reduce( (acc, { summary, integration: { id } }) => - integrationsWithInteractions.includes(id) && summary?.status != null ? (acc[summary.status].push(id), acc) : acc, + integrationsWithInteractions.includes(id) && summary.status != null ? (acc[summary.status].push(id), acc) : acc, { enabled: [] as string[], disabled: [] as string[] }, ); @@ -310,9 +312,8 @@ const ControlsCard: React.FC = ({ open, t, }) => { - // Independently determine connection status, current state and permissions - const isConnected = data.summary !== null && Math.abs(dayjs(data.timestamp).diff()) < 30000; - const isEnabled = data.summary?.status ? data.summary.status === "enabled" : undefined; + const isConnected = useIntegrationConnected(data.integration.updatedAt, { timeout: 30000 }); + const isEnabled = data.summary.status ? data.summary.status === "enabled" : undefined; const isInteractPermitted = integrationsWithInteractions.includes(data.integration.id); // Use all factors to infer the state of the action buttons const controlEnabled = isInteractPermitted && isEnabled !== undefined && isConnected; @@ -355,7 +356,7 @@ const ControlsCard: React.FC = ({ lts="0.1cqmin" color="var(--background-color)" c="var(--mantine-color-text)" - styles={{ section: { marginInlineEnd: "2.5cqmin" } }} + styles={{ section: { marginInlineEnd: "2.5cqmin" }, root: { cursor: "inherit" } }} leftSection={ isConnected && ( ) { const [summaries] = clientApi.widget.dnsHole.summary.useSuspenseQuery( { - widgetKind, integrationIds, }, { @@ -39,14 +37,12 @@ export default function DnsHoleSummaryWidget({ options, integrationIds }: Widget clientApi.widget.dnsHole.subscribeToSummary.useSubscription( { - widgetKind, integrationIds, }, { onData: (data) => { utils.widget.dnsHole.summary.setData( { - widgetKind, integrationIds, }, (prevData) => { @@ -64,14 +60,7 @@ export default function DnsHoleSummaryWidget({ options, integrationIds }: Widget }, ); - const data = useMemo( - () => - summaries - .filter((pair) => Math.abs(dayjs(pair.timestamp).diff()) < 30000) - .flatMap(({ summary }) => summary) - .filter((summary) => summary !== null), - [summaries], - ); + const data = useMemo(() => summaries.flatMap(({ summary }) => summary), [summaries]); if (integrationIds.length === 0) { throw new NoIntegrationSelectedError(); diff --git a/packages/widgets/src/downloads/component.tsx b/packages/widgets/src/downloads/component.tsx index e437787ef..37aac837c 100644 --- a/packages/widgets/src/downloads/component.tsx +++ b/packages/widgets/src/downloads/component.tsx @@ -21,7 +21,7 @@ import { Title, Tooltip, } from "@mantine/core"; -import { useDisclosure, useTimeout } from "@mantine/hooks"; +import { useDisclosure } from "@mantine/hooks"; import type { IconProps } from "@tabler/icons-react"; import { IconAlertTriangle, @@ -39,13 +39,9 @@ import { MantineReactTable, useMantineReactTable } from "mantine-react-table"; import { clientApi } from "@homarr/api/client"; import { useIntegrationsWithInteractAccess } from "@homarr/auth/client"; -import { humanFileSize } from "@homarr/common"; +import { humanFileSize, useIntegrationConnected } from "@homarr/common"; import { getIconUrl, getIntegrationKindsByCategory } from "@homarr/definitions"; -import type { - DownloadClientJobsAndStatus, - ExtendedClientStatus, - ExtendedDownloadClientItem, -} from "@homarr/integrations"; +import type { ExtendedClientStatus, ExtendedDownloadClientItem } from "@homarr/integrations"; import { useScopedI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../definition"; @@ -82,8 +78,6 @@ const standardIconStyle: IconProps["style"] = { width: "var(--icon-size)", }; -const invalidateTime = 30000; - export default function DownloadClientsWidget({ isEditMode, integrationIds, @@ -103,26 +97,10 @@ export default function DownloadClientsWidget({ refetchOnWindowFocus: false, refetchOnReconnect: false, retry: false, - select(data) { - return data.map((item) => - dayjs().diff(item.timestamp) < invalidateTime ? item : { ...item, timestamp: new Date(0), data: null }, - ); - }, }, ); const utils = clientApi.useUtils(); - //Invalidate all data after no update for 30 seconds using timer - const invalidationTimer = useTimeout( - () => { - utils.widget.downloads.getJobsAndStatuses.setData({ integrationIds }, (prevData) => - prevData?.map((item) => ({ ...item, timestamp: new Date(0), data: null })), - ); - }, - invalidateTime, - { autoInvoke: true }, - ); - //Translations const t = useScopedI18n("widget.downloads"); const tCommon = useScopedI18n("common"); @@ -143,32 +121,19 @@ export default function DownloadClientsWidget({ }, { onData: (data) => { - //Use cyclical update to invalidate data older than 30 seconds from unresponsive integrations - const invalidIndexes = currentItems - //Don't update already invalid data (new Date (0)) - .filter(({ timestamp }) => dayjs().diff(timestamp) > invalidateTime && timestamp > new Date(0)) - .map(({ integration }) => integration.id); - utils.widget.downloads.getJobsAndStatuses.setData({ integrationIds }, (prevData) => - prevData?.map((item) => - invalidIndexes.includes(item.integration.id) ? item : { ...item, timestamp: new Date(0), data: null }, - ), - ); utils.widget.downloads.getJobsAndStatuses.setData({ integrationIds }, (prevData) => { - const updateIndex = currentItems.findIndex((pair) => pair.integration.id === data.integration.id); - if (updateIndex >= 0) { - //Update found index - return prevData?.map((pair, index) => (index === updateIndex ? data : pair)); - } else if (integrationIds.includes(data.integration.id)) { - //Append index not found (new integration) - return [...(prevData ?? []), data]; - } + return prevData?.map((item) => { + if (item.integration.id !== data.integration.id) return item; - return undefined; + return { + data: data.data, + integration: { + ...data.integration, + updatedAt: new Date(), + }, + }; + }); }); - - //Reset no update timer - invalidationTimer.clear(); - invalidationTimer.start(); }, }, ); @@ -179,16 +144,6 @@ export default function DownloadClientsWidget({ currentItems //Insure it is only using selected integrations .filter(({ integration }) => integrationIds.includes(integration.id)) - //Removing any integration with no data associated - .filter( - ( - pair, - ): pair is { - integration: typeof pair.integration; - timestamp: typeof pair.timestamp; - data: DownloadClientJobsAndStatus; - } => pair.data != null, - ) //Construct normalized items list .flatMap((pair) => //Apply user white/black list @@ -255,7 +210,6 @@ export default function DownloadClientsWidget({ .filter(({ integration }) => integrationIds.includes(integration.id)) .flatMap(({ integration, data }): ExtendedClientStatus => { const interact = integrationsWithInteractions.includes(integration.id); - if (!data) return { integration, interact }; const isTorrent = getIntegrationKindsByCategory("torrent").some((kind) => kind === integration.kind); /** Derived from current items */ const { totalUp, totalDown } = data.items @@ -821,12 +775,7 @@ const ClientsControl = ({ clients, style }: ClientsControlProps) => { {clients.map((client) => ( - + ))} {someInteract && ( @@ -939,3 +888,21 @@ const ClientsControl = ({ clients, style }: ClientsControlProps) => { ); }; + +interface ClientAvatarProps { + client: ExtendedClientStatus; +} + +const ClientAvatar = ({ client }: ClientAvatarProps) => { + const isConnected = useIntegrationConnected(client.integration.updatedAt, { timeout: 30000 }); + + return ( + + ); +}; diff --git a/packages/widgets/src/health-monitoring/component.tsx b/packages/widgets/src/health-monitoring/component.tsx index 2c6f21fd7..c9c7aa946 100644 --- a/packages/widgets/src/health-monitoring/component.tsx +++ b/packages/widgets/src/health-monitoring/component.tsx @@ -33,7 +33,6 @@ import dayjs from "dayjs"; import duration from "dayjs/plugin/duration"; import { clientApi } from "@homarr/api/client"; -import type { HealthMonitoring } from "@homarr/integrations"; import type { TranslationFunction } from "@homarr/translation"; import { useI18n } from "@homarr/translation/client"; @@ -53,17 +52,6 @@ export default function HealthMonitoringWidget({ options, integrationIds }: Widg refetchOnWindowFocus: false, refetchOnReconnect: false, retry: false, - select: (data) => - data.filter( - ( - health, - ): health is { - integrationId: string; - integrationName: string; - healthInfo: HealthMonitoring; - timestamp: Date; - } => health.healthInfo !== null, - ), }, ); const [opened, { open, close }] = useDisclosure(false); @@ -82,16 +70,7 @@ export default function HealthMonitoringWidget({ options, integrationIds }: Widg ? { ...item, healthInfo: data.healthInfo, timestamp: data.timestamp } : item, ); - return newData.filter( - ( - health, - ): health is { - integrationId: string; - integrationName: string; - healthInfo: HealthMonitoring; - timestamp: Date; - } => health.healthInfo !== null, - ); + return newData; }); }, }, @@ -102,7 +81,7 @@ export default function HealthMonitoringWidget({ options, integrationIds }: Widg } return ( - {healthData.map(({ integrationId, integrationName, healthInfo, timestamp }) => { + {healthData.map(({ integrationId, integrationName, healthInfo, updatedAt }) => { const disksData = matchFileSystemAndSmart(healthInfo.fileSystem, healthInfo.smart); const memoryUsage = formatMemoryUsage(healthInfo.memAvailable, healthInfo.memUsed); return ( @@ -211,15 +190,17 @@ export default function HealthMonitoringWidget({ options, integrationIds }: Widg )} {options.memory && } - - {t("widget.healthMonitoring.popover.lastSeen", { lastSeen: dayjs(timestamp).fromNow() })} - + { + + {t("widget.healthMonitoring.popover.lastSeen", { lastSeen: dayjs(updatedAt).fromNow() })} + + } {options.fileSystem && disksData.map((disk) => { diff --git a/packages/widgets/src/iframe/component.tsx b/packages/widgets/src/iframe/component.tsx index e8af4d864..b561bd060 100644 --- a/packages/widgets/src/iframe/component.tsx +++ b/packages/widgets/src/iframe/component.tsx @@ -1,3 +1,5 @@ +"use client"; + import { Box, Stack, Text, Title } from "@mantine/core"; import { IconBrowserOff } from "@tabler/icons-react"; diff --git a/packages/widgets/src/index.tsx b/packages/widgets/src/index.tsx index e4876cfee..e2d83563a 100644 --- a/packages/widgets/src/index.tsx +++ b/packages/widgets/src/index.tsx @@ -3,7 +3,8 @@ import type { Loader } from "next/dynamic"; import dynamic from "next/dynamic"; import { Center, Loader as UiLoader } from "@mantine/core"; -import type { WidgetKind } from "@homarr/definitions"; +import { objectEntries } from "@homarr/common"; +import type { IntegrationKind, WidgetKind } from "@homarr/definitions"; import * as app from "./app"; import * as bookmarks from "./bookmarks"; @@ -21,16 +22,14 @@ import * as mediaRequestsList from "./media-requests/list"; import * as mediaRequestsStats from "./media-requests/stats"; import * as mediaServer from "./media-server"; import * as notebook from "./notebook"; +import type { WidgetOptionDefinition } from "./options"; import * as rssFeed from "./rssFeed"; import * as smartHomeEntityState from "./smart-home/entity-state"; import * as smartHomeExecuteAutomation from "./smart-home/execute-automation"; import * as video from "./video"; import * as weather from "./weather"; -export { reduceWidgetOptionsWithDefaultValues } from "./options"; - export type { WidgetDefinition } from "./definition"; -export { WidgetEditModal } from "./modals/widget-edit-modal"; export type { WidgetComponentProps }; export const widgetImports = { @@ -84,3 +83,21 @@ export type inferSupportedIntegrations = (WidgetImport } ? WidgetImports[TKind]["definition"]["supportedIntegrations"] : string[])[number]; + +export type inferSupportedIntegrationsStrict = (WidgetImports[TKind]["definition"] extends { + supportedIntegrations: IntegrationKind[]; +} + ? WidgetImports[TKind]["definition"]["supportedIntegrations"] + : never[])[number]; + +export const reduceWidgetOptionsWithDefaultValues = (kind: WidgetKind, currentValue: Record = {}) => { + const definition = widgetImports[kind].definition; + const options = definition.options as Record; + return objectEntries(options).reduce( + (prev, [key, value]) => ({ + ...prev, + [key]: currentValue[key] ?? value.defaultValue, + }), + {} as Record, + ); +}; diff --git a/packages/widgets/src/media-requests/list/component.tsx b/packages/widgets/src/media-requests/list/component.tsx index ce67166ba..301c98813 100644 --- a/packages/widgets/src/media-requests/list/component.tsx +++ b/packages/widgets/src/media-requests/list/component.tsx @@ -1,4 +1,5 @@ -import { useMemo } from "react"; +"use client"; + import { ActionIcon, Anchor, Avatar, Badge, Card, Group, Image, ScrollArea, Stack, Text, Tooltip } from "@mantine/core"; import { IconThumbDown, IconThumbUp } from "@tabler/icons-react"; @@ -15,14 +16,11 @@ export default function MediaServerWidget({ integrationIds, isEditMode, options, - itemId, }: WidgetComponentProps<"mediaRequests-requestList">) { const t = useScopedI18n("widget.mediaRequests-requestList"); const [mediaRequests] = clientApi.widget.mediaRequests.getLatestRequests.useSuspenseQuery( { integrationIds, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - itemId: itemId!, }, { refetchOnMount: false, @@ -30,30 +28,39 @@ export default function MediaServerWidget({ refetchOnReconnect: false, }, ); + const utils = clientApi.useUtils(); + clientApi.widget.mediaRequests.subscribeToLatestRequests.useSubscription( + { + integrationIds, + }, + { + onData(data) { + utils.widget.mediaRequests.getLatestRequests.setData({ integrationIds }, (prevData) => { + if (!prevData) return []; - const sortedMediaRequests = useMemo( - () => - mediaRequests - .filter((group) => group != null) - .flatMap((group) => group.data) - .flatMap(({ medias, integration }) => medias.map((media) => ({ ...media, integrationId: integration.id }))) - .sort(({ status: statusA }, { status: statusB }) => { - if (statusA === MediaRequestStatus.PendingApproval) { - return -1; - } - if (statusB === MediaRequestStatus.PendingApproval) { - return 1; - } - return 0; - }), - [mediaRequests], + const filteredData = prevData.filter(({ integrationId }) => integrationId !== data.integrationId); + const newData = filteredData.concat( + data.requests.map((request) => ({ ...request, integrationId: data.integrationId })), + ); + return newData.sort(({ status: statusA }, { status: statusB }) => { + if (statusA === MediaRequestStatus.PendingApproval) { + return -1; + } + if (statusB === MediaRequestStatus.PendingApproval) { + return 1; + } + return 0; + }); + }); + }, + }, ); const { mutate: mutateRequestAnswer } = clientApi.widget.mediaRequests.answerRequest.useMutation(); if (integrationIds.length === 0) throw new NoIntegrationSelectedError(); - if (sortedMediaRequests.length === 0) throw new NoIntegrationDataError(); + if (mediaRequests.length === 0) throw new NoIntegrationDataError(); return ( - {sortedMediaRequests.map((mediaRequest) => ( + {mediaRequests.map((mediaRequest) => ( ) { const t = useScopedI18n("widget.mediaRequests-requestStats"); const [requestStats] = clientApi.widget.mediaRequests.getStats.useSuspenseQuery( { integrationIds, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - itemId: itemId!, }, { refetchOnMount: false, @@ -45,67 +43,51 @@ export default function MediaServerWidget({ const { width, height, ref } = useElementSize(); - const baseData = useMemo( - () => requestStats.filter((group) => group != null).flatMap((group) => group.data), - [requestStats], - ); - - const stats = useMemo(() => baseData.flatMap(({ stats }) => stats), [baseData]); - const users = useMemo( - () => - baseData - .flatMap(({ integration, users }) => - users.flatMap((user) => ({ ...user, appKind: integration.kind, appName: integration.name })), - ) - .sort(({ requestCount: countA }, { requestCount: countB }) => countB - countA), - [baseData], - ); - if (integrationIds.length === 0) throw new NoIntegrationSelectedError(); - if (users.length === 0 || stats.length === 0) throw new NoIntegrationDataError(); + if (requestStats.users.length === 0 && requestStats.stats.length === 0) throw new NoIntegrationDataError(); //Add processing and available const data = [ { name: "approved", icon: IconThumbUp, - number: stats.reduce((count, { approved }) => count + approved, 0), + number: requestStats.stats.reduce((count, { approved }) => count + approved, 0), }, { name: "pending", icon: IconHourglass, - number: stats.reduce((count, { pending }) => count + pending, 0), + number: requestStats.stats.reduce((count, { pending }) => count + pending, 0), }, { name: "processing", icon: IconLoaderQuarter, - number: stats.reduce((count, { processing }) => count + processing, 0), + number: requestStats.stats.reduce((count, { processing }) => count + processing, 0), }, { name: "declined", icon: IconThumbDown, - number: stats.reduce((count, { declined }) => count + declined, 0), + number: requestStats.stats.reduce((count, { declined }) => count + declined, 0), }, { name: "available", icon: IconPlayerPlay, - number: stats.reduce((count, { available }) => count + available, 0), + number: requestStats.stats.reduce((count, { available }) => count + available, 0), }, { name: "tv", icon: IconDeviceTv, - number: stats.reduce((count, { tv }) => count + tv, 0), + number: requestStats.stats.reduce((count, { tv }) => count + tv, 0), }, { name: "movie", icon: IconMovie, - number: stats.reduce((count, { movie }) => count + movie, 0), + number: requestStats.stats.reduce((count, { movie }) => count + movie, 0), }, { name: "total", icon: IconReceipt, - number: stats.reduce((count, { total }) => count + total, 0), + number: requestStats.stats.reduce((count, { total }) => count + total, 0), }, ] satisfies { name: keyof RequestStats; icon: Icon; number: number }[]; @@ -156,7 +138,7 @@ export default function MediaServerWidget({ gap="2cqmin" style={{ overflow: "hidden" }} > - {users.slice(0, Math.max(Math.floor((height / width) * 5), 1)).map((user) => ( + {requestStats.users.slice(0, Math.max(Math.floor((height / width) * 5), 1)).map((user) => ( - + diff --git a/packages/widgets/src/modals/index.ts b/packages/widgets/src/modals/index.ts new file mode 100644 index 000000000..7ea1185af --- /dev/null +++ b/packages/widgets/src/modals/index.ts @@ -0,0 +1 @@ +export * from "./widget-edit-modal"; diff --git a/packages/widgets/src/options.ts b/packages/widgets/src/options.ts index d65296dd8..3314a121f 100644 --- a/packages/widgets/src/options.ts +++ b/packages/widgets/src/options.ts @@ -2,12 +2,10 @@ import type React from "react"; import type { DraggableAttributes, UniqueIdentifier } from "@dnd-kit/core"; import type { ActionIconProps } from "@mantine/core"; -import { objectEntries } from "@homarr/common"; -import type { IntegrationKind, WidgetKind } from "@homarr/definitions"; +import type { IntegrationKind } from "@homarr/definitions"; import type { ZodType } from "@homarr/validation"; import { z } from "@homarr/validation"; -import { widgetImports } from "."; import type { inferSelectOptionValue, SelectOption } from "./_inputs/widget-select-input"; interface CommonInput { @@ -25,7 +23,7 @@ interface MultiSelectInput searchable?: boolean; } -interface SortableItemListInput +export interface SortableItemListInput extends Omit, "withDescription"> { AddButton: (props: { addItem: (item: TItem) => void; values: TOptionValue[] }) => React.ReactNode; ItemComponent: (props: { @@ -188,15 +186,3 @@ export type OptionsBuilderResult = ReturnType; export const optionsBuilder = { from: createOptions, }; - -export const reduceWidgetOptionsWithDefaultValues = (kind: WidgetKind, currentValue: Record = {}) => { - const definition = widgetImports[kind].definition; - const options = definition.options as Record; - return objectEntries(options).reduce( - (prev, [key, value]) => ({ - ...prev, - [key]: currentValue[key] ?? value.defaultValue, - }), - {} as Record, - ); -}; diff --git a/packages/widgets/src/rssFeed/component.tsx b/packages/widgets/src/rssFeed/component.tsx index e1ce9efc9..a765503df 100644 --- a/packages/widgets/src/rssFeed/component.tsx +++ b/packages/widgets/src/rssFeed/component.tsx @@ -1,3 +1,5 @@ +"use client"; + import { Card, Flex, Group, Image, ScrollArea, Stack, Text } from "@mantine/core"; import { IconClock } from "@tabler/icons-react"; import dayjs from "dayjs"; diff --git a/packages/widgets/src/smart-home/entity-state/component.tsx b/packages/widgets/src/smart-home/entity-state/component.tsx index b627e5f73..410b6596c 100644 --- a/packages/widgets/src/smart-home/entity-state/component.tsx +++ b/packages/widgets/src/smart-home/entity-state/component.tsx @@ -1,41 +1,48 @@ "use client"; -import React, { useCallback, useState } from "react"; +import { useCallback } from "react"; import { Center, Stack, Text, UnstyledButton } from "@mantine/core"; import { clientApi } from "@homarr/api/client"; import type { WidgetComponentProps } from "../../definition"; +import { NoIntegrationSelectedError } from "../../errors"; export default function SmartHomeEntityStateWidget({ options, integrationIds, isEditMode, }: WidgetComponentProps<"smartHome-entityState">) { - const [lastState, setLastState] = useState<{ - entityId: string; - state: string; - }>(); + const integrationId = integrationIds[0]; + + if (!integrationId) { + throw new NoIntegrationSelectedError(); + } + + return ; +} + +type InnerComponentProps = Pick, "options" | "isEditMode"> & { + integrationId: string; +}; + +const InnerComponent = ({ options, integrationId, isEditMode }: InnerComponentProps) => { + const input = { + entityId: options.entityId, + integrationId, + }; + const [entityState] = clientApi.widget.smartHome.entityState.useSuspenseQuery(input); const utils = clientApi.useUtils(); - clientApi.widget.smartHome.subscribeEntityState.useSubscription( - { - entityId: options.entityId, - }, - { - onData(data) { - setLastState(data); - }, - }, - ); - - const { mutate } = clientApi.widget.smartHome.switchEntity.useMutation({ - onSettled: () => { - void utils.widget.smartHome.invalidate(); + clientApi.widget.smartHome.subscribeEntityState.useSubscription(input, { + onData(data) { + utils.widget.smartHome.entityState.setData(input, data.state); }, }); + const { mutate } = clientApi.widget.smartHome.switchEntity.useMutation(); + const attribute = options.entityUnit.length > 0 ? " " + options.entityUnit : ""; const handleClick = useCallback(() => { @@ -49,9 +56,9 @@ export default function SmartHomeEntityStateWidget({ mutate({ entityId: options.entityId, - integrationId: integrationIds[0] ?? "", + integrationId, }); - }, [integrationIds, isEditMode, mutate, options.clickable, options.entityId]); + }, [integrationId, isEditMode, mutate, options.clickable, options.entityId]); return ( - {lastState?.state} + {entityState} {attribute} ); -} +}; diff --git a/packages/widgets/src/smart-home/execute-automation/component.tsx b/packages/widgets/src/smart-home/execute-automation/component.tsx index e174cdb2b..a2cd856d9 100644 --- a/packages/widgets/src/smart-home/execute-automation/component.tsx +++ b/packages/widgets/src/smart-home/execute-automation/component.tsx @@ -1,3 +1,5 @@ +"use client"; + import React from "react"; import { ActionIcon, Center, LoadingOverlay, Overlay, Stack, Text, UnstyledButton } from "@mantine/core"; import { useDisclosure, useTimeout } from "@mantine/hooks"; diff --git a/packages/widgets/src/weather/component.tsx b/packages/widgets/src/weather/component.tsx index 9f5da3ade..dfff28da6 100644 --- a/packages/widgets/src/weather/component.tsx +++ b/packages/widgets/src/weather/component.tsx @@ -1,3 +1,5 @@ +"use client"; + import { Box, Group, HoverCard, Space, Stack, Text } from "@mantine/core"; import { IconArrowDownRight, IconArrowUpRight, IconMapPin } from "@tabler/icons-react"; import combineClasses from "clsx"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2219ff613..30c230e44 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -497,6 +497,9 @@ importers: '@homarr/redis': specifier: workspace:^0.1.0 version: link:../redis + '@homarr/request-handler': + specifier: workspace:^0.1.0 + version: link:../request-handler '@homarr/server-settings': specifier: workspace:^0.1.0 version: link:../server-settings @@ -782,6 +785,9 @@ importers: '@homarr/redis': specifier: workspace:^0.1.0 version: link:../redis + '@homarr/request-handler': + specifier: workspace:^0.1.0 + version: link:../request-handler '@homarr/server-settings': specifier: workspace:^0.1.0 version: link:../server-settings @@ -1311,6 +1317,49 @@ importers: specifier: ^5.6.3 version: 5.6.3 + packages/request-handler: + dependencies: + '@homarr/common': + specifier: workspace:^0.1.0 + version: link:../common + '@homarr/db': + specifier: workspace:^0.1.0 + version: link:../db + '@homarr/definitions': + specifier: workspace:^0.1.0 + version: link:../definitions + '@homarr/integrations': + specifier: workspace:^0.1.0 + version: link:../integrations + '@homarr/log': + specifier: workspace:^0.1.0 + version: link:../log + '@homarr/redis': + specifier: workspace:^0.1.0 + version: link:../redis + dayjs: + specifier: ^1.11.13 + version: 1.11.13 + superjson: + specifier: 2.2.1 + version: 2.2.1 + devDependencies: + '@homarr/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@homarr/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@homarr/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript + eslint: + specifier: ^9.15.0 + version: 9.15.0 + typescript: + specifier: ^5.6.3 + version: 5.6.3 + packages/server-settings: dependencies: '@homarr/definitions': diff --git a/turbo/generators/templates/package.json.hbs b/turbo/generators/templates/package.json.hbs index f870e9cd2..b8fda8d8e 100644 --- a/turbo/generators/templates/package.json.hbs +++ b/turbo/generators/templates/package.json.hbs @@ -24,8 +24,8 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.10.0", - "typescript": "^5.6.2" + "eslint": "^9.15.0", + "typescript": "^5.6.3" }, "prettier": "@homarr/prettier-config" } \ No newline at end of file From 8fea983c2e89bd417f8c0a8b14463f51936e3302 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 23 Nov 2024 17:17:00 +0100 Subject: [PATCH 05/48] refactor: make casing for column names consistent (#1517) * refactor: make casing for column names consistent * fix: format issues --- packages/db/configs/mysql.config.ts | 1 + packages/db/configs/sqlite.config.ts | 1 + packages/db/driver.ts | 2 + .../mysql/0016_change_all_to_snake_case.sql | 64 + .../migrations/mysql/meta/0016_snapshot.json | 1650 +++++++++++++++++ .../db/migrations/mysql/meta/_journal.json | 7 + packages/db/migrations/mysql/migrate.ts | 1 + .../sqlite/0016_change_all_to_snake_case.sql | 102 + .../migrations/sqlite/meta/0016_snapshot.json | 1579 ++++++++++++++++ .../db/migrations/sqlite/meta/_journal.json | 7 + packages/db/migrations/sqlite/migrate.ts | 2 +- packages/db/schema/mysql.ts | 266 ++- packages/db/schema/sqlite.ts | 268 ++- packages/db/test/db-mock.ts | 2 +- packages/db/test/mysql-migration.spec.ts | 1 + 15 files changed, 3678 insertions(+), 275 deletions(-) create mode 100644 packages/db/migrations/mysql/0016_change_all_to_snake_case.sql create mode 100644 packages/db/migrations/mysql/meta/0016_snapshot.json create mode 100644 packages/db/migrations/sqlite/0016_change_all_to_snake_case.sql create mode 100644 packages/db/migrations/sqlite/meta/0016_snapshot.json diff --git a/packages/db/configs/mysql.config.ts b/packages/db/configs/mysql.config.ts index 407fae864..95d0ab936 100644 --- a/packages/db/configs/mysql.config.ts +++ b/packages/db/configs/mysql.config.ts @@ -7,6 +7,7 @@ dotenv.config({ path: "../../.env" }); export default { dialect: "mysql", schema: "./schema", + casing: "snake_case", dbCredentials: { host: process.env.DB_HOST!, user: process.env.DB_USER!, diff --git a/packages/db/configs/sqlite.config.ts b/packages/db/configs/sqlite.config.ts index aba34fe26..8e71be989 100644 --- a/packages/db/configs/sqlite.config.ts +++ b/packages/db/configs/sqlite.config.ts @@ -6,6 +6,7 @@ dotenv.config({ path: "../../.env" }); export default { dialect: "sqlite", schema: "./schema", + casing: "snake_case", // eslint-disable-next-line @typescript-eslint/no-non-null-assertion dbCredentials: { url: process.env.DB_URL! }, out: "./migrations/sqlite", diff --git a/packages/db/driver.ts b/packages/db/driver.ts index 36a86ece5..9eac1531d 100644 --- a/packages/db/driver.ts +++ b/packages/db/driver.ts @@ -40,6 +40,7 @@ const initBetterSqlite = () => { database = drizzleSqlite(connection, { schema: sqliteSchema, logger: new WinstonDrizzleLogger(), + casing: "snake_case", }) as unknown as never; }; @@ -61,6 +62,7 @@ const initMySQL2 = () => { schema: mysqlSchema, mode: "default", logger: new WinstonDrizzleLogger(), + casing: "snake_case", }) as unknown as HomarrDatabase; }; diff --git a/packages/db/migrations/mysql/0016_change_all_to_snake_case.sql b/packages/db/migrations/mysql/0016_change_all_to_snake_case.sql new file mode 100644 index 000000000..799b14fb6 --- /dev/null +++ b/packages/db/migrations/mysql/0016_change_all_to_snake_case.sql @@ -0,0 +1,64 @@ +ALTER TABLE `account` RENAME COLUMN `userId` TO `user_id`;--> statement-breakpoint +ALTER TABLE `account` RENAME COLUMN `providerAccountId` TO `provider_account_id`;--> statement-breakpoint +ALTER TABLE `apiKey` RENAME COLUMN `apiKey` TO `api_key`;--> statement-breakpoint +ALTER TABLE `apiKey` RENAME COLUMN `userId` TO `user_id`;--> statement-breakpoint +ALTER TABLE `groupMember` RENAME COLUMN `groupId` TO `group_id`;--> statement-breakpoint +ALTER TABLE `groupMember` RENAME COLUMN `userId` TO `user_id`;--> statement-breakpoint +ALTER TABLE `groupPermission` RENAME COLUMN `groupId` TO `group_id`;--> statement-breakpoint +ALTER TABLE `iconRepository` RENAME COLUMN `iconRepository_id` TO `id`;--> statement-breakpoint +ALTER TABLE `iconRepository` RENAME COLUMN `iconRepository_slug` TO `slug`;--> statement-breakpoint +ALTER TABLE `icon` RENAME COLUMN `icon_id` TO `id`;--> statement-breakpoint +ALTER TABLE `icon` RENAME COLUMN `icon_name` TO `name`;--> statement-breakpoint +ALTER TABLE `icon` RENAME COLUMN `icon_url` TO `url`;--> statement-breakpoint +ALTER TABLE `icon` RENAME COLUMN `icon_checksum` TO `checksum`;--> statement-breakpoint +ALTER TABLE `icon` RENAME COLUMN `iconRepository_id` TO `icon_repository_id`;--> statement-breakpoint +ALTER TABLE `serverSetting` RENAME COLUMN `key` TO `setting_key`;--> statement-breakpoint +ALTER TABLE `session` RENAME COLUMN `sessionToken` TO `session_token`;--> statement-breakpoint +ALTER TABLE `session` RENAME COLUMN `userId` TO `user_id`;--> statement-breakpoint +ALTER TABLE `user` RENAME COLUMN `emailVerified` TO `email_verified`;--> statement-breakpoint +ALTER TABLE `user` RENAME COLUMN `homeBoardId` TO `home_board_id`;--> statement-breakpoint +ALTER TABLE `user` RENAME COLUMN `colorScheme` TO `color_scheme`;--> statement-breakpoint +ALTER TABLE `user` RENAME COLUMN `firstDayOfWeek` TO `first_day_of_week`;--> statement-breakpoint +ALTER TABLE `user` RENAME COLUMN `pingIconsEnabled` TO `ping_icons_enabled`;--> statement-breakpoint +ALTER TABLE `serverSetting` DROP INDEX `serverSetting_key_unique`;--> statement-breakpoint +ALTER TABLE `account` DROP FOREIGN KEY `account_userId_user_id_fk`; +--> statement-breakpoint +ALTER TABLE `apiKey` DROP FOREIGN KEY `apiKey_userId_user_id_fk`; +--> statement-breakpoint +ALTER TABLE `groupMember` DROP FOREIGN KEY `groupMember_groupId_group_id_fk`; +--> statement-breakpoint +ALTER TABLE `groupMember` DROP FOREIGN KEY `groupMember_userId_user_id_fk`; +--> statement-breakpoint +ALTER TABLE `groupPermission` DROP FOREIGN KEY `groupPermission_groupId_group_id_fk`; +--> statement-breakpoint +ALTER TABLE `icon` DROP FOREIGN KEY `icon_iconRepository_id_iconRepository_iconRepository_id_fk`; +--> statement-breakpoint +ALTER TABLE `session` DROP FOREIGN KEY `session_userId_user_id_fk`; +--> statement-breakpoint +ALTER TABLE `user` DROP FOREIGN KEY `user_homeBoardId_board_id_fk`; +--> statement-breakpoint +DROP INDEX `userId_idx` ON `account`;--> statement-breakpoint +DROP INDEX `user_id_idx` ON `session`;--> statement-breakpoint +ALTER TABLE `account` DROP PRIMARY KEY;--> statement-breakpoint +ALTER TABLE `groupMember` DROP PRIMARY KEY;--> statement-breakpoint +ALTER TABLE `iconRepository` DROP PRIMARY KEY;--> statement-breakpoint +ALTER TABLE `icon` DROP PRIMARY KEY;--> statement-breakpoint +ALTER TABLE `serverSetting` DROP PRIMARY KEY;--> statement-breakpoint +ALTER TABLE `session` DROP PRIMARY KEY;--> statement-breakpoint +ALTER TABLE `account` ADD PRIMARY KEY(`provider`,`provider_account_id`);--> statement-breakpoint +ALTER TABLE `groupMember` ADD PRIMARY KEY(`group_id`,`user_id`);--> statement-breakpoint +ALTER TABLE `iconRepository` ADD PRIMARY KEY(`id`);--> statement-breakpoint +ALTER TABLE `icon` ADD PRIMARY KEY(`id`);--> statement-breakpoint +ALTER TABLE `serverSetting` ADD PRIMARY KEY(`setting_key`);--> statement-breakpoint +ALTER TABLE `session` ADD PRIMARY KEY(`session_token`);--> statement-breakpoint +ALTER TABLE `serverSetting` ADD CONSTRAINT `serverSetting_settingKey_unique` UNIQUE(`setting_key`);--> statement-breakpoint +ALTER TABLE `account` ADD CONSTRAINT `account_user_id_user_id_fk` FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE `apiKey` ADD CONSTRAINT `apiKey_user_id_user_id_fk` FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE `groupMember` ADD CONSTRAINT `groupMember_group_id_group_id_fk` FOREIGN KEY (`group_id`) REFERENCES `group`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE `groupMember` ADD CONSTRAINT `groupMember_user_id_user_id_fk` FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE `groupPermission` ADD CONSTRAINT `groupPermission_group_id_group_id_fk` FOREIGN KEY (`group_id`) REFERENCES `group`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE `icon` ADD CONSTRAINT `icon_icon_repository_id_iconRepository_id_fk` FOREIGN KEY (`icon_repository_id`) REFERENCES `iconRepository`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE `session` ADD CONSTRAINT `session_user_id_user_id_fk` FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE `user` ADD CONSTRAINT `user_home_board_id_board_id_fk` FOREIGN KEY (`home_board_id`) REFERENCES `board`(`id`) ON DELETE set null ON UPDATE no action;--> statement-breakpoint +CREATE INDEX `userId_idx` ON `account` (`user_id`);--> statement-breakpoint +CREATE INDEX `user_id_idx` ON `session` (`user_id`); \ No newline at end of file diff --git a/packages/db/migrations/mysql/meta/0016_snapshot.json b/packages/db/migrations/mysql/meta/0016_snapshot.json new file mode 100644 index 000000000..a9399b358 --- /dev/null +++ b/packages/db/migrations/mysql/meta/0016_snapshot.json @@ -0,0 +1,1650 @@ +{ + "version": "5", + "dialect": "mysql", + "id": "50b295e1-1802-477c-9ee1-b2cad1e9f5bb", + "prevId": "1bffd9d6-3a7b-42c4-a9e9-618a1b4ca9bc", + "tables": { + "account": { + "name": "account", + "columns": { + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token_type": { + "name": "token_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "session_state": { + "name": "session_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "userId_idx": { + "name": "userId_idx", + "columns": ["user_id"], + "isUnique": false + } + }, + "foreignKeys": { + "account_user_id_user_id_fk": { + "name": "account_user_id_user_id_fk", + "tableFrom": "account", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "account_provider_provider_account_id_pk": { + "name": "account_provider_provider_account_id_pk", + "columns": ["provider", "provider_account_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "apiKey": { + "name": "apiKey", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_key": { + "name": "api_key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "apiKey_user_id_user_id_fk": { + "name": "apiKey_user_id_user_id_fk", + "tableFrom": "apiKey", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "apiKey_id": { + "name": "apiKey_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "app": { + "name": "app", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "href": { + "name": "href", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "app_id": { + "name": "app_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "boardGroupPermission": { + "name": "boardGroupPermission", + "columns": { + "board_id": { + "name": "board_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "boardGroupPermission_board_id_board_id_fk": { + "name": "boardGroupPermission_board_id_board_id_fk", + "tableFrom": "boardGroupPermission", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "boardGroupPermission_group_id_group_id_fk": { + "name": "boardGroupPermission_group_id_group_id_fk", + "tableFrom": "boardGroupPermission", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "boardGroupPermission_board_id_group_id_permission_pk": { + "name": "boardGroupPermission_board_id_group_id_permission_pk", + "columns": ["board_id", "group_id", "permission"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "boardUserPermission": { + "name": "boardUserPermission", + "columns": { + "board_id": { + "name": "board_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "boardUserPermission_board_id_board_id_fk": { + "name": "boardUserPermission_board_id_board_id_fk", + "tableFrom": "boardUserPermission", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "boardUserPermission_user_id_user_id_fk": { + "name": "boardUserPermission_user_id_user_id_fk", + "tableFrom": "boardUserPermission", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "boardUserPermission_board_id_user_id_permission_pk": { + "name": "boardUserPermission_board_id_user_id_permission_pk", + "columns": ["board_id", "user_id", "permission"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "board": { + "name": "board", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(256)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_public": { + "name": "is_public", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "creator_id": { + "name": "creator_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_title": { + "name": "page_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "meta_title": { + "name": "meta_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "logo_image_url": { + "name": "logo_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "favicon_image_url": { + "name": "favicon_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "background_image_url": { + "name": "background_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "background_image_attachment": { + "name": "background_image_attachment", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('fixed')" + }, + "background_image_repeat": { + "name": "background_image_repeat", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('no-repeat')" + }, + "background_image_size": { + "name": "background_image_size", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('cover')" + }, + "primary_color": { + "name": "primary_color", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('#fa5252')" + }, + "secondary_color": { + "name": "secondary_color", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('#fd7e14')" + }, + "opacity": { + "name": "opacity", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "custom_css": { + "name": "custom_css", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "column_count": { + "name": "column_count", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 10 + } + }, + "indexes": {}, + "foreignKeys": { + "board_creator_id_user_id_fk": { + "name": "board_creator_id_user_id_fk", + "tableFrom": "board", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "board_id": { + "name": "board_id", + "columns": ["id"] + } + }, + "uniqueConstraints": { + "board_name_unique": { + "name": "board_name_unique", + "columns": ["name"] + } + }, + "checkConstraint": {} + }, + "groupMember": { + "name": "groupMember", + "columns": { + "group_id": { + "name": "group_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "groupMember_group_id_group_id_fk": { + "name": "groupMember_group_id_group_id_fk", + "tableFrom": "groupMember", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "groupMember_user_id_user_id_fk": { + "name": "groupMember_user_id_user_id_fk", + "tableFrom": "groupMember", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "groupMember_group_id_user_id_pk": { + "name": "groupMember_group_id_user_id_pk", + "columns": ["group_id", "user_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "groupPermission": { + "name": "groupPermission", + "columns": { + "group_id": { + "name": "group_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "groupPermission_group_id_group_id_fk": { + "name": "groupPermission_group_id_group_id_fk", + "tableFrom": "groupPermission", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "group": { + "name": "group", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "group_owner_id_user_id_fk": { + "name": "group_owner_id_user_id_fk", + "tableFrom": "group", + "tableTo": "user", + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "group_id": { + "name": "group_id", + "columns": ["id"] + } + }, + "uniqueConstraints": { + "group_name_unique": { + "name": "group_name_unique", + "columns": ["name"] + } + }, + "checkConstraint": {} + }, + "iconRepository": { + "name": "iconRepository", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(150)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "iconRepository_id": { + "name": "iconRepository_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "icon": { + "name": "icon", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(250)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "checksum": { + "name": "checksum", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon_repository_id": { + "name": "icon_repository_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "icon_icon_repository_id_iconRepository_id_fk": { + "name": "icon_icon_repository_id_iconRepository_id_fk", + "tableFrom": "icon", + "tableTo": "iconRepository", + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "icon_id": { + "name": "icon_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integrationGroupPermissions": { + "name": "integrationGroupPermissions", + "columns": { + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integrationGroupPermissions_integration_id_integration_id_fk": { + "name": "integrationGroupPermissions_integration_id_integration_id_fk", + "tableFrom": "integrationGroupPermissions", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integrationGroupPermissions_group_id_group_id_fk": { + "name": "integrationGroupPermissions_group_id_group_id_fk", + "tableFrom": "integrationGroupPermissions", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integration_group_permission__pk": { + "name": "integration_group_permission__pk", + "columns": ["integration_id", "group_id", "permission"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integration_item": { + "name": "integration_item", + "columns": { + "item_id": { + "name": "item_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integration_item_item_id_item_id_fk": { + "name": "integration_item_item_id_item_id_fk", + "tableFrom": "integration_item", + "tableTo": "item", + "columnsFrom": ["item_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integration_item_integration_id_integration_id_fk": { + "name": "integration_item_integration_id_integration_id_fk", + "tableFrom": "integration_item", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integration_item_item_id_integration_id_pk": { + "name": "integration_item_item_id_integration_id_pk", + "columns": ["item_id", "integration_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integrationSecret": { + "name": "integrationSecret", + "columns": { + "kind": { + "name": "kind", + "type": "varchar(16)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "integration_secret__kind_idx": { + "name": "integration_secret__kind_idx", + "columns": ["kind"], + "isUnique": false + }, + "integration_secret__updated_at_idx": { + "name": "integration_secret__updated_at_idx", + "columns": ["updated_at"], + "isUnique": false + } + }, + "foreignKeys": { + "integrationSecret_integration_id_integration_id_fk": { + "name": "integrationSecret_integration_id_integration_id_fk", + "tableFrom": "integrationSecret", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationSecret_integration_id_kind_pk": { + "name": "integrationSecret_integration_id_kind_pk", + "columns": ["integration_id", "kind"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integrationUserPermission": { + "name": "integrationUserPermission", + "columns": { + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integrationUserPermission_integration_id_integration_id_fk": { + "name": "integrationUserPermission_integration_id_integration_id_fk", + "tableFrom": "integrationUserPermission", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integrationUserPermission_user_id_user_id_fk": { + "name": "integrationUserPermission_user_id_user_id_fk", + "tableFrom": "integrationUserPermission", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationUserPermission_integration_id_user_id_permission_pk": { + "name": "integrationUserPermission_integration_id_user_id_permission_pk", + "columns": ["integration_id", "user_id", "permission"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integration": { + "name": "integration", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "integration__kind_idx": { + "name": "integration__kind_idx", + "columns": ["kind"], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "integration_id": { + "name": "integration_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "invite": { + "name": "invite", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expiration_date": { + "name": "expiration_date", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "creator_id": { + "name": "creator_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "invite_creator_id_user_id_fk": { + "name": "invite_creator_id_user_id_fk", + "tableFrom": "invite", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "invite_id": { + "name": "invite_id", + "columns": ["id"] + } + }, + "uniqueConstraints": { + "invite_token_unique": { + "name": "invite_token_unique", + "columns": ["token"] + } + }, + "checkConstraint": {} + }, + "item": { + "name": "item", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "section_id": { + "name": "section_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x_offset": { + "name": "x_offset", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "y_offset": { + "name": "y_offset", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "options": { + "name": "options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('{\"json\": {}}')" + }, + "advanced_options": { + "name": "advanced_options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('{\"json\": {}}')" + } + }, + "indexes": {}, + "foreignKeys": { + "item_section_id_section_id_fk": { + "name": "item_section_id_section_id_fk", + "tableFrom": "item", + "tableTo": "section", + "columnsFrom": ["section_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "item_id": { + "name": "item_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "media": { + "name": "media", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "BLOB", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content_type": { + "name": "content_type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "size": { + "name": "size", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "creator_id": { + "name": "creator_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "media_creator_id_user_id_fk": { + "name": "media_creator_id_user_id_fk", + "tableFrom": "media", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "media_id": { + "name": "media_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "search_engine": { + "name": "search_engine", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "short": { + "name": "short", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "url_template": { + "name": "url_template", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'generic'" + }, + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "search_engine_integration_id_integration_id_fk": { + "name": "search_engine_integration_id_integration_id_fk", + "tableFrom": "search_engine", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "search_engine_id": { + "name": "search_engine_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "section": { + "name": "section", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "board_id": { + "name": "board_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x_offset": { + "name": "x_offset", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "y_offset": { + "name": "y_offset", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "parent_section_id": { + "name": "parent_section_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "section_board_id_board_id_fk": { + "name": "section_board_id_board_id_fk", + "tableFrom": "section", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "section_parent_section_id_section_id_fk": { + "name": "section_parent_section_id_section_id_fk", + "tableFrom": "section", + "tableTo": "section", + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "section_id": { + "name": "section_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "serverSetting": { + "name": "serverSetting", + "columns": { + "setting_key": { + "name": "setting_key", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('{\"json\": {}}')" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "serverSetting_setting_key": { + "name": "serverSetting_setting_key", + "columns": ["setting_key"] + } + }, + "uniqueConstraints": { + "serverSetting_settingKey_unique": { + "name": "serverSetting_settingKey_unique", + "columns": ["setting_key"] + } + }, + "checkConstraint": {} + }, + "session": { + "name": "session", + "columns": { + "session_token": { + "name": "session_token", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_id_idx": { + "name": "user_id_idx", + "columns": ["user_id"], + "isUnique": false + } + }, + "foreignKeys": { + "session_user_id_user_id_fk": { + "name": "session_user_id_user_id_fk", + "tableFrom": "session", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "session_session_token": { + "name": "session_session_token", + "columns": ["session_token"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "user": { + "name": "user", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email_verified": { + "name": "email_verified", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "password": { + "name": "password", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'credentials'" + }, + "home_board_id": { + "name": "home_board_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "color_scheme": { + "name": "color_scheme", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'dark'" + }, + "first_day_of_week": { + "name": "first_day_of_week", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "ping_icons_enabled": { + "name": "ping_icons_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_home_board_id_board_id_fk": { + "name": "user_home_board_id_board_id_fk", + "tableFrom": "user", + "tableTo": "board", + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "user_id": { + "name": "user_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "verificationToken": { + "name": "verificationToken", + "columns": { + "identifier": { + "name": "identifier", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "verificationToken_identifier_token_pk": { + "name": "verificationToken_identifier_token_pk", + "columns": ["identifier", "token"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + } + }, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": { + "\"account\".\"userId\"": "\"account\".\"user_id\"", + "\"account\".\"providerAccountId\"": "\"account\".\"provider_account_id\"", + "\"apiKey\".\"apiKey\"": "\"apiKey\".\"api_key\"", + "\"apiKey\".\"userId\"": "\"apiKey\".\"user_id\"", + "\"groupMember\".\"groupId\"": "\"groupMember\".\"group_id\"", + "\"groupMember\".\"userId\"": "\"groupMember\".\"user_id\"", + "\"groupPermission\".\"groupId\"": "\"groupPermission\".\"group_id\"", + "\"iconRepository\".\"iconRepository_id\"": "\"iconRepository\".\"id\"", + "\"iconRepository\".\"iconRepository_slug\"": "\"iconRepository\".\"slug\"", + "\"icon\".\"icon_id\"": "\"icon\".\"id\"", + "\"icon\".\"icon_name\"": "\"icon\".\"name\"", + "\"icon\".\"icon_url\"": "\"icon\".\"url\"", + "\"icon\".\"icon_checksum\"": "\"icon\".\"checksum\"", + "\"icon\".\"iconRepository_id\"": "\"icon\".\"icon_repository_id\"", + "\"serverSetting\".\"key\"": "\"serverSetting\".\"setting_key\"", + "\"session\".\"sessionToken\"": "\"session\".\"session_token\"", + "\"session\".\"userId\"": "\"session\".\"user_id\"", + "\"user\".\"emailVerified\"": "\"user\".\"email_verified\"", + "\"user\".\"homeBoardId\"": "\"user\".\"home_board_id\"", + "\"user\".\"colorScheme\"": "\"user\".\"color_scheme\"", + "\"user\".\"firstDayOfWeek\"": "\"user\".\"first_day_of_week\"", + "\"user\".\"pingIconsEnabled\"": "\"user\".\"ping_icons_enabled\"" + } + }, + "internal": { + "tables": {}, + "indexes": {} + } +} diff --git a/packages/db/migrations/mysql/meta/_journal.json b/packages/db/migrations/mysql/meta/_journal.json index 7deab9fb2..d740783f1 100644 --- a/packages/db/migrations/mysql/meta/_journal.json +++ b/packages/db/migrations/mysql/meta/_journal.json @@ -113,6 +113,13 @@ "when": 1730653393442, "tag": "0015_unknown_firedrake", "breakpoints": true + }, + { + "idx": 16, + "version": "5", + "when": 1732212709518, + "tag": "0016_change_all_to_snake_case", + "breakpoints": true } ] } diff --git a/packages/db/migrations/mysql/migrate.ts b/packages/db/migrations/mysql/migrate.ts index 7cb343ceb..61a2401f7 100644 --- a/packages/db/migrations/mysql/migrate.ts +++ b/packages/db/migrations/mysql/migrate.ts @@ -25,6 +25,7 @@ const migrateAsync = async () => { const db = drizzle(mysql2, { mode: "default", schema: mysqlSchema, + casing: "snake_case", }); await migrate(db, { migrationsFolder }); diff --git a/packages/db/migrations/sqlite/0016_change_all_to_snake_case.sql b/packages/db/migrations/sqlite/0016_change_all_to_snake_case.sql new file mode 100644 index 000000000..ce539c032 --- /dev/null +++ b/packages/db/migrations/sqlite/0016_change_all_to_snake_case.sql @@ -0,0 +1,102 @@ +ALTER TABLE `iconRepository` RENAME COLUMN "iconRepository_id" TO "id";--> statement-breakpoint +ALTER TABLE `iconRepository` RENAME COLUMN "iconRepository_slug" TO "slug";--> statement-breakpoint +ALTER TABLE `serverSetting` RENAME COLUMN "key" TO "setting_key";--> statement-breakpoint +PRAGMA foreign_keys=OFF;--> statement-breakpoint +CREATE TABLE `__new_account` ( + `user_id` text NOT NULL, + `type` text NOT NULL, + `provider` text NOT NULL, + `provider_account_id` text NOT NULL, + `refresh_token` text, + `access_token` text, + `expires_at` integer, + `token_type` text, + `scope` text, + `id_token` text, + `session_state` text, + PRIMARY KEY(`provider`, `provider_account_id`), + FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade +); +--> statement-breakpoint +INSERT INTO `__new_account`("user_id", "type", "provider", "provider_account_id", "refresh_token", "access_token", "expires_at", "token_type", "scope", "id_token", "session_state") SELECT "userId", "type", "provider", "providerAccountId", "refresh_token", "access_token", "expires_at", "token_type", "scope", "id_token", "session_state" FROM `account`;--> statement-breakpoint +DROP TABLE `account`;--> statement-breakpoint +ALTER TABLE `__new_account` RENAME TO `account`;--> statement-breakpoint +PRAGMA foreign_keys=ON;--> statement-breakpoint +CREATE INDEX `userId_idx` ON `account` (`user_id`);--> statement-breakpoint +PRAGMA foreign_keys=OFF;--> statement-breakpoint +CREATE TABLE `__new_apiKey` ( + `id` text PRIMARY KEY NOT NULL, + `api_key` text NOT NULL, + `salt` text NOT NULL, + `user_id` text NOT NULL, + FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade +); +--> statement-breakpoint +INSERT INTO `__new_apiKey`("id", "api_key", "salt", "user_id") SELECT "id", "apiKey", "salt", "userId" FROM `apiKey`;--> statement-breakpoint +DROP TABLE `apiKey`;--> statement-breakpoint +ALTER TABLE `__new_apiKey` RENAME TO `apiKey`;--> statement-breakpoint +CREATE TABLE `__new_groupMember` ( + `group_id` text NOT NULL, + `user_id` text NOT NULL, + PRIMARY KEY(`group_id`, `user_id`), + FOREIGN KEY (`group_id`) REFERENCES `group`(`id`) ON UPDATE no action ON DELETE cascade, + FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade +); +--> statement-breakpoint +INSERT INTO `__new_groupMember`("group_id", "user_id") SELECT "groupId", "userId" FROM `groupMember`;--> statement-breakpoint +DROP TABLE `groupMember`;--> statement-breakpoint +ALTER TABLE `__new_groupMember` RENAME TO `groupMember`;--> statement-breakpoint +CREATE TABLE `__new_groupPermission` ( + `group_id` text NOT NULL, + `permission` text NOT NULL, + FOREIGN KEY (`group_id`) REFERENCES `group`(`id`) ON UPDATE no action ON DELETE cascade +); +--> statement-breakpoint +INSERT INTO `__new_groupPermission`("group_id", "permission") SELECT "groupId", "permission" FROM `groupPermission`;--> statement-breakpoint +DROP TABLE `groupPermission`;--> statement-breakpoint +ALTER TABLE `__new_groupPermission` RENAME TO `groupPermission`;--> statement-breakpoint +CREATE TABLE `__new_icon` ( + `id` text PRIMARY KEY NOT NULL, + `name` text NOT NULL, + `url` text NOT NULL, + `checksum` text NOT NULL, + `icon_repository_id` text NOT NULL, + FOREIGN KEY (`icon_repository_id`) REFERENCES `iconRepository`(`id`) ON UPDATE no action ON DELETE cascade +); +--> statement-breakpoint +INSERT INTO `__new_icon`("id", "name", "url", "checksum", "icon_repository_id") SELECT "icon_id", "icon_name", "icon_url", "icon_checksum", "iconRepository_id" FROM `icon`;--> statement-breakpoint +DROP TABLE `icon`;--> statement-breakpoint +ALTER TABLE `__new_icon` RENAME TO `icon`;--> statement-breakpoint +DROP INDEX IF EXISTS `serverSetting_key_unique`;--> statement-breakpoint +CREATE UNIQUE INDEX `serverSetting_settingKey_unique` ON `serverSetting` (`setting_key`);--> statement-breakpoint +CREATE TABLE `__new_session` ( + `session_token` text PRIMARY KEY NOT NULL, + `user_id` text NOT NULL, + `expires` integer NOT NULL, + FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade +); +--> statement-breakpoint +INSERT INTO `__new_session`("session_token", "user_id", "expires") SELECT "sessionToken", "userId", "expires" FROM `session`;--> statement-breakpoint +DROP TABLE `session`;--> statement-breakpoint +ALTER TABLE `__new_session` RENAME TO `session`;--> statement-breakpoint +CREATE INDEX `user_id_idx` ON `session` (`user_id`);--> statement-breakpoint +CREATE TABLE `__new_user` ( + `id` text PRIMARY KEY NOT NULL, + `name` text, + `email` text, + `email_verified` integer, + `image` text, + `password` text, + `salt` text, + `provider` text DEFAULT 'credentials' NOT NULL, + `home_board_id` text, + `color_scheme` text DEFAULT 'dark' NOT NULL, + `first_day_of_week` integer DEFAULT 1 NOT NULL, + `ping_icons_enabled` integer DEFAULT false NOT NULL, + FOREIGN KEY (`home_board_id`) REFERENCES `board`(`id`) ON UPDATE no action ON DELETE set null +); +--> statement-breakpoint +INSERT INTO `__new_user`("id", "name", "email", "email_verified", "image", "password", "salt", "provider", "home_board_id", "color_scheme", "first_day_of_week", "ping_icons_enabled") SELECT "id", "name", "email", "emailVerified", "image", "password", "salt", "provider", "homeBoardId", "colorScheme", "firstDayOfWeek", "pingIconsEnabled" FROM `user`;--> statement-breakpoint +DROP TABLE `user`;--> statement-breakpoint +ALTER TABLE `__new_user` RENAME TO `user`;--> statement-breakpoint +PRAGMA foreign_keys=ON; \ No newline at end of file diff --git a/packages/db/migrations/sqlite/meta/0016_snapshot.json b/packages/db/migrations/sqlite/meta/0016_snapshot.json new file mode 100644 index 000000000..0d22ead90 --- /dev/null +++ b/packages/db/migrations/sqlite/meta/0016_snapshot.json @@ -0,0 +1,1579 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "e1f073f2-71de-489f-8268-4754a7ccff10", + "prevId": "605f3ca8-6cf3-4f5f-afd3-88d5190377b6", + "tables": { + "account": { + "name": "account", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token_type": { + "name": "token_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "session_state": { + "name": "session_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "userId_idx": { + "name": "userId_idx", + "columns": ["user_id"], + "isUnique": false + } + }, + "foreignKeys": { + "account_user_id_user_id_fk": { + "name": "account_user_id_user_id_fk", + "tableFrom": "account", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "account_provider_provider_account_id_pk": { + "columns": ["provider", "provider_account_id"], + "name": "account_provider_provider_account_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "apiKey": { + "name": "apiKey", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "api_key": { + "name": "api_key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "apiKey_user_id_user_id_fk": { + "name": "apiKey_user_id_user_id_fk", + "tableFrom": "apiKey", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "app": { + "name": "app", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "href": { + "name": "href", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "boardGroupPermission": { + "name": "boardGroupPermission", + "columns": { + "board_id": { + "name": "board_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "boardGroupPermission_board_id_board_id_fk": { + "name": "boardGroupPermission_board_id_board_id_fk", + "tableFrom": "boardGroupPermission", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "boardGroupPermission_group_id_group_id_fk": { + "name": "boardGroupPermission_group_id_group_id_fk", + "tableFrom": "boardGroupPermission", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "boardGroupPermission_board_id_group_id_permission_pk": { + "columns": ["board_id", "group_id", "permission"], + "name": "boardGroupPermission_board_id_group_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "boardUserPermission": { + "name": "boardUserPermission", + "columns": { + "board_id": { + "name": "board_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "boardUserPermission_board_id_board_id_fk": { + "name": "boardUserPermission_board_id_board_id_fk", + "tableFrom": "boardUserPermission", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "boardUserPermission_user_id_user_id_fk": { + "name": "boardUserPermission_user_id_user_id_fk", + "tableFrom": "boardUserPermission", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "boardUserPermission_board_id_user_id_permission_pk": { + "columns": ["board_id", "user_id", "permission"], + "name": "boardUserPermission_board_id_user_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "board": { + "name": "board", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_public": { + "name": "is_public", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "creator_id": { + "name": "creator_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_title": { + "name": "page_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "meta_title": { + "name": "meta_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "logo_image_url": { + "name": "logo_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "favicon_image_url": { + "name": "favicon_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "background_image_url": { + "name": "background_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "background_image_attachment": { + "name": "background_image_attachment", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'fixed'" + }, + "background_image_repeat": { + "name": "background_image_repeat", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'no-repeat'" + }, + "background_image_size": { + "name": "background_image_size", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'cover'" + }, + "primary_color": { + "name": "primary_color", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'#fa5252'" + }, + "secondary_color": { + "name": "secondary_color", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'#fd7e14'" + }, + "opacity": { + "name": "opacity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "custom_css": { + "name": "custom_css", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "column_count": { + "name": "column_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 10 + } + }, + "indexes": { + "board_name_unique": { + "name": "board_name_unique", + "columns": ["name"], + "isUnique": true + } + }, + "foreignKeys": { + "board_creator_id_user_id_fk": { + "name": "board_creator_id_user_id_fk", + "tableFrom": "board", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "groupMember": { + "name": "groupMember", + "columns": { + "group_id": { + "name": "group_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "groupMember_group_id_group_id_fk": { + "name": "groupMember_group_id_group_id_fk", + "tableFrom": "groupMember", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "groupMember_user_id_user_id_fk": { + "name": "groupMember_user_id_user_id_fk", + "tableFrom": "groupMember", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "groupMember_group_id_user_id_pk": { + "columns": ["group_id", "user_id"], + "name": "groupMember_group_id_user_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "groupPermission": { + "name": "groupPermission", + "columns": { + "group_id": { + "name": "group_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "groupPermission_group_id_group_id_fk": { + "name": "groupPermission_group_id_group_id_fk", + "tableFrom": "groupPermission", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "group": { + "name": "group", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "group_name_unique": { + "name": "group_name_unique", + "columns": ["name"], + "isUnique": true + } + }, + "foreignKeys": { + "group_owner_id_user_id_fk": { + "name": "group_owner_id_user_id_fk", + "tableFrom": "group", + "tableTo": "user", + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "iconRepository": { + "name": "iconRepository", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "icon": { + "name": "icon", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "checksum": { + "name": "checksum", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon_repository_id": { + "name": "icon_repository_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "icon_icon_repository_id_iconRepository_id_fk": { + "name": "icon_icon_repository_id_iconRepository_id_fk", + "tableFrom": "icon", + "tableTo": "iconRepository", + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integrationGroupPermissions": { + "name": "integrationGroupPermissions", + "columns": { + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integrationGroupPermissions_integration_id_integration_id_fk": { + "name": "integrationGroupPermissions_integration_id_integration_id_fk", + "tableFrom": "integrationGroupPermissions", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integrationGroupPermissions_group_id_group_id_fk": { + "name": "integrationGroupPermissions_group_id_group_id_fk", + "tableFrom": "integrationGroupPermissions", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationGroupPermissions_integration_id_group_id_permission_pk": { + "columns": ["integration_id", "group_id", "permission"], + "name": "integrationGroupPermissions_integration_id_group_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integration_item": { + "name": "integration_item", + "columns": { + "item_id": { + "name": "item_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integration_item_item_id_item_id_fk": { + "name": "integration_item_item_id_item_id_fk", + "tableFrom": "integration_item", + "tableTo": "item", + "columnsFrom": ["item_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integration_item_integration_id_integration_id_fk": { + "name": "integration_item_integration_id_integration_id_fk", + "tableFrom": "integration_item", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integration_item_item_id_integration_id_pk": { + "columns": ["item_id", "integration_id"], + "name": "integration_item_item_id_integration_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integrationSecret": { + "name": "integrationSecret", + "columns": { + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "integration_secret__kind_idx": { + "name": "integration_secret__kind_idx", + "columns": ["kind"], + "isUnique": false + }, + "integration_secret__updated_at_idx": { + "name": "integration_secret__updated_at_idx", + "columns": ["updated_at"], + "isUnique": false + } + }, + "foreignKeys": { + "integrationSecret_integration_id_integration_id_fk": { + "name": "integrationSecret_integration_id_integration_id_fk", + "tableFrom": "integrationSecret", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationSecret_integration_id_kind_pk": { + "columns": ["integration_id", "kind"], + "name": "integrationSecret_integration_id_kind_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integrationUserPermission": { + "name": "integrationUserPermission", + "columns": { + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integrationUserPermission_integration_id_integration_id_fk": { + "name": "integrationUserPermission_integration_id_integration_id_fk", + "tableFrom": "integrationUserPermission", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integrationUserPermission_user_id_user_id_fk": { + "name": "integrationUserPermission_user_id_user_id_fk", + "tableFrom": "integrationUserPermission", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationUserPermission_integration_id_user_id_permission_pk": { + "columns": ["integration_id", "user_id", "permission"], + "name": "integrationUserPermission_integration_id_user_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integration": { + "name": "integration", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "integration__kind_idx": { + "name": "integration__kind_idx", + "columns": ["kind"], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "invite": { + "name": "invite", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expiration_date": { + "name": "expiration_date", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "creator_id": { + "name": "creator_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "invite_token_unique": { + "name": "invite_token_unique", + "columns": ["token"], + "isUnique": true + } + }, + "foreignKeys": { + "invite_creator_id_user_id_fk": { + "name": "invite_creator_id_user_id_fk", + "tableFrom": "invite", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "item": { + "name": "item", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "section_id": { + "name": "section_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x_offset": { + "name": "x_offset", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "y_offset": { + "name": "y_offset", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "options": { + "name": "options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"json\": {}}'" + }, + "advanced_options": { + "name": "advanced_options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"json\": {}}'" + } + }, + "indexes": {}, + "foreignKeys": { + "item_section_id_section_id_fk": { + "name": "item_section_id_section_id_fk", + "tableFrom": "item", + "tableTo": "section", + "columnsFrom": ["section_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "media": { + "name": "media", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "blob", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content_type": { + "name": "content_type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "size": { + "name": "size", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "creator_id": { + "name": "creator_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "media_creator_id_user_id_fk": { + "name": "media_creator_id_user_id_fk", + "tableFrom": "media", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "search_engine": { + "name": "search_engine", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "short": { + "name": "short", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "url_template": { + "name": "url_template", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'generic'" + }, + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "search_engine_integration_id_integration_id_fk": { + "name": "search_engine_integration_id_integration_id_fk", + "tableFrom": "search_engine", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "section": { + "name": "section", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "board_id": { + "name": "board_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x_offset": { + "name": "x_offset", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "y_offset": { + "name": "y_offset", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "parent_section_id": { + "name": "parent_section_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "section_board_id_board_id_fk": { + "name": "section_board_id_board_id_fk", + "tableFrom": "section", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "section_parent_section_id_section_id_fk": { + "name": "section_parent_section_id_section_id_fk", + "tableFrom": "section", + "tableTo": "section", + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "serverSetting": { + "name": "serverSetting", + "columns": { + "setting_key": { + "name": "setting_key", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"json\": {}}'" + } + }, + "indexes": { + "serverSetting_settingKey_unique": { + "name": "serverSetting_settingKey_unique", + "columns": ["setting_key"], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "session": { + "name": "session", + "columns": { + "session_token": { + "name": "session_token", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_id_idx": { + "name": "user_id_idx", + "columns": ["user_id"], + "isUnique": false + } + }, + "foreignKeys": { + "session_user_id_user_id_fk": { + "name": "session_user_id_user_id_fk", + "tableFrom": "session", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user": { + "name": "user", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email_verified": { + "name": "email_verified", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "password": { + "name": "password", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'credentials'" + }, + "home_board_id": { + "name": "home_board_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "color_scheme": { + "name": "color_scheme", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'dark'" + }, + "first_day_of_week": { + "name": "first_day_of_week", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "ping_icons_enabled": { + "name": "ping_icons_enabled", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_home_board_id_board_id_fk": { + "name": "user_home_board_id_board_id_fk", + "tableFrom": "user", + "tableTo": "board", + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "verificationToken": { + "name": "verificationToken", + "columns": { + "identifier": { + "name": "identifier", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "verificationToken_identifier_token_pk": { + "columns": ["identifier", "token"], + "name": "verificationToken_identifier_token_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": { + "\"account\".\"userId\"": "\"account\".\"user_id\"", + "\"account\".\"providerAccountId\"": "\"account\".\"provider_account_id\"", + "\"apiKey\".\"apiKey\"": "\"apiKey\".\"api_key\"", + "\"apiKey\".\"userId\"": "\"apiKey\".\"user_id\"", + "\"groupMember\".\"groupId\"": "\"groupMember\".\"group_id\"", + "\"groupMember\".\"userId\"": "\"groupMember\".\"user_id\"", + "\"groupPermission\".\"groupId\"": "\"groupPermission\".\"group_id\"", + "\"iconRepository\".\"iconRepository_id\"": "\"iconRepository\".\"id\"", + "\"iconRepository\".\"iconRepository_slug\"": "\"iconRepository\".\"slug\"", + "\"icon\".\"icon_id\"": "\"icon\".\"id\"", + "\"icon\".\"icon_name\"": "\"icon\".\"name\"", + "\"icon\".\"icon_url\"": "\"icon\".\"url\"", + "\"icon\".\"icon_checksum\"": "\"icon\".\"checksum\"", + "\"icon\".\"iconRepository_id\"": "\"icon\".\"icon_repository_id\"", + "\"serverSetting\".\"key\"": "\"serverSetting\".\"setting_key\"", + "\"session\".\"sessionToken\"": "\"session\".\"session_token\"", + "\"session\".\"userId\"": "\"session\".\"user_id\"", + "\"user\".\"emailVerified\"": "\"user\".\"email_verified\"", + "\"user\".\"homeBoardId\"": "\"user\".\"home_board_id\"", + "\"user\".\"colorScheme\"": "\"user\".\"color_scheme\"", + "\"user\".\"firstDayOfWeek\"": "\"user\".\"first_day_of_week\"", + "\"user\".\"pingIconsEnabled\"": "\"user\".\"ping_icons_enabled\"" + } + }, + "internal": { + "indexes": {} + } +} diff --git a/packages/db/migrations/sqlite/meta/_journal.json b/packages/db/migrations/sqlite/meta/_journal.json index 3fdf0a8da..8367929b9 100644 --- a/packages/db/migrations/sqlite/meta/_journal.json +++ b/packages/db/migrations/sqlite/meta/_journal.json @@ -113,6 +113,13 @@ "when": 1730653336134, "tag": "0015_superb_psylocke", "breakpoints": true + }, + { + "idx": 16, + "version": "6", + "when": 1732210918783, + "tag": "0016_change_all_to_snake_case", + "breakpoints": true } ] } diff --git a/packages/db/migrations/sqlite/migrate.ts b/packages/db/migrations/sqlite/migrate.ts index 47a901745..420169677 100644 --- a/packages/db/migrations/sqlite/migrate.ts +++ b/packages/db/migrations/sqlite/migrate.ts @@ -10,7 +10,7 @@ const migrationsFolder = process.argv[2] ?? "."; const migrateAsync = async () => { const sqlite = new Database(process.env.DB_URL?.replace("file:", "")); - const db = drizzle(sqlite, { schema }); + const db = drizzle(sqlite, { schema, casing: "snake_case" }); migrate(db, { migrationsFolder }); diff --git a/packages/db/schema/mysql.ts b/packages/db/schema/mysql.ts index 062da629b..822e06795 100644 --- a/packages/db/schema/mysql.ts +++ b/packages/db/schema/mysql.ts @@ -39,10 +39,10 @@ const customBlob = customType<{ data: Buffer }>({ }); export const apiKeys = mysqlTable("apiKey", { - id: varchar("id", { length: 64 }).notNull().primaryKey(), - apiKey: text("apiKey").notNull(), - salt: text("salt").notNull(), - userId: varchar("userId", { length: 64 }) + id: varchar({ length: 64 }).notNull().primaryKey(), + apiKey: text().notNull(), + salt: text().notNull(), + userId: varchar({ length: 64 }) .notNull() .references((): AnyMySqlColumn => users.id, { onDelete: "cascade", @@ -50,38 +50,38 @@ export const apiKeys = mysqlTable("apiKey", { }); export const users = mysqlTable("user", { - id: varchar("id", { length: 64 }).notNull().primaryKey(), - name: text("name"), - email: text("email"), - emailVerified: timestamp("emailVerified"), - image: text("image"), - password: text("password"), - salt: text("salt"), - provider: varchar("provider", { length: 64 }).$type().default("credentials").notNull(), - homeBoardId: varchar("homeBoardId", { length: 64 }).references((): AnyMySqlColumn => boards.id, { + id: varchar({ length: 64 }).notNull().primaryKey(), + name: text(), + email: text(), + emailVerified: timestamp(), + image: text(), + password: text(), + salt: text(), + provider: varchar({ length: 64 }).$type().default("credentials").notNull(), + homeBoardId: varchar({ length: 64 }).references((): AnyMySqlColumn => boards.id, { onDelete: "set null", }), - colorScheme: varchar("colorScheme", { length: 5 }).$type().default("dark").notNull(), - firstDayOfWeek: tinyint("firstDayOfWeek").$type().default(1).notNull(), // Defaults to Monday - pingIconsEnabled: boolean("pingIconsEnabled").default(false).notNull(), + colorScheme: varchar({ length: 5 }).$type().default("dark").notNull(), + firstDayOfWeek: tinyint().$type().default(1).notNull(), // Defaults to Monday + pingIconsEnabled: boolean().default(false).notNull(), }); export const accounts = mysqlTable( "account", { - userId: varchar("userId", { length: 64 }) + userId: varchar({ length: 64 }) .notNull() .references(() => users.id, { onDelete: "cascade" }), - type: text("type").$type().notNull(), - provider: varchar("provider", { length: 64 }).notNull(), - providerAccountId: varchar("providerAccountId", { length: 64 }).notNull(), - refresh_token: text("refresh_token"), - access_token: text("access_token"), - expires_at: int("expires_at"), - token_type: text("token_type"), - scope: text("scope"), - id_token: text("id_token"), - session_state: text("session_state"), + type: text().$type().notNull(), + provider: varchar({ length: 64 }).notNull(), + providerAccountId: varchar({ length: 64 }).notNull(), + refresh_token: text(), + access_token: text(), + expires_at: int(), + token_type: text(), + scope: text(), + id_token: text(), + session_state: text(), }, (account) => ({ compoundKey: primaryKey({ @@ -94,11 +94,11 @@ export const accounts = mysqlTable( export const sessions = mysqlTable( "session", { - sessionToken: varchar("sessionToken", { length: 512 }).notNull().primaryKey(), - userId: varchar("userId", { length: 64 }) + sessionToken: varchar({ length: 512 }).notNull().primaryKey(), + userId: varchar({ length: 64 }) .notNull() .references(() => users.id, { onDelete: "cascade" }), - expires: timestamp("expires").notNull(), + expires: timestamp().notNull(), }, (session) => ({ userIdIdx: index("user_id_idx").on(session.userId), @@ -108,9 +108,9 @@ export const sessions = mysqlTable( export const verificationTokens = mysqlTable( "verificationToken", { - identifier: varchar("identifier", { length: 64 }).notNull(), - token: varchar("token", { length: 512 }).notNull(), - expires: timestamp("expires").notNull(), + identifier: varchar({ length: 64 }).notNull(), + token: varchar({ length: 512 }).notNull(), + expires: timestamp().notNull(), }, (verificationToken) => ({ compoundKey: primaryKey({ @@ -122,10 +122,10 @@ export const verificationTokens = mysqlTable( export const groupMembers = mysqlTable( "groupMember", { - groupId: varchar("groupId", { length: 64 }) + groupId: varchar({ length: 64 }) .notNull() .references(() => groups.id, { onDelete: "cascade" }), - userId: varchar("userId", { length: 64 }) + userId: varchar({ length: 64 }) .notNull() .references(() => users.id, { onDelete: "cascade" }), }, @@ -137,46 +137,46 @@ export const groupMembers = mysqlTable( ); export const groups = mysqlTable("group", { - id: varchar("id", { length: 64 }).notNull().primaryKey(), - name: varchar("name", { length: 64 }).unique().notNull(), - ownerId: varchar("owner_id", { length: 64 }).references(() => users.id, { + id: varchar({ length: 64 }).notNull().primaryKey(), + name: varchar({ length: 64 }).unique().notNull(), + ownerId: varchar({ length: 64 }).references(() => users.id, { onDelete: "set null", }), }); export const groupPermissions = mysqlTable("groupPermission", { - groupId: varchar("groupId", { length: 64 }) + groupId: varchar({ length: 64 }) .notNull() .references(() => groups.id, { onDelete: "cascade" }), - permission: text("permission").$type().notNull(), + permission: text().$type().notNull(), }); export const invites = mysqlTable("invite", { - id: varchar("id", { length: 64 }).notNull().primaryKey(), - token: varchar("token", { length: 512 }).notNull().unique(), - expirationDate: timestamp("expiration_date").notNull(), - creatorId: varchar("creator_id", { length: 64 }) + id: varchar({ length: 64 }).notNull().primaryKey(), + token: varchar({ length: 512 }).notNull().unique(), + expirationDate: timestamp().notNull(), + creatorId: varchar({ length: 64 }) .notNull() .references(() => users.id, { onDelete: "cascade" }), }); export const medias = mysqlTable("media", { - id: varchar("id", { length: 64 }).notNull().primaryKey(), - name: varchar("name", { length: 512 }).notNull(), - content: customBlob("content").notNull(), - contentType: text("content_type").notNull(), - size: int("size").notNull(), - createdAt: timestamp("created_at", { mode: "date" }).notNull().defaultNow(), - creatorId: varchar("creator_id", { length: 64 }).references(() => users.id, { onDelete: "set null" }), + id: varchar({ length: 64 }).notNull().primaryKey(), + name: varchar({ length: 512 }).notNull(), + content: customBlob().notNull(), + contentType: text().notNull(), + size: int().notNull(), + createdAt: timestamp({ mode: "date" }).notNull().defaultNow(), + creatorId: varchar({ length: 64 }).references(() => users.id, { onDelete: "set null" }), }); export const integrations = mysqlTable( "integration", { - id: varchar("id", { length: 64 }).notNull().primaryKey(), - name: text("name").notNull(), - url: text("url").notNull(), - kind: varchar("kind", { length: 128 }).$type().notNull(), + id: varchar({ length: 64 }).notNull().primaryKey(), + name: text().notNull(), + url: text().notNull(), + kind: varchar({ length: 128 }).$type().notNull(), }, (integrations) => ({ kindIdx: index("integration__kind_idx").on(integrations.kind), @@ -186,12 +186,12 @@ export const integrations = mysqlTable( export const integrationSecrets = mysqlTable( "integrationSecret", { - kind: varchar("kind", { length: 16 }).$type().notNull(), - value: text("value").$type<`${string}.${string}`>().notNull(), - updatedAt: timestamp("updated_at") + kind: varchar({ length: 16 }).$type().notNull(), + value: text().$type<`${string}.${string}`>().notNull(), + updatedAt: timestamp() .$onUpdateFn(() => new Date()) .notNull(), - integrationId: varchar("integration_id", { length: 64 }) + integrationId: varchar({ length: 64 }) .notNull() .references(() => integrations.id, { onDelete: "cascade" }), }, @@ -207,13 +207,13 @@ export const integrationSecrets = mysqlTable( export const integrationUserPermissions = mysqlTable( "integrationUserPermission", { - integrationId: varchar("integration_id", { length: 64 }) + integrationId: varchar({ length: 64 }) .notNull() .references(() => integrations.id, { onDelete: "cascade" }), - userId: varchar("user_id", { length: 64 }) + userId: varchar({ length: 64 }) .notNull() .references(() => users.id, { onDelete: "cascade" }), - permission: varchar("permission", { length: 128 }).$type().notNull(), + permission: varchar({ length: 128 }).$type().notNull(), }, (table) => ({ compoundKey: primaryKey({ @@ -225,13 +225,13 @@ export const integrationUserPermissions = mysqlTable( export const integrationGroupPermissions = mysqlTable( "integrationGroupPermissions", { - integrationId: varchar("integration_id", { length: 64 }) + integrationId: varchar({ length: 64 }) .notNull() .references(() => integrations.id, { onDelete: "cascade" }), - groupId: varchar("group_id", { length: 64 }) + groupId: varchar({ length: 64 }) .notNull() .references(() => groups.id, { onDelete: "cascade" }), - permission: varchar("permission", { length: 128 }).$type().notNull(), + permission: varchar({ length: 128 }).$type().notNull(), }, (table) => ({ compoundKey: primaryKey({ @@ -242,46 +242,40 @@ export const integrationGroupPermissions = mysqlTable( ); export const boards = mysqlTable("board", { - id: varchar("id", { length: 64 }).notNull().primaryKey(), - name: varchar("name", { length: 256 }).unique().notNull(), - isPublic: boolean("is_public").default(false).notNull(), - creatorId: varchar("creator_id", { length: 64 }).references(() => users.id, { + id: varchar({ length: 64 }).notNull().primaryKey(), + name: varchar({ length: 256 }).unique().notNull(), + isPublic: boolean().default(false).notNull(), + creatorId: varchar({ length: 64 }).references(() => users.id, { onDelete: "set null", }), - pageTitle: text("page_title"), - metaTitle: text("meta_title"), - logoImageUrl: text("logo_image_url"), - faviconImageUrl: text("favicon_image_url"), - backgroundImageUrl: text("background_image_url"), - backgroundImageAttachment: text("background_image_attachment") + pageTitle: text(), + metaTitle: text(), + logoImageUrl: text(), + faviconImageUrl: text(), + backgroundImageUrl: text(), + backgroundImageAttachment: text() .$type() .default(backgroundImageAttachments.defaultValue) .notNull(), - backgroundImageRepeat: text("background_image_repeat") - .$type() - .default(backgroundImageRepeats.defaultValue) - .notNull(), - backgroundImageSize: text("background_image_size") - .$type() - .default(backgroundImageSizes.defaultValue) - .notNull(), - primaryColor: text("primary_color").default("#fa5252").notNull(), - secondaryColor: text("secondary_color").default("#fd7e14").notNull(), - opacity: int("opacity").default(100).notNull(), - customCss: text("custom_css"), - columnCount: int("column_count").default(10).notNull(), + backgroundImageRepeat: text().$type().default(backgroundImageRepeats.defaultValue).notNull(), + backgroundImageSize: text().$type().default(backgroundImageSizes.defaultValue).notNull(), + primaryColor: text().default("#fa5252").notNull(), + secondaryColor: text().default("#fd7e14").notNull(), + opacity: int().default(100).notNull(), + customCss: text(), + columnCount: int().default(10).notNull(), }); export const boardUserPermissions = mysqlTable( "boardUserPermission", { - boardId: varchar("board_id", { length: 64 }) + boardId: varchar({ length: 64 }) .notNull() .references(() => boards.id, { onDelete: "cascade" }), - userId: varchar("user_id", { length: 64 }) + userId: varchar({ length: 64 }) .notNull() .references(() => users.id, { onDelete: "cascade" }), - permission: varchar("permission", { length: 128 }).$type().notNull(), + permission: varchar({ length: 128 }).$type().notNull(), }, (table) => ({ compoundKey: primaryKey({ @@ -293,13 +287,13 @@ export const boardUserPermissions = mysqlTable( export const boardGroupPermissions = mysqlTable( "boardGroupPermission", { - boardId: varchar("board_id", { length: 64 }) + boardId: varchar({ length: 64 }) .notNull() .references(() => boards.id, { onDelete: "cascade" }), - groupId: varchar("group_id", { length: 64 }) + groupId: varchar({ length: 64 }) .notNull() .references(() => groups.id, { onDelete: "cascade" }), - permission: varchar("permission", { length: 128 }).$type().notNull(), + permission: varchar({ length: 128 }).$type().notNull(), }, (table) => ({ compoundKey: primaryKey({ @@ -309,50 +303,50 @@ export const boardGroupPermissions = mysqlTable( ); export const sections = mysqlTable("section", { - id: varchar("id", { length: 64 }).notNull().primaryKey(), - boardId: varchar("board_id", { length: 64 }) + id: varchar({ length: 64 }).notNull().primaryKey(), + boardId: varchar({ length: 64 }) .notNull() .references(() => boards.id, { onDelete: "cascade" }), - kind: text("kind").$type().notNull(), - xOffset: int("x_offset").notNull(), - yOffset: int("y_offset").notNull(), - width: int("width"), - height: int("height"), - name: text("name"), - parentSectionId: varchar("parent_section_id", { length: 64 }).references((): AnyMySqlColumn => sections.id, { + kind: text().$type().notNull(), + xOffset: int().notNull(), + yOffset: int().notNull(), + width: int(), + height: int(), + name: text(), + parentSectionId: varchar({ length: 64 }).references((): AnyMySqlColumn => sections.id, { onDelete: "cascade", }), }); export const items = mysqlTable("item", { - id: varchar("id", { length: 64 }).notNull().primaryKey(), - sectionId: varchar("section_id", { length: 64 }) + id: varchar({ length: 64 }).notNull().primaryKey(), + sectionId: varchar({ length: 64 }) .notNull() .references(() => sections.id, { onDelete: "cascade" }), - kind: text("kind").$type().notNull(), - xOffset: int("x_offset").notNull(), - yOffset: int("y_offset").notNull(), - width: int("width").notNull(), - height: int("height").notNull(), - options: text("options").default('{"json": {}}').notNull(), // empty superjson object - advancedOptions: text("advanced_options").default('{"json": {}}').notNull(), // empty superjson object + kind: text().$type().notNull(), + xOffset: int().notNull(), + yOffset: int().notNull(), + width: int().notNull(), + height: int().notNull(), + options: text().default('{"json": {}}').notNull(), // empty superjson object + advancedOptions: text().default('{"json": {}}').notNull(), // empty superjson object }); export const apps = mysqlTable("app", { - id: varchar("id", { length: 64 }).notNull().primaryKey(), - name: text("name").notNull(), - description: text("description"), - iconUrl: text("icon_url").notNull(), - href: text("href"), + id: varchar({ length: 64 }).notNull().primaryKey(), + name: text().notNull(), + description: text(), + iconUrl: text().notNull(), + href: text(), }); export const integrationItems = mysqlTable( "integration_item", { - itemId: varchar("item_id", { length: 64 }) + itemId: varchar({ length: 64 }) .notNull() .references(() => items.id, { onDelete: "cascade" }), - integrationId: varchar("integration_id", { length: 64 }) + integrationId: varchar({ length: 64 }) .notNull() .references(() => integrations.id, { onDelete: "cascade" }), }, @@ -364,23 +358,23 @@ export const integrationItems = mysqlTable( ); export const icons = mysqlTable("icon", { - id: varchar("icon_id", { length: 64 }).notNull().primaryKey(), - name: varchar("icon_name", { length: 250 }).notNull(), - url: text("icon_url").notNull(), - checksum: text("icon_checksum").notNull(), - iconRepositoryId: varchar("iconRepository_id", { length: 64 }) + id: varchar({ length: 64 }).notNull().primaryKey(), + name: varchar({ length: 250 }).notNull(), + url: text().notNull(), + checksum: text().notNull(), + iconRepositoryId: varchar({ length: 64 }) .notNull() .references(() => iconRepositories.id, { onDelete: "cascade" }), }); export const iconRepositories = mysqlTable("iconRepository", { - id: varchar("iconRepository_id", { length: 64 }).notNull().primaryKey(), - slug: varchar("iconRepository_slug", { length: 150 }).notNull(), + id: varchar({ length: 64 }).notNull().primaryKey(), + slug: varchar({ length: 150 }).notNull(), }); export const serverSettings = mysqlTable("serverSetting", { - settingKey: varchar("key", { length: 64 }).notNull().unique().primaryKey(), - value: text("value").default('{"json": {}}').notNull(), // empty superjson object + settingKey: varchar({ length: 64 }).notNull().unique().primaryKey(), + value: text().default('{"json": {}}').notNull(), // empty superjson object }); export const apiKeyRelations = relations(apiKeys, ({ one }) => ({ @@ -391,14 +385,14 @@ export const apiKeyRelations = relations(apiKeys, ({ one }) => ({ })); export const searchEngines = mysqlTable("search_engine", { - id: varchar("id", { length: 64 }).notNull().primaryKey(), - iconUrl: text("icon_url").notNull(), - name: varchar("name", { length: 64 }).notNull(), - short: varchar("short", { length: 8 }).notNull(), - description: text("description"), - urlTemplate: text("url_template"), - type: varchar("type", { length: 64 }).$type().notNull().default("generic"), - integrationId: varchar("integration_id", { length: 64 }).references(() => integrations.id, { onDelete: "cascade" }), + id: varchar({ length: 64 }).notNull().primaryKey(), + iconUrl: text().notNull(), + name: varchar({ length: 64 }).notNull(), + short: varchar({ length: 8 }).notNull(), + description: text(), + urlTemplate: text(), + type: varchar({ length: 64 }).$type().notNull().default("generic"), + integrationId: varchar({ length: 64 }).references(() => integrations.id, { onDelete: "cascade" }), }); export const accountRelations = relations(accounts, ({ one }) => ({ diff --git a/packages/db/schema/sqlite.ts b/packages/db/schema/sqlite.ts index f2f19e71c..fd4158f38 100644 --- a/packages/db/schema/sqlite.ts +++ b/packages/db/schema/sqlite.ts @@ -3,7 +3,7 @@ import type { DayOfWeek } from "@mantine/dates"; import type { InferSelectModel } from "drizzle-orm"; import { relations, sql } from "drizzle-orm"; import type { AnySQLiteColumn } from "drizzle-orm/sqlite-core"; -import { blob, index, int, integer, primaryKey, sqliteTable, text } from "drizzle-orm/sqlite-core"; +import { blob, index, int, primaryKey, sqliteTable, text } from "drizzle-orm/sqlite-core"; import { backgroundImageAttachments, backgroundImageRepeats, backgroundImageSizes } from "@homarr/definitions"; import type { @@ -23,10 +23,10 @@ import type { } from "@homarr/definitions"; export const apiKeys = sqliteTable("apiKey", { - id: text("id").notNull().primaryKey(), - apiKey: text("apiKey").notNull(), - salt: text("salt").notNull(), - userId: text("userId") + id: text().notNull().primaryKey(), + apiKey: text().notNull(), + salt: text().notNull(), + userId: text() .notNull() .references((): AnySQLiteColumn => users.id, { onDelete: "cascade", @@ -34,38 +34,38 @@ export const apiKeys = sqliteTable("apiKey", { }); export const users = sqliteTable("user", { - id: text("id").notNull().primaryKey(), - name: text("name"), - email: text("email"), - emailVerified: integer("emailVerified", { mode: "timestamp_ms" }), - image: text("image"), - password: text("password"), - salt: text("salt"), - provider: text("provider").$type().default("credentials").notNull(), - homeBoardId: text("homeBoardId").references((): AnySQLiteColumn => boards.id, { + id: text().notNull().primaryKey(), + name: text(), + email: text(), + emailVerified: int({ mode: "timestamp_ms" }), + image: text(), + password: text(), + salt: text(), + provider: text().$type().default("credentials").notNull(), + homeBoardId: text().references((): AnySQLiteColumn => boards.id, { onDelete: "set null", }), - colorScheme: text("colorScheme").$type().default("dark").notNull(), - firstDayOfWeek: int("firstDayOfWeek").$type().default(1).notNull(), // Defaults to Monday - pingIconsEnabled: int("pingIconsEnabled", { mode: "boolean" }).default(false).notNull(), + colorScheme: text().$type().default("dark").notNull(), + firstDayOfWeek: int().$type().default(1).notNull(), // Defaults to Monday + pingIconsEnabled: int({ mode: "boolean" }).default(false).notNull(), }); export const accounts = sqliteTable( "account", { - userId: text("userId") + userId: text() .notNull() .references(() => users.id, { onDelete: "cascade" }), - type: text("type").$type().notNull(), - provider: text("provider").notNull(), - providerAccountId: text("providerAccountId").notNull(), - refresh_token: text("refresh_token"), - access_token: text("access_token"), - expires_at: integer("expires_at"), - token_type: text("token_type"), - scope: text("scope"), - id_token: text("id_token"), - session_state: text("session_state"), + type: text().$type().notNull(), + provider: text().notNull(), + providerAccountId: text().notNull(), + refresh_token: text(), + access_token: text(), + expires_at: int(), + token_type: text(), + scope: text(), + id_token: text(), + session_state: text(), }, (account) => ({ compoundKey: primaryKey({ @@ -78,11 +78,11 @@ export const accounts = sqliteTable( export const sessions = sqliteTable( "session", { - sessionToken: text("sessionToken").notNull().primaryKey(), - userId: text("userId") + sessionToken: text().notNull().primaryKey(), + userId: text() .notNull() .references(() => users.id, { onDelete: "cascade" }), - expires: integer("expires", { mode: "timestamp_ms" }).notNull(), + expires: int({ mode: "timestamp_ms" }).notNull(), }, (session) => ({ userIdIdx: index("user_id_idx").on(session.userId), @@ -92,9 +92,9 @@ export const sessions = sqliteTable( export const verificationTokens = sqliteTable( "verificationToken", { - identifier: text("identifier").notNull(), - token: text("token").notNull(), - expires: integer("expires", { mode: "timestamp_ms" }).notNull(), + identifier: text().notNull(), + token: text().notNull(), + expires: int({ mode: "timestamp_ms" }).notNull(), }, (verificationToken) => ({ compoundKey: primaryKey({ @@ -106,10 +106,10 @@ export const verificationTokens = sqliteTable( export const groupMembers = sqliteTable( "groupMember", { - groupId: text("groupId") + groupId: text() .notNull() .references(() => groups.id, { onDelete: "cascade" }), - userId: text("userId") + userId: text() .notNull() .references(() => users.id, { onDelete: "cascade" }), }, @@ -121,50 +121,50 @@ export const groupMembers = sqliteTable( ); export const groups = sqliteTable("group", { - id: text("id").notNull().primaryKey(), - name: text("name").unique().notNull(), - ownerId: text("owner_id").references(() => users.id, { + id: text().notNull().primaryKey(), + name: text().unique().notNull(), + ownerId: text().references(() => users.id, { onDelete: "set null", }), }); export const groupPermissions = sqliteTable("groupPermission", { - groupId: text("groupId") + groupId: text() .notNull() .references(() => groups.id, { onDelete: "cascade" }), - permission: text("permission").$type().notNull(), + permission: text().$type().notNull(), }); export const invites = sqliteTable("invite", { - id: text("id").notNull().primaryKey(), - token: text("token").notNull().unique(), - expirationDate: int("expiration_date", { + id: text().notNull().primaryKey(), + token: text().notNull().unique(), + expirationDate: int({ mode: "timestamp", }).notNull(), - creatorId: text("creator_id") + creatorId: text() .notNull() .references(() => users.id, { onDelete: "cascade" }), }); export const medias = sqliteTable("media", { - id: text("id").notNull().primaryKey(), - name: text("name").notNull(), - content: blob("content", { mode: "buffer" }).$type().notNull(), - contentType: text("content_type").notNull(), - size: int("size").notNull(), - createdAt: integer("created_at", { mode: "timestamp" }) + id: text().notNull().primaryKey(), + name: text().notNull(), + content: blob({ mode: "buffer" }).$type().notNull(), + contentType: text().notNull(), + size: int().notNull(), + createdAt: int({ mode: "timestamp" }) .notNull() .default(sql`(unixepoch())`), - creatorId: text("creator_id").references(() => users.id, { onDelete: "set null" }), + creatorId: text().references(() => users.id, { onDelete: "set null" }), }); export const integrations = sqliteTable( "integration", { - id: text("id").notNull().primaryKey(), - name: text("name").notNull(), - url: text("url").notNull(), - kind: text("kind").$type().notNull(), + id: text().notNull().primaryKey(), + name: text().notNull(), + url: text().notNull(), + kind: text().$type().notNull(), }, (integrations) => ({ kindIdx: index("integration__kind_idx").on(integrations.kind), @@ -174,12 +174,12 @@ export const integrations = sqliteTable( export const integrationSecrets = sqliteTable( "integrationSecret", { - kind: text("kind").$type().notNull(), - value: text("value").$type<`${string}.${string}`>().notNull(), - updatedAt: integer("updated_at", { mode: "timestamp" }) + kind: text().$type().notNull(), + value: text().$type<`${string}.${string}`>().notNull(), + updatedAt: int({ mode: "timestamp" }) .$onUpdateFn(() => new Date()) .notNull(), - integrationId: text("integration_id") + integrationId: text() .notNull() .references(() => integrations.id, { onDelete: "cascade" }), }, @@ -195,13 +195,13 @@ export const integrationSecrets = sqliteTable( export const integrationUserPermissions = sqliteTable( "integrationUserPermission", { - integrationId: text("integration_id") + integrationId: text() .notNull() .references(() => integrations.id, { onDelete: "cascade" }), - userId: text("user_id") + userId: text() .notNull() .references(() => users.id, { onDelete: "cascade" }), - permission: text("permission").$type().notNull(), + permission: text().$type().notNull(), }, (table) => ({ compoundKey: primaryKey({ @@ -213,13 +213,13 @@ export const integrationUserPermissions = sqliteTable( export const integrationGroupPermissions = sqliteTable( "integrationGroupPermissions", { - integrationId: text("integration_id") + integrationId: text() .notNull() .references(() => integrations.id, { onDelete: "cascade" }), - groupId: text("group_id") + groupId: text() .notNull() .references(() => groups.id, { onDelete: "cascade" }), - permission: text("permission").$type().notNull(), + permission: text().$type().notNull(), }, (table) => ({ compoundKey: primaryKey({ @@ -229,46 +229,40 @@ export const integrationGroupPermissions = sqliteTable( ); export const boards = sqliteTable("board", { - id: text("id").notNull().primaryKey(), - name: text("name").unique().notNull(), - isPublic: int("is_public", { mode: "boolean" }).default(false).notNull(), - creatorId: text("creator_id").references(() => users.id, { + id: text().notNull().primaryKey(), + name: text().unique().notNull(), + isPublic: int({ mode: "boolean" }).default(false).notNull(), + creatorId: text().references(() => users.id, { onDelete: "set null", }), - pageTitle: text("page_title"), - metaTitle: text("meta_title"), - logoImageUrl: text("logo_image_url"), - faviconImageUrl: text("favicon_image_url"), - backgroundImageUrl: text("background_image_url"), - backgroundImageAttachment: text("background_image_attachment") + pageTitle: text(), + metaTitle: text(), + logoImageUrl: text(), + faviconImageUrl: text(), + backgroundImageUrl: text(), + backgroundImageAttachment: text() .$type() .default(backgroundImageAttachments.defaultValue) .notNull(), - backgroundImageRepeat: text("background_image_repeat") - .$type() - .default(backgroundImageRepeats.defaultValue) - .notNull(), - backgroundImageSize: text("background_image_size") - .$type() - .default(backgroundImageSizes.defaultValue) - .notNull(), - primaryColor: text("primary_color").default("#fa5252").notNull(), - secondaryColor: text("secondary_color").default("#fd7e14").notNull(), - opacity: int("opacity").default(100).notNull(), - customCss: text("custom_css"), - columnCount: int("column_count").default(10).notNull(), + backgroundImageRepeat: text().$type().default(backgroundImageRepeats.defaultValue).notNull(), + backgroundImageSize: text().$type().default(backgroundImageSizes.defaultValue).notNull(), + primaryColor: text().default("#fa5252").notNull(), + secondaryColor: text().default("#fd7e14").notNull(), + opacity: int().default(100).notNull(), + customCss: text(), + columnCount: int().default(10).notNull(), }); export const boardUserPermissions = sqliteTable( "boardUserPermission", { - boardId: text("board_id") + boardId: text() .notNull() .references(() => boards.id, { onDelete: "cascade" }), - userId: text("user_id") + userId: text() .notNull() .references(() => users.id, { onDelete: "cascade" }), - permission: text("permission").$type().notNull(), + permission: text().$type().notNull(), }, (table) => ({ compoundKey: primaryKey({ @@ -280,13 +274,13 @@ export const boardUserPermissions = sqliteTable( export const boardGroupPermissions = sqliteTable( "boardGroupPermission", { - boardId: text("board_id") + boardId: text() .notNull() .references(() => boards.id, { onDelete: "cascade" }), - groupId: text("group_id") + groupId: text() .notNull() .references(() => groups.id, { onDelete: "cascade" }), - permission: text("permission").$type().notNull(), + permission: text().$type().notNull(), }, (table) => ({ compoundKey: primaryKey({ @@ -296,50 +290,50 @@ export const boardGroupPermissions = sqliteTable( ); export const sections = sqliteTable("section", { - id: text("id").notNull().primaryKey(), - boardId: text("board_id") + id: text().notNull().primaryKey(), + boardId: text() .notNull() .references(() => boards.id, { onDelete: "cascade" }), - kind: text("kind").$type().notNull(), - xOffset: int("x_offset").notNull(), - yOffset: int("y_offset").notNull(), - width: int("width"), - height: int("height"), - name: text("name"), - parentSectionId: text("parent_section_id").references((): AnySQLiteColumn => sections.id, { + kind: text().$type().notNull(), + xOffset: int().notNull(), + yOffset: int().notNull(), + width: int(), + height: int(), + name: text(), + parentSectionId: text().references((): AnySQLiteColumn => sections.id, { onDelete: "cascade", }), }); export const items = sqliteTable("item", { - id: text("id").notNull().primaryKey(), - sectionId: text("section_id") + id: text().notNull().primaryKey(), + sectionId: text() .notNull() .references(() => sections.id, { onDelete: "cascade" }), - kind: text("kind").$type().notNull(), - xOffset: int("x_offset").notNull(), - yOffset: int("y_offset").notNull(), - width: int("width").notNull(), - height: int("height").notNull(), - options: text("options").default('{"json": {}}').notNull(), // empty superjson object - advancedOptions: text("advanced_options").default('{"json": {}}').notNull(), // empty superjson object + kind: text().$type().notNull(), + xOffset: int().notNull(), + yOffset: int().notNull(), + width: int().notNull(), + height: int().notNull(), + options: text().default('{"json": {}}').notNull(), // empty superjson object + advancedOptions: text().default('{"json": {}}').notNull(), // empty superjson object }); export const apps = sqliteTable("app", { - id: text("id").notNull().primaryKey(), - name: text("name").notNull(), - description: text("description"), - iconUrl: text("icon_url").notNull(), - href: text("href"), + id: text().notNull().primaryKey(), + name: text().notNull(), + description: text(), + iconUrl: text().notNull(), + href: text(), }); export const integrationItems = sqliteTable( "integration_item", { - itemId: text("item_id") + itemId: text() .notNull() .references(() => items.id, { onDelete: "cascade" }), - integrationId: text("integration_id") + integrationId: text() .notNull() .references(() => integrations.id, { onDelete: "cascade" }), }, @@ -351,23 +345,23 @@ export const integrationItems = sqliteTable( ); export const icons = sqliteTable("icon", { - id: text("icon_id").notNull().primaryKey(), - name: text("icon_name").notNull(), - url: text("icon_url").notNull(), - checksum: text("icon_checksum").notNull(), - iconRepositoryId: text("iconRepository_id") + id: text().notNull().primaryKey(), + name: text().notNull(), + url: text().notNull(), + checksum: text().notNull(), + iconRepositoryId: text() .notNull() .references(() => iconRepositories.id, { onDelete: "cascade" }), }); export const iconRepositories = sqliteTable("iconRepository", { - id: text("iconRepository_id").notNull().primaryKey(), - slug: text("iconRepository_slug").notNull(), + id: text().notNull().primaryKey(), + slug: text().notNull(), }); export const serverSettings = sqliteTable("serverSetting", { - settingKey: text("key").notNull().unique().primaryKey(), - value: text("value").default('{"json": {}}').notNull(), // empty superjson object + settingKey: text().notNull().unique().primaryKey(), + value: text().default('{"json": {}}').notNull(), // empty superjson object }); export const apiKeyRelations = relations(apiKeys, ({ one }) => ({ @@ -378,14 +372,14 @@ export const apiKeyRelations = relations(apiKeys, ({ one }) => ({ })); export const searchEngines = sqliteTable("search_engine", { - id: text("id").notNull().primaryKey(), - iconUrl: text("icon_url").notNull(), - name: text("name").notNull(), - short: text("short").notNull(), - description: text("description"), - urlTemplate: text("url_template"), - type: text("type").$type().notNull().default("generic"), - integrationId: text("integration_id").references(() => integrations.id, { onDelete: "cascade" }), + id: text().notNull().primaryKey(), + iconUrl: text().notNull(), + name: text().notNull(), + short: text().notNull(), + description: text(), + urlTemplate: text(), + type: text().$type().notNull().default("generic"), + integrationId: text().references(() => integrations.id, { onDelete: "cascade" }), }); export const accountRelations = relations(accounts, ({ one }) => ({ diff --git a/packages/db/test/db-mock.ts b/packages/db/test/db-mock.ts index d2befdfb9..e2f249554 100644 --- a/packages/db/test/db-mock.ts +++ b/packages/db/test/db-mock.ts @@ -6,7 +6,7 @@ import { schema } from ".."; export const createDb = (debug?: boolean) => { const sqlite = new Database(":memory:"); - const db = drizzle(sqlite, { schema, logger: debug }); + const db = drizzle(sqlite, { schema, logger: debug, casing: "snake_case" }); migrate(db, { migrationsFolder: "./packages/db/migrations/sqlite", }); diff --git a/packages/db/test/mysql-migration.spec.ts b/packages/db/test/mysql-migration.spec.ts index d7dad22d0..3258df726 100644 --- a/packages/db/test/mysql-migration.spec.ts +++ b/packages/db/test/mysql-migration.spec.ts @@ -22,6 +22,7 @@ describe("Mysql Migration", () => { const database = drizzle(connection, { schema: mysqlSchema, mode: "default", + casing: "snake_case", }); // Run migrations and check if it works From 1fc48f9db05935bc3298f9251b564ed539c48312 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 23 Nov 2024 17:18:29 +0100 Subject: [PATCH 06/48] feat: add permission section to create user page (#1524) * feat: add permission section to create user page * fix: deepsource issues --- .../_components/create-user-stepper.tsx | 181 ++++++++++++++++-- .../app/[locale]/manage/users/create/page.tsx | 17 +- .../components/access/group-select-modal.tsx | 9 +- packages/api/src/router/group.ts | 35 +++- packages/api/src/router/user.ts | 8 +- packages/translation/src/lang/en.json | 7 +- packages/validation/src/user.ts | 7 +- 7 files changed, 232 insertions(+), 32 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx b/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx index fc1425f21..ecf9397ef 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx @@ -1,20 +1,48 @@ "use client"; -import { useCallback, useMemo, useState } from "react"; -import { Card, PasswordInput, Stack, Stepper, Text, TextInput, Title } from "@mantine/core"; -import { IconUserCheck } from "@tabler/icons-react"; +import { startTransition, useCallback, useMemo, useState } from "react"; +import { + Badge, + Button, + Card, + Group, + PasswordInput, + Stack, + Stepper, + Table, + Text, + TextInput, + Title, + Tooltip, +} from "@mantine/core"; +import { useListState } from "@mantine/hooks"; +import { IconPlus, IconUserCheck } from "@tabler/icons-react"; import { clientApi } from "@homarr/api/client"; +import { everyoneGroup, groupPermissions } from "@homarr/definitions"; +import type { GroupPermissionKey } from "@homarr/definitions"; import { useZodForm } from "@homarr/form"; +import { useModalAction } from "@homarr/modals"; import { showErrorNotification } from "@homarr/notifications"; -import { useScopedI18n } from "@homarr/translation/client"; +import { useI18n, useScopedI18n } from "@homarr/translation/client"; import { CustomPasswordInput, UserAvatar } from "@homarr/ui"; import { validation, z } from "@homarr/validation"; import { createCustomErrorParams } from "@homarr/validation/form"; +import { GroupSelectModal } from "~/components/access/group-select-modal"; import { StepperNavigationComponent } from "./stepper-navigation"; -export const UserCreateStepperComponent = () => { +interface GroupWithPermissions { + id: string; + name: string; + permissions: GroupPermissionKey[]; +} + +interface UserCreateStepperComponentProps { + initialGroups: GroupWithPermissions[]; +} + +export const UserCreateStepperComponent = ({ initialGroups }: UserCreateStepperComponentProps) => { const t = useScopedI18n("management.page.user.create"); const tUserField = useScopedI18n("user.field"); @@ -73,7 +101,18 @@ export const UserCreateStepperComponent = () => { }, ); - const allForms = useMemo(() => [generalForm, securityForm], [generalForm, securityForm]); + const groupsForm = useZodForm( + z.object({ + groups: z.array(z.string()), + }), + { + initialValues: { + groups: initialGroups.map((group) => group.id), + }, + }, + ); + + const allForms = useMemo(() => [generalForm, securityForm, groupsForm], [generalForm, securityForm, groupsForm]); const activeForm = allForms[active]; const isCurrentFormValid = activeForm ? activeForm.isValid : () => true; @@ -86,10 +125,11 @@ export const UserCreateStepperComponent = () => { email: generalForm.values.email, password: securityForm.values.password, confirmPassword: securityForm.values.confirmPassword, + groupIds: groupsForm.values.groups, }); } nextStep(); - }, [active, generalForm, mutateAsync, securityForm, nextStep]); + }, [active, generalForm, securityForm, groupsForm, mutateAsync, nextStep]); const reset = useCallback(() => { setActive(0); @@ -144,13 +184,18 @@ export const UserCreateStepperComponent = () => { - - 3 + + + + groupsForm.setValues((value) => ({ groups: value.groups?.concat(groupId) ?? [groupId] })) + } + removeGroup={(groupId) => { + groupsForm.setValues((value) => ({ groups: value.groups?.filter((group) => group !== groupId) ?? [] })); + }} + /> + @@ -183,3 +228,111 @@ export const UserCreateStepperComponent = () => { ); }; + +interface GroupsFormProps { + addGroup: (groupId: string) => void; + removeGroup: (groupId: string) => void; + initialGroups: GroupWithPermissions[]; +} + +const GroupsForm = ({ addGroup, removeGroup, initialGroups }: GroupsFormProps) => { + const t = useI18n(); + const [groups, { append, filter }] = useListState(initialGroups); + const { openModal } = useModalAction(GroupSelectModal); + + const handleAddClick = () => { + openModal({ + presentGroupIds: groups.map((group) => group.id), + withPermissions: true, + onSelect({ id, name, permissions }) { + if (!permissions) return; + + startTransition(() => { + addGroup(id); + append({ id, name, permissions }); + }); + }, + }); + }; + + const handleGroupRemove = (id: string) => { + filter((group) => group.id !== id); + removeGroup(id); + }; + + return ( +
+ + + + {t("management.page.user.create.step.groups.title")} + + {t("management.page.user.create.step.groups.description", { everyoneGroup })} + + + + + + + + {t("group.field.name")} + {t("permission.title")} + + + + + {groups.map((group) => ( + + {group.name} + + + {Object.entries(groupPermissions) + .flatMap(([key, values]) => + Array.isArray(values) + ? values.map((value) => ({ key, value: value as string })) + : [{ key, value: key }], + ) + .filter(({ key, value }) => + group.permissions.some( + (permission) => permission === (key === value ? key : `${key}-${value}`), + ), + ) + .map(({ key, value }) => ( + + ))} + + + + {group.name !== everyoneGroup && ( + + )} + + + ))} + +
+
+
+ ); +}; + +const PermissionBadge = ({ category, value }: { category: string; value: string }) => { + const t = useI18n(); + + return ( + + + {t(`group.permission.${category}.item.${value}.label` as never)} + + + ); +}; diff --git a/apps/nextjs/src/app/[locale]/manage/users/create/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/create/page.tsx index d076c2e37..4c49b6595 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/create/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/create/page.tsx @@ -2,6 +2,9 @@ import { notFound } from "next/navigation"; import { auth } from "@homarr/auth/next"; import { isProviderEnabled } from "@homarr/auth/server"; +import { db, inArray } from "@homarr/db"; +import { groups } from "@homarr/db/schema/sqlite"; +import { everyoneGroup } from "@homarr/definitions"; import { getScopedI18n } from "@homarr/translation/server"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; @@ -33,10 +36,22 @@ export default async function CreateUserPage() { return notFound(); } + const initialGroups = await db.query.groups.findMany({ + where: inArray(groups.name, [everyoneGroup]), + with: { + permissions: true, + }, + }); + return ( <> - + ({ + ...group, + permissions: group.permissions.map(({ permission }) => permission), + }))} + /> ); } diff --git a/apps/nextjs/src/components/access/group-select-modal.tsx b/apps/nextjs/src/components/access/group-select-modal.tsx index 62b37ab0f..ba0befb21 100644 --- a/apps/nextjs/src/components/access/group-select-modal.tsx +++ b/apps/nextjs/src/components/access/group-select-modal.tsx @@ -2,13 +2,15 @@ import { useState } from "react"; import { Button, Group, Loader, Select, Stack } from "@mantine/core"; import { clientApi } from "@homarr/api/client"; +import type { GroupPermissionKey } from "@homarr/definitions"; import { useForm } from "@homarr/form"; import { createModal } from "@homarr/modals"; import { useI18n } from "@homarr/translation/client"; interface InnerProps { + withPermissions?: boolean; presentGroupIds: string[]; - onSelect: (props: { id: string; name: string }) => void | Promise; + onSelect: (props: { id: string; name: string; permissions?: GroupPermissionKey[] }) => void | Promise; confirmLabel?: string; } @@ -18,7 +20,9 @@ interface GroupSelectFormType { export const GroupSelectModal = createModal(({ actions, innerProps }) => { const t = useI18n(); - const { data: groups, isPending } = clientApi.group.selectable.useQuery(); + const { data: groups, isPending } = clientApi.group.selectable.useQuery({ + withPermissions: innerProps.withPermissions, + }); const [loading, setLoading] = useState(false); const form = useForm(); const handleSubmitAsync = async (values: GroupSelectFormType) => { @@ -28,6 +32,7 @@ export const GroupSelectModal = createModal(({ actions, innerProps } await innerProps.onSelect({ id: currentGroup.id, name: currentGroup.name, + permissions: "permissions" in currentGroup ? (currentGroup.permissions as GroupPermissionKey[]) : undefined, }); setLoading(false); diff --git a/packages/api/src/router/group.ts b/packages/api/src/router/group.ts index 366c8d590..83a0f8868 100644 --- a/packages/api/src/router/group.ts +++ b/packages/api/src/router/group.ts @@ -100,14 +100,33 @@ export const groupRouter = createTRPCRouter({ }; }), // Is protected because also used in board access / integration access forms - selectable: protectedProcedure.query(async ({ ctx }) => { - return await ctx.db.query.groups.findMany({ - columns: { - id: true, - name: true, - }, - }); - }), + selectable: protectedProcedure + .input(z.object({ withPermissions: z.boolean().default(false) }).optional()) + .query(async ({ ctx, input }) => { + const withPermissions = input?.withPermissions && ctx.session.user.permissions.includes("admin"); + + if (!withPermissions) { + return await ctx.db.query.groups.findMany({ + columns: { + id: true, + name: true, + }, + }); + } + + const groups = await ctx.db.query.groups.findMany({ + columns: { + id: true, + name: true, + }, + with: { permissions: { columns: { permission: true } } }, + }); + + return groups.map((group) => ({ + ...group, + permissions: group.permissions.map((permission) => permission.permission), + })); + }), search: permissionRequiredProcedure .requiresPermission("admin") .input( diff --git a/packages/api/src/router/user.ts b/packages/api/src/router/user.ts index 805140540..be6f1abe7 100644 --- a/packages/api/src/router/user.ts +++ b/packages/api/src/router/user.ts @@ -78,7 +78,11 @@ export const userRouter = createTRPCRouter({ throwIfCredentialsDisabled(); await checkUsernameAlreadyTakenAndThrowAsync(ctx.db, "credentials", input.username); - await createUserAsync(ctx.db, input); + const userId = await createUserAsync(ctx.db, input); + + if (input.groupIds.length >= 1) { + await ctx.db.insert(groupMembers).values(input.groupIds.map((groupId) => ({ groupId, userId }))); + } }), setProfileImage: protectedProcedure .input( @@ -459,7 +463,7 @@ export const userRouter = createTRPCRouter({ }), }); -const createUserAsync = async (db: Database, input: z.infer) => { +const createUserAsync = async (db: Database, input: z.infer) => { const salt = await createSaltAsync(); const hashedPassword = await hashPasswordAsync(input.password, salt); diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index c50a77c28..d09867d96 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1943,9 +1943,10 @@ "security": { "label": "Security" }, - "permissions": { - "label": "Permissions", - "description": "Coming soon" + "groups": { + "label": "Groups", + "title": "Select all groups user should be member of", + "description": "The {everyoneGroup} group is assigned to all users and can not be removed." }, "review": { "label": "Review" diff --git a/packages/validation/src/user.ts b/packages/validation/src/user.ts index 65bac9500..629f15ec4 100644 --- a/packages/validation/src/user.ts +++ b/packages/validation/src/user.ts @@ -49,7 +49,7 @@ const confirmPasswordRefine = [ // eslint-disable-next-line @typescript-eslint/no-explicit-any ] satisfies [(args: any) => boolean, unknown]; -const createUserSchema = z +const baseCreateUserSchema = z .object({ username: usernameSchema, password: passwordSchema, @@ -58,7 +58,9 @@ const createUserSchema = z }) .refine(confirmPasswordRefine[0], confirmPasswordRefine[1]); -const initUserSchema = createUserSchema; +const createUserSchema = baseCreateUserSchema.and(z.object({ groupIds: z.array(z.string()) })); + +const initUserSchema = baseCreateUserSchema; const signInSchema = z.object({ name: z.string().min(1), @@ -124,6 +126,7 @@ export const userSchemas = { registrationApi: registrationSchemaApi, init: initUserSchema, create: createUserSchema, + baseCreate: baseCreateUserSchema, password: passwordSchema, editProfile: editProfileSchema, changePassword: changePasswordSchema, From 38143b679e389633dbd27a2fede866c3696c583c Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 23 Nov 2024 17:19:04 +0100 Subject: [PATCH 07/48] fix: matcher for translation middleware only supports en and de (#1528) --- packages/translation/src/middleware.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/translation/src/middleware.ts b/packages/translation/src/middleware.ts index fd8948b10..4c41325ee 100644 --- a/packages/translation/src/middleware.ts +++ b/packages/translation/src/middleware.ts @@ -1,6 +1,7 @@ import createMiddleware from "next-intl/middleware"; import type { SupportedLanguage } from "."; +import { supportedLanguages } from "./config"; import { createRouting } from "./routing"; export const createI18nMiddleware = (defaultLocale: SupportedLanguage) => @@ -8,5 +9,5 @@ export const createI18nMiddleware = (defaultLocale: SupportedLanguage) => export const config = { // Match only internationalized pathnames - matcher: ["/", "/(de|en)/:path*"], + matcher: ["/", `/(${supportedLanguages.join("|")})/:path*`], }; From 9fb14df2103db720cb6e5333b8afed5c1e730de6 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 23 Nov 2024 17:19:46 +0100 Subject: [PATCH 08/48] feat: replace home page with home board (#1530) --- .../src/app/[locale]/(home-board)/layout.tsx | 5 +++++ apps/nextjs/src/app/[locale]/(home-board)/page.tsx | 7 +++++++ apps/nextjs/src/app/[locale]/(main)/layout.tsx | 14 -------------- apps/nextjs/src/app/[locale]/(main)/page.tsx | 9 --------- 4 files changed, 12 insertions(+), 23 deletions(-) create mode 100644 apps/nextjs/src/app/[locale]/(home-board)/layout.tsx create mode 100644 apps/nextjs/src/app/[locale]/(home-board)/page.tsx delete mode 100644 apps/nextjs/src/app/[locale]/(main)/layout.tsx delete mode 100644 apps/nextjs/src/app/[locale]/(main)/page.tsx diff --git a/apps/nextjs/src/app/[locale]/(home-board)/layout.tsx b/apps/nextjs/src/app/[locale]/(home-board)/layout.tsx new file mode 100644 index 000000000..9b69474ba --- /dev/null +++ b/apps/nextjs/src/app/[locale]/(home-board)/layout.tsx @@ -0,0 +1,5 @@ +import definition from "../boards/(content)/(home)/_definition"; + +const { layout } = definition; + +export default layout; diff --git a/apps/nextjs/src/app/[locale]/(home-board)/page.tsx b/apps/nextjs/src/app/[locale]/(home-board)/page.tsx new file mode 100644 index 000000000..7554444e5 --- /dev/null +++ b/apps/nextjs/src/app/[locale]/(home-board)/page.tsx @@ -0,0 +1,7 @@ +import definition from "../boards/(content)/(home)/_definition"; + +const { generateMetadataAsync: generateMetadata, page } = definition; + +export default page; + +export { generateMetadata }; diff --git a/apps/nextjs/src/app/[locale]/(main)/layout.tsx b/apps/nextjs/src/app/[locale]/(main)/layout.tsx deleted file mode 100644 index ba273b157..000000000 --- a/apps/nextjs/src/app/[locale]/(main)/layout.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import type { PropsWithChildren } from "react"; -import { AppShellMain } from "@mantine/core"; - -import { MainHeader } from "~/components/layout/header"; -import { ClientShell } from "~/components/layout/shell"; - -export default function MainLayout({ children }: PropsWithChildren) { - return ( - - - {children} - - ); -} diff --git a/apps/nextjs/src/app/[locale]/(main)/page.tsx b/apps/nextjs/src/app/[locale]/(main)/page.tsx deleted file mode 100644 index 26c718534..000000000 --- a/apps/nextjs/src/app/[locale]/(main)/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { Stack, Title } from "@mantine/core"; - -export default function HomePage() { - return ( - - Home - - ); -} From 4a94d602c0cce7796cde7c08a5670e045452c2c5 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 23 Nov 2024 17:43:28 +0100 Subject: [PATCH 09/48] fix: auth broken cause of consistent table column rename (#1532) --- packages/auth/adapter.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/auth/adapter.ts b/packages/auth/adapter.ts index 71b4ed176..69876b1f4 100644 --- a/packages/auth/adapter.ts +++ b/packages/auth/adapter.ts @@ -3,11 +3,11 @@ import { DrizzleAdapter } from "@auth/drizzle-adapter"; import type { Database } from "@homarr/db"; import { and, eq } from "@homarr/db"; -import { accounts, users } from "@homarr/db/schema/sqlite"; +import { accounts, sessions, users } from "@homarr/db/schema/sqlite"; import type { SupportedAuthProvider } from "@homarr/definitions"; export const createAdapter = (db: Database, provider: SupportedAuthProvider | "unknown"): Adapter => { - const drizzleAdapter = DrizzleAdapter(db, { usersTable: users, accountsTable: accounts }); + const drizzleAdapter = DrizzleAdapter(db, { usersTable: users, sessionsTable: sessions, accountsTable: accounts }); return { ...drizzleAdapter, From 5a3d9745d985cccca69f9bbfdf0d0ee922de8cbc Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 17:27:37 +0000 Subject: [PATCH 10/48] fix(deps): update dependency @dnd-kit/core to ^6.2.0 (#1534) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 3c45f761e..f4f51315d 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -24,7 +24,7 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@dnd-kit/core": "^6.1.0", + "@dnd-kit/core": "^6.2.0", "@dnd-kit/sortable": "^8.0.0", "@extractus/feed-extractor": "^7.1.3", "@homarr/api": "workspace:^0.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30c230e44..a71f4cc2c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1593,11 +1593,11 @@ importers: packages/widgets: dependencies: '@dnd-kit/core': - specifier: ^6.1.0 - version: 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^6.2.0 + version: 6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dnd-kit/sortable': specifier: ^8.0.0 - version: 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 8.0.0(@dnd-kit/core@6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@extractus/feed-extractor': specifier: ^7.1.3 version: 7.1.3 @@ -2044,13 +2044,13 @@ packages: '@dabh/diagnostics@2.0.3': resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} - '@dnd-kit/accessibility@3.1.0': - resolution: {integrity: sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==} + '@dnd-kit/accessibility@3.1.1': + resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} peerDependencies: react: '>=16.8.0' - '@dnd-kit/core@6.1.0': - resolution: {integrity: sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==} + '@dnd-kit/core@6.2.0': + resolution: {integrity: sha512-KVK/CJmaYGTxTPU6P0+Oy4itgffTUa80B8317sXzfOr1qUzSL29jE7Th11llXiu2haB7B9Glpzo2CDElin+geQ==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -8699,22 +8699,22 @@ snapshots: enabled: 2.0.0 kuler: 2.0.0 - '@dnd-kit/accessibility@3.1.0(react@18.3.1)': + '@dnd-kit/accessibility@3.1.1(react@18.3.1)': dependencies: react: 18.3.1 tslib: 2.7.0 - '@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@dnd-kit/core@6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@dnd-kit/accessibility': 3.1.0(react@18.3.1) + '@dnd-kit/accessibility': 3.1.1(react@18.3.1) '@dnd-kit/utilities': 3.2.2(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.7.0 - '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/core': 6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dnd-kit/utilities': 3.2.2(react@18.3.1) react: 18.3.1 tslib: 2.7.0 From 982ab4393ee04bd2637dd747715ded19def446b8 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 19:39:20 +0100 Subject: [PATCH 11/48] chore(deps): update dependency typescript to ^5.7.2 (#1523) * chore(deps): update dependency typescript to ^5.7.2 * chore(deps): update dependency typescript to ^5.7.2 * fix: typecheck issue * fix: typecheck issue --------- Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> Co-authored-by: Meier Lukas --- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- apps/websocket/package.json | 2 +- package.json | 2 +- packages/analytics/package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- .../auth/providers/credentials/ldap-client.ts | 7 +- 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/form/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/spotlight/package.json | 2 +- packages/translation/package.json | 2 +- packages/ui/package.json | 2 +- packages/validation/package.json | 2 +- packages/widgets/package.json | 2 +- .../widget-sortable-item-list-input.tsx | 6 +- pnpm-lock.yaml | 298 +++++++++--------- tooling/eslint/package.json | 2 +- tooling/prettier/package.json | 2 +- 38 files changed, 191 insertions(+), 190 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index b509de6ea..6003e27fc 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -89,6 +89,6 @@ "eslint": "^9.15.0", "node-loader": "^2.1.0", "prettier": "^3.3.3", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 1871bf767..9eb8691ac 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -49,6 +49,6 @@ "eslint": "^9.15.0", "prettier": "^3.3.3", "tsx": "4.19.2", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/apps/websocket/package.json b/apps/websocket/package.json index b0b192993..4192a96bc 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -36,6 +36,6 @@ "@types/ws": "^8.5.13", "eslint": "^9.15.0", "prettier": "^3.3.3", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/package.json b/package.json index 338be184b..3314953b4 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "prettier": "^3.3.3", "testcontainers": "^10.15.0", "turbo": "^2.3.1", - "typescript": "^5.6.3", + "typescript": "^5.7.2", "vite-tsconfig-paths": "^5.1.3", "vitest": "^2.1.5" }, diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 67cfe4b71..ce37922d3 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -33,6 +33,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/api/package.json b/packages/api/package.json index 04b35ec93..6571ee282 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -52,6 +52,6 @@ "@types/dockerode": "^3.3.32", "eslint": "^9.15.0", "prettier": "^3.3.3", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/auth/package.json b/packages/auth/package.json index e6201a1a2..354e34290 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -47,6 +47,6 @@ "@types/cookies": "0.9.0", "eslint": "^9.15.0", "prettier": "^3.3.3", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/auth/providers/credentials/ldap-client.ts b/packages/auth/providers/credentials/ldap-client.ts index 1c0119322..7c266360f 100644 --- a/packages/auth/providers/credentials/ldap-client.ts +++ b/packages/auth/providers/credentials/ldap-client.ts @@ -59,10 +59,11 @@ export class LdapClient { private static convertEntryPropertyToString(value: Entry[string]) { const firstValue = Array.isArray(value) ? (value[0] ?? "") : value; - if (firstValue instanceof Buffer) { - return firstValue.toString("utf8"); + if (typeof firstValue === "string") { + return firstValue; } - return firstValue; + + return firstValue.toString("utf8"); } /** diff --git a/packages/cli/package.json b/packages/cli/package.json index ebb2b83b4..d0cf7c0d7 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -34,6 +34,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/common/package.json b/packages/common/package.json index b3730fed5..f58a804ad 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -36,6 +36,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/cron-job-runner/package.json b/packages/cron-job-runner/package.json index d26cdbb7a..395398ed4 100644 --- a/packages/cron-job-runner/package.json +++ b/packages/cron-job-runner/package.json @@ -31,6 +31,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/cron-job-status/package.json b/packages/cron-job-status/package.json index c8ececd0b..4ab48da5f 100644 --- a/packages/cron-job-status/package.json +++ b/packages/cron-job-status/package.json @@ -30,6 +30,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/cron-jobs-core/package.json b/packages/cron-jobs-core/package.json index c28c56ca2..4c9a5181b 100644 --- a/packages/cron-jobs-core/package.json +++ b/packages/cron-jobs-core/package.json @@ -33,6 +33,6 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-cron": "^3.0.11", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/cron-jobs/package.json b/packages/cron-jobs/package.json index a23e7cc0e..a271b4770 100644 --- a/packages/cron-jobs/package.json +++ b/packages/cron-jobs/package.json @@ -45,6 +45,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/db/package.json b/packages/db/package.json index 7d38d3422..7803848c1 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -57,6 +57,6 @@ "eslint": "^9.15.0", "prettier": "^3.3.3", "tsx": "4.19.2", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/definitions/package.json b/packages/definitions/package.json index 533a74e75..1eca1df44 100644 --- a/packages/definitions/package.json +++ b/packages/definitions/package.json @@ -30,6 +30,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/form/package.json b/packages/form/package.json index 1ee9292f2..d1cda9483 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -31,6 +31,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/icons/package.json b/packages/icons/package.json index 9e13bcf91..f0af2fabf 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -31,6 +31,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 0005c7e61..1d94d5db6 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -42,6 +42,6 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/xml2js": "^0.4.14", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/log/package.json b/packages/log/package.json index 048bc0dad..75d3db155 100644 --- a/packages/log/package.json +++ b/packages/log/package.json @@ -35,6 +35,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 7de3da9f6..22b859f61 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -41,7 +41,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" }, "prettier": "@homarr/prettier-config" } diff --git a/packages/modals/package.json b/packages/modals/package.json index 8f2ef022e..ac78df086 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -33,6 +33,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/notifications/package.json b/packages/notifications/package.json index f2ddb2e9b..1bef45669 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -32,6 +32,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/old-import/package.json b/packages/old-import/package.json index 08864fada..f59a6f761 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -34,7 +34,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" }, "prettier": "@homarr/prettier-config" } diff --git a/packages/old-schema/package.json b/packages/old-schema/package.json index 16723dd3d..d499627bd 100644 --- a/packages/old-schema/package.json +++ b/packages/old-schema/package.json @@ -28,7 +28,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" }, "prettier": "@homarr/prettier-config" } diff --git a/packages/ping/package.json b/packages/ping/package.json index 1f95751a3..3ba8326b5 100644 --- a/packages/ping/package.json +++ b/packages/ping/package.json @@ -30,6 +30,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/redis/package.json b/packages/redis/package.json index c46058977..c371068cb 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -34,6 +34,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index 13d3abe0b..b905f4a74 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -35,7 +35,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" }, "prettier": "@homarr/prettier-config" } diff --git a/packages/server-settings/package.json b/packages/server-settings/package.json index e9e0ab806..11e80589b 100644 --- a/packages/server-settings/package.json +++ b/packages/server-settings/package.json @@ -30,6 +30,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index b9dc3b208..410931cdb 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -45,7 +45,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" }, "prettier": "@homarr/prettier-config" } diff --git a/packages/translation/package.json b/packages/translation/package.json index 27c2338db..337d06d99 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -41,6 +41,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/ui/package.json b/packages/ui/package.json index 01820d918..fac08bf0a 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -42,7 +42,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/css-modules": "^1.0.5", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" }, "prettier": "@homarr/prettier-config" } diff --git a/packages/validation/package.json b/packages/validation/package.json index 03f5b2b96..9e77dffba 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -34,6 +34,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/widgets/package.json b/packages/widgets/package.json index f4f51315d..81873c308 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -72,6 +72,6 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/video.js": "^7.3.58", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/packages/widgets/src/_inputs/widget-sortable-item-list-input.tsx b/packages/widgets/src/_inputs/widget-sortable-item-list-input.tsx index 9f6c36b78..d765c1d73 100644 --- a/packages/widgets/src/_inputs/widget-sortable-item-list-input.tsx +++ b/packages/widgets/src/_inputs/widget-sortable-item-list-input.tsx @@ -112,7 +112,7 @@ export const WidgetSortedItemListInput = - <> + {values.map((value, index) => { const item = getItem(value); const removeItem = () => { @@ -148,8 +148,8 @@ export const WidgetSortedItemListInput = )} - {error &&
{JSON.stringify(error)}
} - + {error ?
{JSON.stringify(error)}
: null} +
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a71f4cc2c..773f64c5f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,7 +18,7 @@ importers: version: link:tooling/prettier '@turbo/gen': specifier: ^2.3.1 - version: 2.3.1(@types/node@22.9.3)(typescript@5.6.3) + version: 2.3.1(@types/node@22.9.3)(typescript@5.7.2) '@vitejs/plugin-react': specifier: ^4.3.3 version: 4.3.3(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) @@ -44,11 +44,11 @@ importers: specifier: ^2.3.1 version: 2.3.1 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 vite-tsconfig-paths: specifier: ^5.1.3 - version: 5.1.3(typescript@5.6.3)(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: specifier: ^2.1.5 version: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) @@ -141,7 +141,7 @@ importers: version: 1.0.12(rollup@4.21.3)(webpack-sources@3.2.3) '@t3-oss/env-nextjs': specifier: ^0.11.1 - version: 0.11.1(typescript@5.6.3)(zod@3.23.8) + version: 0.11.1(typescript@5.7.2)(zod@3.23.8) '@tabler/icons-react': specifier: ^3.22.0 version: 3.22.0(react@18.3.1) @@ -156,16 +156,16 @@ importers: version: 5.61.0(@tanstack/react-query@5.61.0(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) '@trpc/client': specifier: next - version: 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3) + version: 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + version: 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + version: 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next - version: 11.0.0-rc.643(typescript@5.6.3) + version: 11.0.0-rc.643(typescript@5.7.2) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -273,8 +273,8 @@ importers: specifier: ^3.3.3 version: 3.3.3 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 apps/tasks: dependencies: @@ -361,8 +361,8 @@ importers: specifier: 4.19.2 version: 4.19.2 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 apps/websocket: dependencies: @@ -419,8 +419,8 @@ importers: specifier: ^3.3.3 version: 3.3.3 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/analytics: dependencies: @@ -453,8 +453,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/api: dependencies: @@ -508,13 +508,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3) + version: 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + version: 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next - version: 11.0.0-rc.643(typescript@5.6.3) + version: 11.0.0-rc.643(typescript@5.7.2) dockerode: specifier: ^4.0.2 version: 4.0.2 @@ -529,7 +529,7 @@ importers: version: 2.2.1 trpc-swagger: specifier: ^1.2.6 - version: 1.2.6(patch_hash=6s72z7zx33c52iesv5sewipn6i)(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(zod@3.23.8) + version: 1.2.6(patch_hash=6s72z7zx33c52iesv5sewipn6i)(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(zod@3.23.8) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -550,8 +550,8 @@ importers: specifier: ^3.3.3 version: 3.3.3 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/auth: dependencies: @@ -578,7 +578,7 @@ importers: version: link:../validation '@t3-oss/env-nextjs': specifier: ^0.11.1 - version: 0.11.1(typescript@5.6.3)(zod@3.23.8) + version: 0.11.1(typescript@5.7.2)(zod@3.23.8) bcrypt: specifier: ^5.1.1 version: 5.1.1 @@ -623,8 +623,8 @@ importers: specifier: ^3.3.3 version: 3.3.3 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/cli: dependencies: @@ -657,8 +657,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/common: dependencies: @@ -691,8 +691,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/cron-job-runner: dependencies: @@ -719,8 +719,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/cron-job-status: dependencies: @@ -741,8 +741,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/cron-jobs: dependencies: @@ -811,8 +811,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/cron-jobs-core: dependencies: @@ -839,8 +839,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/db: dependencies: @@ -906,8 +906,8 @@ importers: specifier: 4.19.2 version: 4.19.2 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/definitions: dependencies: @@ -928,8 +928,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/form: dependencies: @@ -956,8 +956,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/icons: dependencies: @@ -984,8 +984,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/integrations: dependencies: @@ -1039,8 +1039,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/log: dependencies: @@ -1067,8 +1067,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/modals: dependencies: @@ -1101,8 +1101,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/modals-collection: dependencies: @@ -1162,8 +1162,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/notifications: dependencies: @@ -1190,8 +1190,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/old-import: dependencies: @@ -1230,8 +1230,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/old-schema: dependencies: @@ -1252,8 +1252,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/ping: dependencies: @@ -1277,8 +1277,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/redis: dependencies: @@ -1314,8 +1314,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/request-handler: dependencies: @@ -1357,8 +1357,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/server-settings: dependencies: @@ -1382,8 +1382,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/spotlight: dependencies: @@ -1452,8 +1452,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/translation: dependencies: @@ -1495,8 +1495,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/ui: dependencies: @@ -1553,8 +1553,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/validation: dependencies: @@ -1587,8 +1587,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages/widgets: dependencies: @@ -1732,8 +1732,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 tooling/eslint: dependencies: @@ -1748,7 +1748,7 @@ importers: version: 2.3.1(eslint@9.15.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0) + version: 2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.15.0) @@ -1760,7 +1760,7 @@ importers: version: 5.0.0(eslint@9.15.0) typescript-eslint: specifier: ^8.15.0 - version: 8.15.0(eslint@9.15.0)(typescript@5.6.3) + version: 8.15.0(eslint@9.15.0)(typescript@5.7.2) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -1772,8 +1772,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 tooling/github: {} @@ -1790,8 +1790,8 @@ importers: specifier: workspace:^0.1.0 version: link:../typescript typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 tooling/semver: {} @@ -7864,8 +7864,8 @@ packages: typescript: optional: true - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} engines: {node: '>=14.17'} hasBin: true @@ -9945,18 +9945,18 @@ snapshots: '@swc/counter': 0.1.3 tslib: 2.7.0 - '@t3-oss/env-core@0.11.1(typescript@5.6.3)(zod@3.23.8)': + '@t3-oss/env-core@0.11.1(typescript@5.7.2)(zod@3.23.8)': dependencies: zod: 3.23.8 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 - '@t3-oss/env-nextjs@0.11.1(typescript@5.6.3)(zod@3.23.8)': + '@t3-oss/env-nextjs@0.11.1(typescript@5.7.2)(zod@3.23.8)': dependencies: - '@t3-oss/env-core': 0.11.1(typescript@5.6.3)(zod@3.23.8) + '@t3-oss/env-core': 0.11.1(typescript@5.7.2)(zod@3.23.8) zod: 3.23.8 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 '@tabler/icons-react@3.22.0(react@18.3.1)': dependencies: @@ -10221,35 +10221,35 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3)': + '@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2)': dependencies: - '@trpc/server': 11.0.0-rc.643(typescript@5.6.3) - typescript: 5.6.3 + '@trpc/server': 11.0.0-rc.643(typescript@5.7.2) + typescript: 5.7.2 - '@trpc/next@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@trpc/next@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: - '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3) - '@trpc/server': 11.0.0-rc.643(typescript@5.6.3) + '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.643(typescript@5.7.2) next: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - typescript: 5.6.3 + typescript: 5.7.2 optionalDependencies: '@tanstack/react-query': 5.61.0(react@18.3.1) - '@trpc/react-query': 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@trpc/react-query': 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: '@tanstack/react-query': 5.61.0(react@18.3.1) - '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3) - '@trpc/server': 11.0.0-rc.643(typescript@5.6.3) + '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.643(typescript@5.7.2) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - typescript: 5.6.3 + typescript: 5.7.2 - '@trpc/server@11.0.0-rc.643(typescript@5.6.3)': + '@trpc/server@11.0.0-rc.643(typescript@5.7.2)': dependencies: - typescript: 5.6.3 + typescript: 5.7.2 '@tsconfig/node10@1.0.11': {} @@ -10261,7 +10261,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.3.1(@types/node@22.9.3)(typescript@5.6.3)': + '@turbo/gen@2.3.1(@types/node@22.9.3)(typescript@5.7.2)': dependencies: '@turbo/workspaces': 2.3.1 commander: 10.0.1 @@ -10271,7 +10271,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.4.0 - ts-node: 10.9.2(@types/node@22.9.3)(typescript@5.6.3) + ts-node: 10.9.2(@types/node@22.9.3)(typescript@5.7.2) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -10500,34 +10500,34 @@ snapshots: dependencies: '@types/node': 22.9.3 - '@typescript-eslint/eslint-plugin@8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0)(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.15.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/parser': 8.15.0(eslint@9.15.0)(typescript@5.7.2) '@typescript-eslint/scope-manager': 8.15.0 - '@typescript-eslint/type-utils': 8.15.0(eslint@9.15.0)(typescript@5.6.3) - '@typescript-eslint/utils': 8.15.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/type-utils': 8.15.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.15.0(eslint@9.15.0)(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.15.0 eslint: 9.15.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.6.3) + ts-api-utils: 1.3.0(typescript@5.7.2) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.6.3)': + '@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2)': dependencies: '@typescript-eslint/scope-manager': 8.15.0 '@typescript-eslint/types': 8.15.0 - '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.15.0 debug: 4.3.7 eslint: 9.15.0 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -10536,21 +10536,21 @@ snapshots: '@typescript-eslint/types': 8.15.0 '@typescript-eslint/visitor-keys': 8.15.0 - '@typescript-eslint/type-utils@8.15.0(eslint@9.15.0)(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.15.0(eslint@9.15.0)(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.15.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.15.0(eslint@9.15.0)(typescript@5.7.2) debug: 4.3.7 eslint: 9.15.0 - ts-api-utils: 1.3.0(typescript@5.6.3) + ts-api-utils: 1.3.0(typescript@5.7.2) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.15.0': {} - '@typescript-eslint/typescript-estree@8.15.0(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.15.0(typescript@5.7.2)': dependencies: '@typescript-eslint/types': 8.15.0 '@typescript-eslint/visitor-keys': 8.15.0 @@ -10559,21 +10559,21 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.3) + ts-api-utils: 1.3.0(typescript@5.7.2) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.15.0(eslint@9.15.0)(typescript@5.6.3)': + '@typescript-eslint/utils@8.15.0(eslint@9.15.0)(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.15.0) '@typescript-eslint/scope-manager': 8.15.0 '@typescript-eslint/types': 8.15.0 - '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.7.2) eslint: 9.15.0 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -11975,17 +11975,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@9.15.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.15.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.15.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/parser': 8.15.0(eslint@9.15.0)(typescript@5.7.2) eslint: 9.15.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -11996,7 +11996,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.15.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@9.15.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.15.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -12008,7 +12008,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.15.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/parser': 8.15.0(eslint@9.15.0)(typescript@5.7.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14863,10 +14863,10 @@ snapshots: triple-beam@1.4.1: {} - trpc-swagger@1.2.6(patch_hash=6s72z7zx33c52iesv5sewipn6i)(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3))(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(zod@3.23.8): + trpc-swagger@1.2.6(patch_hash=6s72z7zx33c52iesv5sewipn6i)(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(zod@3.23.8): dependencies: - '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.6.3))(typescript@5.6.3) - '@trpc/server': 11.0.0-rc.643(typescript@5.6.3) + '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.643(typescript@5.7.2) chalk-scripts: 1.2.8 co-body: 6.2.0 lodash.clonedeep: 4.5.0 @@ -14875,13 +14875,13 @@ snapshots: zod: 3.23.8 zod-to-json-schema: 3.23.3(zod@3.23.8) - ts-api-utils@1.3.0(typescript@5.6.3): + ts-api-utils@1.3.0(typescript@5.7.2): dependencies: - typescript: 5.6.3 + typescript: 5.7.2 ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.9.3)(typescript@5.6.3): + ts-node@10.9.2(@types/node@22.9.3)(typescript@5.7.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -14895,15 +14895,15 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.6.3 + typescript: 5.7.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 ts-toolbelt@9.6.0: {} - tsconfck@3.1.3(typescript@5.6.3): + tsconfck@3.1.3(typescript@5.7.2): optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 tsconfig-paths@3.15.0: dependencies: @@ -15013,18 +15013,18 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.15.0(eslint@9.15.0)(typescript@5.6.3): + typescript-eslint@8.15.0(eslint@9.15.0)(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0)(typescript@5.6.3) - '@typescript-eslint/parser': 8.15.0(eslint@9.15.0)(typescript@5.6.3) - '@typescript-eslint/utils': 8.15.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.15.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.15.0(eslint@9.15.0)(typescript@5.7.2) eslint: 9.15.0 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color - typescript@5.6.3: {} + typescript@5.7.2: {} uc.micro@2.1.0: {} @@ -15228,11 +15228,11 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.3(typescript@5.6.3)(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): + vite-tsconfig-paths@5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 - tsconfck: 3.1.3(typescript@5.6.3) + tsconfck: 3.1.3(typescript@5.7.2) optionalDependencies: vite: 5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index ce54975b8..6f4c8082e 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -29,7 +29,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.15.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" }, "prettier": "@homarr/prettier-config" } diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json index 92af0de78..dfec1f530 100644 --- a/tooling/prettier/package.json +++ b/tooling/prettier/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@homarr/tsconfig": "workspace:^0.1.0", - "typescript": "^5.6.3" + "typescript": "^5.7.2" }, "prettier": "@homarr/prettier-config" } From d76b4d0ec185b627eee5e000ca16b78899c950a7 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Sat, 23 Nov 2024 22:05:44 +0100 Subject: [PATCH 12/48] feat: #1243 add api routes (#1286) --- .../tools/api/components/swagger-ui.tsx | 4 +- .../_components/_delete-user-button.tsx | 4 +- .../_components/_first-day-of-week.tsx | 3 +- apps/nextjs/src/app/api/[...trpc]/route.ts | 2 +- package.json | 5 - packages/api/package.json | 2 +- packages/api/src/open-api.ts | 2 +- packages/api/src/router/app.ts | 52 +- packages/api/src/router/invite.ts | 47 +- packages/api/src/router/test/user.spec.ts | 2 +- packages/api/src/router/user.ts | 405 ++-- packages/api/src/schema-merger.ts | 22 + packages/api/src/trpc.ts | 2 +- packages/db/package.json | 4 +- packages/db/validationSchemas.ts | 11 + patches/trpc-swagger@1.2.6.patch | 2152 ----------------- pnpm-lock.yaml | 199 +- 17 files changed, 447 insertions(+), 2471 deletions(-) create mode 100644 packages/api/src/schema-merger.ts create mode 100644 packages/db/validationSchemas.ts delete mode 100644 patches/trpc-swagger@1.2.6.patch diff --git a/apps/nextjs/src/app/[locale]/manage/tools/api/components/swagger-ui.tsx b/apps/nextjs/src/app/[locale]/manage/tools/api/components/swagger-ui.tsx index 476a37c5a..1f0073df6 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/api/components/swagger-ui.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/api/components/swagger-ui.tsx @@ -1,6 +1,6 @@ "use client"; -import type { OpenAPIV3 } from "openapi-types"; +import type { OpenAPIObject } from "openapi3-ts/oas31"; import SwaggerUI from "swagger-ui-react"; // workaround for CSS that cannot be processed by next.js, https://github.com/swagger-api/swagger-ui/issues/10045 @@ -9,7 +9,7 @@ import "../swagger-ui-overrides.css"; import "../swagger-ui.css"; interface SwaggerUIClientProps { - document: OpenAPIV3.Document; + document: OpenAPIObject; } export const SwaggerUIClient = ({ document }: SwaggerUIClientProps) => { diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_delete-user-button.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_delete-user-button.tsx index 7ca9f64d6..ebaf1b0cb 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_delete-user-button.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_delete-user-button.tsx @@ -31,7 +31,9 @@ export const DeleteUserButton = ({ user }: DeleteUserButtonProps) => { children: t("user.action.delete.confirm", { username: user.name }), // eslint-disable-next-line no-restricted-syntax async onConfirm() { - await mutateUserDeletionAsync(user.id); + await mutateUserDeletionAsync({ + userId: user.id, + }); }, }), [user, mutateUserDeletionAsync, openConfirmModal, t], diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_first-day-of-week.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_first-day-of-week.tsx index 4c437db4a..43c04c46f 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_first-day-of-week.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_first-day-of-week.tsx @@ -1,6 +1,7 @@ "use client"; import { Button, Group, Radio, Stack } from "@mantine/core"; +import type { DayOfWeek } from "@mantine/dates"; import dayjs from "dayjs"; import localeData from "dayjs/plugin/localeData"; @@ -43,7 +44,7 @@ export const FirstDayOfWeek = ({ user }: FirstDayOfWeekProps) => { }); const form = useZodForm(validation.user.firstDayOfWeek, { initialValues: { - firstDayOfWeek: user.firstDayOfWeek, + firstDayOfWeek: user.firstDayOfWeek as DayOfWeek, }, }); diff --git a/apps/nextjs/src/app/api/[...trpc]/route.ts b/apps/nextjs/src/app/api/[...trpc]/route.ts index 1ac9fb77f..6cf0e899a 100644 --- a/apps/nextjs/src/app/api/[...trpc]/route.ts +++ b/apps/nextjs/src/app/api/[...trpc]/route.ts @@ -1,7 +1,7 @@ import { headers } from "next/headers"; import { userAgent } from "next/server"; import type { NextRequest } from "next/server"; -import { createOpenApiFetchHandler } from "trpc-swagger/build/index.mjs"; +import { createOpenApiFetchHandler } from "trpc-to-openapi"; import { appRouter, createTRPCContext } from "@homarr/api"; import { hashPasswordAsync } from "@homarr/auth"; diff --git a/package.json b/package.json index 3314953b4..6192b562b 100644 --- a/package.json +++ b/package.json @@ -45,10 +45,5 @@ "packageManager": "pnpm@9.14.2", "engines": { "node": ">=22.11.0" - }, - "pnpm": { - "patchedDependencies": { - "trpc-swagger@1.2.6": "patches/trpc-swagger@1.2.6.patch" - } } } diff --git a/packages/api/package.json b/packages/api/package.json index 6571ee282..d4a2f1b10 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -43,7 +43,7 @@ "next": "^14.2.18", "react": "^18.3.1", "superjson": "2.2.1", - "trpc-swagger": "^1.2.6" + "trpc-to-openapi": "^2.0.2" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/api/src/open-api.ts b/packages/api/src/open-api.ts index 02949c882..5620df23a 100644 --- a/packages/api/src/open-api.ts +++ b/packages/api/src/open-api.ts @@ -1,4 +1,4 @@ -import { generateOpenApiDocument } from "trpc-swagger"; +import { generateOpenApiDocument } from "trpc-to-openapi"; import { appRouter } from "./root"; diff --git a/packages/api/src/router/app.ts b/packages/api/src/router/app.ts index 62e3f2674..918559c3a 100644 --- a/packages/api/src/router/app.ts +++ b/packages/api/src/router/app.ts @@ -2,25 +2,17 @@ import { TRPCError } from "@trpc/server"; import { asc, createId, eq, inArray, like } from "@homarr/db"; import { apps } from "@homarr/db/schema/sqlite"; +import { selectAppSchema } from "@homarr/db/validationSchemas"; import { validation, z } from "@homarr/validation"; +import { convertIntersectionToZodObject } from "../schema-merger"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../trpc"; import { canUserSeeAppAsync } from "./app/app-access-control"; export const appRouter = createTRPCRouter({ all: protectedProcedure .input(z.void()) - .output( - z.array( - z.object({ - name: z.string(), - id: z.string(), - description: z.string().nullable(), - iconUrl: z.string(), - href: z.string().nullable(), - }), - ), - ) + .output(z.array(selectAppSchema)) .meta({ openapi: { method: "GET", path: "/api/apps", tags: ["apps"], protect: true } }) .query(({ ctx }) => { return ctx.db.query.apps.findMany({ @@ -29,17 +21,7 @@ export const appRouter = createTRPCRouter({ }), search: protectedProcedure .input(z.object({ query: z.string(), limit: z.number().min(1).max(100).default(10) })) - .output( - z.array( - z.object({ - name: z.string(), - id: z.string(), - description: z.string().nullable(), - iconUrl: z.string(), - href: z.string().nullable(), - }), - ), - ) + .output(z.array(selectAppSchema)) .meta({ openapi: { method: "GET", path: "/api/apps/search", tags: ["apps"], protect: true } }) .query(({ ctx, input }) => { return ctx.db.query.apps.findMany({ @@ -50,17 +32,7 @@ export const appRouter = createTRPCRouter({ }), selectable: protectedProcedure .input(z.void()) - .output( - z.array( - z.object({ - name: z.string(), - id: z.string(), - iconUrl: z.string(), - description: z.string().nullable(), - href: z.string().nullable(), - }), - ), - ) + .output(z.array(selectAppSchema.pick({ id: true, name: true, iconUrl: true, href: true, description: true }))) .meta({ openapi: { method: "GET", @@ -83,15 +55,7 @@ export const appRouter = createTRPCRouter({ }), byId: publicProcedure .input(validation.common.byId) - .output( - z.object({ - name: z.string(), - id: z.string(), - description: z.string().nullable(), - iconUrl: z.string(), - href: z.string().nullable(), - }), - ) + .output(selectAppSchema) .meta({ openapi: { method: "GET", path: "/api/apps/{id}", tags: ["apps"], protect: true } }) .query(async ({ ctx, input }) => { const app = await ctx.db.query.apps.findFirst({ @@ -136,7 +100,9 @@ export const appRouter = createTRPCRouter({ }), update: permissionRequiredProcedure .requiresPermission("app-modify-all") - .input(validation.app.edit) + .input(convertIntersectionToZodObject(validation.app.edit)) + .output(z.void()) + .meta({ openapi: { method: "PATCH", path: "/api/apps/{id}", tags: ["apps"], protect: true } }) .mutation(async ({ ctx, input }) => { const app = await ctx.db.query.apps.findFirst({ where: eq(apps.id, input.id), diff --git a/packages/api/src/router/invite.ts b/packages/api/src/router/invite.ts index 9285ea4d2..8599555d3 100644 --- a/packages/api/src/router/invite.ts +++ b/packages/api/src/router/invite.ts @@ -3,36 +3,51 @@ import { TRPCError } from "@trpc/server"; import { asc, createId, eq } from "@homarr/db"; import { invites } from "@homarr/db/schema/sqlite"; +import { selectInviteSchema } from "@homarr/db/validationSchemas"; import { z } from "@homarr/validation"; import { createTRPCRouter, protectedProcedure } from "../trpc"; import { throwIfCredentialsDisabled } from "./invite/checks"; export const inviteRouter = createTRPCRouter({ - getAll: protectedProcedure.query(async ({ ctx }) => { - throwIfCredentialsDisabled(); - const dbInvites = await ctx.db.query.invites.findMany({ - orderBy: asc(invites.expirationDate), - columns: { - token: false, - }, - with: { - creator: { - columns: { + getAll: protectedProcedure + .output( + z.array( + selectInviteSchema + .pick({ id: true, - name: true, + expirationDate: true, + }) + .extend({ creator: z.object({ name: z.string().nullable(), id: z.string() }) }), + ), + ) + .input(z.undefined()) + .meta({ openapi: { method: "GET", path: "/api/invites", tags: ["invites"], protect: true } }) + .query(async ({ ctx }) => { + throwIfCredentialsDisabled(); + return await ctx.db.query.invites.findMany({ + orderBy: asc(invites.expirationDate), + columns: { + token: false, + }, + with: { + creator: { + columns: { + id: true, + name: true, + }, }, }, - }, - }); - return dbInvites; - }), + }); + }), createInvite: protectedProcedure .input( z.object({ expirationDate: z.date(), }), ) + .output(z.object({ id: z.string(), token: z.string() })) + .meta({ openapi: { method: "POST", path: "/api/invites", tags: ["invites"], protect: true } }) .mutation(async ({ ctx, input }) => { throwIfCredentialsDisabled(); const id = createId(); @@ -56,6 +71,8 @@ export const inviteRouter = createTRPCRouter({ id: z.string(), }), ) + .output(z.undefined()) + .meta({ openapi: { method: "DELETE", path: "/api/invites/{id}", tags: ["invites"], protect: true } }) .mutation(async ({ ctx, input }) => { throwIfCredentialsDisabled(); const dbInvite = await ctx.db.query.invites.findFirst({ diff --git a/packages/api/src/router/test/user.spec.ts b/packages/api/src/router/test/user.spec.ts index 1d51afe9f..ce02a5bc6 100644 --- a/packages/api/src/router/test/user.spec.ts +++ b/packages/api/src/router/test/user.spec.ts @@ -316,7 +316,7 @@ describe("delete should delete user", () => { await db.insert(schema.users).values(initialUsers); - await caller.delete(defaultOwnerId); + await caller.delete({ userId: defaultOwnerId }); const usersInDb = await db.select().from(schema.users); expect(usersInDb).toHaveLength(2); diff --git a/packages/api/src/router/user.ts b/packages/api/src/router/user.ts index be6f1abe7..9a17e3caa 100644 --- a/packages/api/src/router/user.ts +++ b/packages/api/src/router/user.ts @@ -4,10 +4,12 @@ import { createSaltAsync, hashPasswordAsync } from "@homarr/auth"; import type { Database } from "@homarr/db"; import { and, createId, eq, like, schema } from "@homarr/db"; import { groupMembers, groupPermissions, groups, invites, users } from "@homarr/db/schema/sqlite"; +import { selectUserSchema } from "@homarr/db/validationSchemas"; import type { SupportedAuthProvider } from "@homarr/definitions"; import { logger } from "@homarr/log"; import { validation, z } from "@homarr/validation"; +import { convertIntersectionToZodObject } from "../schema-merger"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../trpc"; import { throwIfCredentialsDisabled } from "./invite/checks"; @@ -44,31 +46,34 @@ export const userRouter = createTRPCRouter({ userId, }); }), - register: publicProcedure.input(validation.user.registrationApi).mutation(async ({ ctx, input }) => { - throwIfCredentialsDisabled(); - const inviteWhere = and(eq(invites.id, input.inviteId), eq(invites.token, input.token)); - const dbInvite = await ctx.db.query.invites.findFirst({ - columns: { - id: true, - expirationDate: true, - }, - where: inviteWhere, - }); - - if (!dbInvite || dbInvite.expirationDate < new Date()) { - throw new TRPCError({ - code: "FORBIDDEN", - message: "Invalid invite", + register: publicProcedure + .input(validation.user.registrationApi) + .output(z.void()) + .mutation(async ({ ctx, input }) => { + throwIfCredentialsDisabled(); + const inviteWhere = and(eq(invites.id, input.inviteId), eq(invites.token, input.token)); + const dbInvite = await ctx.db.query.invites.findFirst({ + columns: { + id: true, + expirationDate: true, + }, + where: inviteWhere, }); - } - await checkUsernameAlreadyTakenAndThrowAsync(ctx.db, "credentials", input.username); + if (!dbInvite || dbInvite.expirationDate < new Date()) { + throw new TRPCError({ + code: "FORBIDDEN", + message: "Invalid invite", + }); + } - await createUserAsync(ctx.db, input); + await checkUsernameAlreadyTakenAndThrowAsync(ctx.db, "credentials", input.username); - // Delete invite as it's used - await ctx.db.delete(invites).where(inviteWhere); - }), + await createUserAsync(ctx.db, input); + + // Delete invite as it's used + await ctx.db.delete(invites).where(inviteWhere); + }), create: permissionRequiredProcedure .requiresPermission("admin") .meta({ openapi: { method: "POST", path: "/api/users", tags: ["users"], protect: true } }) @@ -85,6 +90,8 @@ export const userRouter = createTRPCRouter({ } }), setProfileImage: protectedProcedure + .output(z.void()) + .meta({ openapi: { method: "PUT", path: "/api/users/profileImage", tags: ["users"], protect: true } }) .input( z.object({ userId: z.string(), @@ -138,17 +145,7 @@ export const userRouter = createTRPCRouter({ getAll: permissionRequiredProcedure .requiresPermission("admin") .input(z.void()) - .output( - z.array( - z.object({ - id: z.string(), - name: z.string().nullable(), - email: z.string().nullable(), - emailVerified: z.date().nullable(), - image: z.string().nullable(), - }), - ), - ) + .output(z.array(selectUserSchema.pick({ id: true, name: true, email: true, emailVerified: true, image: true }))) .meta({ openapi: { method: "GET", path: "/api/users", tags: ["users"], protect: true } }) .query(({ ctx }) => { return ctx.db.query.users.findMany({ @@ -162,15 +159,19 @@ export const userRouter = createTRPCRouter({ }); }), // Is protected because also used in board access / integration access forms - selectable: protectedProcedure.query(({ ctx }) => { - return ctx.db.query.users.findMany({ - columns: { - id: true, - name: true, - image: true, - }, - }); - }), + selectable: protectedProcedure + .input(z.undefined()) + .output(z.array(selectUserSchema.pick({ id: true, name: true, image: true }))) + .meta({ openapi: { method: "GET", path: "/api/users/selectable", tags: ["users"], protect: true } }) + .query(({ ctx }) => { + return ctx.db.query.users.findMany({ + columns: { + id: true, + name: true, + image: true, + }, + }); + }), search: permissionRequiredProcedure .requiresPermission("admin") .input( @@ -179,6 +180,8 @@ export const userRouter = createTRPCRouter({ limit: z.number().min(1).max(100).default(10), }), ) + .output(z.array(selectUserSchema.pick({ id: true, name: true, image: true }))) + .meta({ openapi: { method: "POST", path: "/api/users/search", tags: ["users"], protect: true } }) .query(async ({ input, ctx }) => { const dbUsers = await ctx.db.query.users.findMany({ columns: { @@ -195,16 +198,10 @@ export const userRouter = createTRPCRouter({ image: user.image, })); }), - getById: protectedProcedure.input(z.object({ userId: z.string() })).query(async ({ input, ctx }) => { - // Only admins can view other users details - if (ctx.session.user.id !== input.userId && !ctx.session.user.permissions.includes("admin")) { - throw new TRPCError({ - code: "FORBIDDEN", - message: "You are not allowed to view other users details", - }); - } - const user = await ctx.db.query.users.findFirst({ - columns: { + getById: protectedProcedure + .input(z.object({ userId: z.string() })) + .output( + selectUserSchema.pick({ id: true, name: true, email: true, @@ -214,134 +211,170 @@ export const userRouter = createTRPCRouter({ homeBoardId: true, firstDayOfWeek: true, pingIconsEnabled: true, - }, - where: eq(users.id, input.userId), - }); - - if (!user) { - throw new TRPCError({ - code: "NOT_FOUND", - message: "User not found", - }); - } - - return user; - }), - editProfile: protectedProcedure.input(validation.user.editProfile).mutation(async ({ input, ctx }) => { - // Only admins can view other users details - if (ctx.session.user.id !== input.id && !ctx.session.user.permissions.includes("admin")) { - throw new TRPCError({ - code: "FORBIDDEN", - message: "You are not allowed to edit other users details", - }); - } - - const user = await ctx.db.query.users.findFirst({ - columns: { email: true, provider: true }, - where: eq(users.id, input.id), - }); - - if (!user) { - throw new TRPCError({ - code: "NOT_FOUND", - message: "User not found", - }); - } - - if (user.provider !== "credentials") { - throw new TRPCError({ - code: "FORBIDDEN", - message: "Username and email can not be changed for users with external providers", - }); - } - - await checkUsernameAlreadyTakenAndThrowAsync(ctx.db, "credentials", input.name, input.id); - - const emailDirty = input.email && user.email !== input.email; - await ctx.db - .update(users) - .set({ - name: input.name, - email: emailDirty === true ? input.email : undefined, - emailVerified: emailDirty === true ? null : undefined, - }) - .where(eq(users.id, input.id)); - }), - delete: protectedProcedure.input(z.string()).mutation(async ({ input, ctx }) => { - // Only admins and user itself can delete a user - if (ctx.session.user.id !== input && !ctx.session.user.permissions.includes("admin")) { - throw new TRPCError({ - code: "FORBIDDEN", - message: "You are not allowed to delete other users", - }); - } - - await ctx.db.delete(users).where(eq(users.id, input)); - }), - changePassword: protectedProcedure.input(validation.user.changePasswordApi).mutation(async ({ ctx, input }) => { - const user = ctx.session.user; - // Only admins can change other users' passwords - if (!user.permissions.includes("admin") && user.id !== input.userId) { - throw new TRPCError({ - code: "NOT_FOUND", - message: "User not found", - }); - } - - const dbUser = await ctx.db.query.users.findFirst({ - columns: { - id: true, - password: true, - salt: true, - provider: true, - }, - where: eq(users.id, input.userId), - }); - - if (!dbUser) { - throw new TRPCError({ - code: "NOT_FOUND", - message: "User not found", - }); - } - - if (dbUser.provider !== "credentials") { - throw new TRPCError({ - code: "FORBIDDEN", - message: "Password can not be changed for users with external providers", - }); - } - - // Admins can change the password of other users without providing the previous password - const isPreviousPasswordRequired = ctx.session.user.id === input.userId; - - logger.info( - `User ${user.id} is changing password for user ${input.userId}, previous password is required: ${isPreviousPasswordRequired}`, - ); - - if (isPreviousPasswordRequired) { - const previousPasswordHash = await hashPasswordAsync(input.previousPassword, dbUser.salt ?? ""); - const isValid = previousPasswordHash === dbUser.password; - - if (!isValid) { + }), + ) + .meta({ openapi: { method: "GET", path: "/api/users/{userId}", tags: ["users"], protect: true } }) + .query(async ({ input, ctx }) => { + // Only admins can view other users details + if (ctx.session.user.id !== input.userId && !ctx.session.user.permissions.includes("admin")) { throw new TRPCError({ code: "FORBIDDEN", - message: "Invalid password", + message: "You are not allowed to view other users details", }); } - } + const user = await ctx.db.query.users.findFirst({ + columns: { + id: true, + name: true, + email: true, + emailVerified: true, + image: true, + provider: true, + homeBoardId: true, + firstDayOfWeek: true, + pingIconsEnabled: true, + }, + where: eq(users.id, input.userId), + }); - const salt = await createSaltAsync(); - const hashedPassword = await hashPasswordAsync(input.password, salt); - await ctx.db - .update(users) - .set({ - password: hashedPassword, - }) - .where(eq(users.id, input.userId)); - }), + if (!user) { + throw new TRPCError({ + code: "NOT_FOUND", + message: "User not found", + }); + } + + return user; + }), + editProfile: protectedProcedure + .input(validation.user.editProfile) + .output(z.void()) + .meta({ openapi: { method: "PUT", path: "/api/users/profile", tags: ["users"], protect: true } }) + .mutation(async ({ input, ctx }) => { + // Only admins can view other users details + if (ctx.session.user.id !== input.id && !ctx.session.user.permissions.includes("admin")) { + throw new TRPCError({ + code: "FORBIDDEN", + message: "You are not allowed to edit other users details", + }); + } + + const user = await ctx.db.query.users.findFirst({ + columns: { email: true, provider: true }, + where: eq(users.id, input.id), + }); + + if (!user) { + throw new TRPCError({ + code: "NOT_FOUND", + message: "User not found", + }); + } + + if (user.provider !== "credentials") { + throw new TRPCError({ + code: "FORBIDDEN", + message: "Username and email can not be changed for users with external providers", + }); + } + + await checkUsernameAlreadyTakenAndThrowAsync(ctx.db, "credentials", input.name, input.id); + + const emailDirty = input.email && user.email !== input.email; + await ctx.db + .update(users) + .set({ + name: input.name, + email: emailDirty === true ? input.email : undefined, + emailVerified: emailDirty === true ? null : undefined, + }) + .where(eq(users.id, input.id)); + }), + delete: protectedProcedure + .input(z.object({ userId: z.string() })) + .output(z.void()) + .meta({ openapi: { method: "DELETE", path: "/api/users/{userId}", tags: ["users"], protect: true } }) + .mutation(async ({ input, ctx }) => { + // Only admins and user itself can delete a user + if (ctx.session.user.id !== input.userId && !ctx.session.user.permissions.includes("admin")) { + throw new TRPCError({ + code: "FORBIDDEN", + message: "You are not allowed to delete other users", + }); + } + + await ctx.db.delete(users).where(eq(users.id, input.userId)); + }), + changePassword: protectedProcedure + .input(validation.user.changePasswordApi) + .output(z.void()) + .meta({ openapi: { method: "PATCH", path: "/api/users/{userId}/changePassword", tags: ["users"], protect: true } }) + .mutation(async ({ ctx, input }) => { + const user = ctx.session.user; + // Only admins can change other users' passwords + if (!user.permissions.includes("admin") && user.id !== input.userId) { + throw new TRPCError({ + code: "NOT_FOUND", + message: "User not found", + }); + } + + const dbUser = await ctx.db.query.users.findFirst({ + columns: { + id: true, + password: true, + salt: true, + provider: true, + }, + where: eq(users.id, input.userId), + }); + + if (!dbUser) { + throw new TRPCError({ + code: "NOT_FOUND", + message: "User not found", + }); + } + + if (dbUser.provider !== "credentials") { + throw new TRPCError({ + code: "FORBIDDEN", + message: "Password can not be changed for users with external providers", + }); + } + + // Admins can change the password of other users without providing the previous password + const isPreviousPasswordRequired = ctx.session.user.id === input.userId; + + logger.info( + `User ${user.id} is changing password for user ${input.userId}, previous password is required: ${isPreviousPasswordRequired}`, + ); + + if (isPreviousPasswordRequired) { + const previousPasswordHash = await hashPasswordAsync(input.previousPassword, dbUser.salt ?? ""); + const isValid = previousPasswordHash === dbUser.password; + + if (!isValid) { + throw new TRPCError({ + code: "FORBIDDEN", + message: "Invalid password", + }); + } + } + + const salt = await createSaltAsync(); + const hashedPassword = await hashPasswordAsync(input.password, salt); + await ctx.db + .update(users) + .set({ + password: hashedPassword, + }) + .where(eq(users.id, input.userId)); + }), changeHomeBoardId: protectedProcedure - .input(validation.user.changeHomeBoard.and(z.object({ userId: z.string() }))) + .input(convertIntersectionToZodObject(validation.user.changeHomeBoard.and(z.object({ userId: z.string() })))) + .output(z.void()) + .meta({ openapi: { method: "PATCH", path: "/api/users/changeHome", tags: ["users"], protect: true } }) .mutation(async ({ input, ctx }) => { const user = ctx.session.user; // Only admins can change other users passwords @@ -373,14 +406,18 @@ export const userRouter = createTRPCRouter({ }) .where(eq(users.id, input.userId)); }), - changeColorScheme: protectedProcedure.input(validation.user.changeColorScheme).mutation(async ({ input, ctx }) => { - await ctx.db - .update(users) - .set({ - colorScheme: input.colorScheme, - }) - .where(eq(users.id, ctx.session.user.id)); - }), + changeColorScheme: protectedProcedure + .input(validation.user.changeColorScheme) + .output(z.void()) + .meta({ openapi: { method: "PATCH", path: "/api/users/changeScheme", tags: ["users"], protect: true } }) + .mutation(async ({ input, ctx }) => { + await ctx.db + .update(users) + .set({ + colorScheme: input.colorScheme, + }) + .where(eq(users.id, ctx.session.user.id)); + }), getPingIconsEnabledOrDefault: publicProcedure.query(async ({ ctx }) => { if (!ctx.session?.user) { return false; @@ -414,7 +451,7 @@ export const userRouter = createTRPCRouter({ }) .where(eq(users.id, ctx.session.user.id)); }), - getFirstDayOfWeekForUserOrDefault: publicProcedure.query(async ({ ctx }) => { + getFirstDayOfWeekForUserOrDefault: publicProcedure.input(z.undefined()).query(async ({ ctx }) => { if (!ctx.session?.user) { return 1 as const; } @@ -430,7 +467,9 @@ export const userRouter = createTRPCRouter({ return user?.firstDayOfWeek ?? (1 as const); }), changeFirstDayOfWeek: protectedProcedure - .input(validation.user.firstDayOfWeek.and(validation.common.byId)) + .input(convertIntersectionToZodObject(validation.user.firstDayOfWeek.and(validation.common.byId))) + .output(z.void()) + .meta({ openapi: { method: "PATCH", path: "/api/users/firstDayOfWeek", tags: ["users"], protect: true } }) .mutation(async ({ input, ctx }) => { // Only admins can change other users first day of week if (!ctx.session.user.permissions.includes("admin") && ctx.session.user.id !== input.id) { diff --git a/packages/api/src/schema-merger.ts b/packages/api/src/schema-merger.ts new file mode 100644 index 000000000..7043e908a --- /dev/null +++ b/packages/api/src/schema-merger.ts @@ -0,0 +1,22 @@ +import type { AnyZodObject, ZodIntersection, ZodObject } from "@homarr/validation"; +import { z } from "@homarr/validation"; + +export function convertIntersectionToZodObject>( + intersection: TIntersection, +) { + const { _def } = intersection; + + // Merge the shapes + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const mergedShape = { ..._def.left.shape, ..._def.right.shape }; + + // Return a new ZodObject + return z.object(mergedShape) as unknown as TIntersection extends ZodIntersection + ? TLeft extends AnyZodObject + ? TRight extends AnyZodObject + ? // eslint-disable-next-line @typescript-eslint/no-explicit-any + ZodObject & z.infer> + : never + : never + : never; +} diff --git a/packages/api/src/trpc.ts b/packages/api/src/trpc.ts index d70a8e0be..aec73eaf1 100644 --- a/packages/api/src/trpc.ts +++ b/packages/api/src/trpc.ts @@ -8,7 +8,7 @@ */ import { initTRPC, TRPCError } from "@trpc/server"; import superjson from "superjson"; -import type { OpenApiMeta } from "trpc-swagger"; +import type { OpenApiMeta } from "trpc-to-openapi"; import type { Session } from "@homarr/auth"; import { FlattenError } from "@homarr/common"; diff --git a/packages/db/package.json b/packages/db/package.json index 7803848c1..8e1c456a8 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -9,7 +9,8 @@ "./client": "./client.ts", "./schema/sqlite": "./schema/sqlite.ts", "./test": "./test/index.ts", - "./queries": "./queries/index.ts" + "./queries": "./queries/index.ts", + "./validationSchemas": "./validationSchemas.ts" }, "main": "./index.ts", "types": "./index.ts", @@ -46,6 +47,7 @@ "dotenv": "^16.4.5", "drizzle-kit": "^0.28.1", "drizzle-orm": "^0.36.4", + "drizzle-zod": "^0.5.1", "mysql2": "3.11.4" }, "devDependencies": { diff --git a/packages/db/validationSchemas.ts b/packages/db/validationSchemas.ts new file mode 100644 index 000000000..584fdfa6f --- /dev/null +++ b/packages/db/validationSchemas.ts @@ -0,0 +1,11 @@ +import { createSelectSchema } from "drizzle-zod"; + +import { apps, boards, groups, invites, searchEngines, serverSettings, users } from "./schema/sqlite"; + +export const selectAppSchema = createSelectSchema(apps); +export const selectBoardSchema = createSelectSchema(boards); +export const selectGroupSchema = createSelectSchema(groups); +export const selectInviteSchema = createSelectSchema(invites); +export const selectSearchEnginesSchema = createSelectSchema(searchEngines); +export const selectSeverSettingsSchema = createSelectSchema(serverSettings); +export const selectUserSchema = createSelectSchema(users); diff --git a/patches/trpc-swagger@1.2.6.patch b/patches/trpc-swagger@1.2.6.patch deleted file mode 100644 index c1b026bba..000000000 --- a/patches/trpc-swagger@1.2.6.patch +++ /dev/null @@ -1,2152 +0,0 @@ -diff --git a/build/index.js b/build/index.js -index f35a9c8bdec56b61b7ecb25e9e5ff03ccf7e956c..ad4e395f73e02671f1d099c289067dcee1914b12 100644 ---- a/build/index.js -+++ b/build/index.js -@@ -1,8 +1,40 @@ --"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// packages/adapters/aws-lambda.ts --var _server = require('@trpc/server'); --var _awslambda = require('@trpc/server/adapters/aws-lambda'); --var _events = require('events'); --var _nodemockshttp = require('node-mocks-http'); -+"use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); -+function _interopRequireDefault(obj) { -+ return obj && obj.__esModule ? obj : { default: obj }; -+} -+function _nullishCoalesce(lhs, rhsFn) { -+ if (lhs != null) { -+ return lhs; -+ } else { -+ return rhsFn(); -+ } -+} -+function _optionalChain(ops) { -+ let lastAccessLHS = undefined; -+ let value = ops[0]; -+ let i = 1; -+ while (i < ops.length) { -+ const op = ops[i]; -+ const fn = ops[i + 1]; -+ i += 2; -+ if ((op === "optionalAccess" || op === "optionalCall") && value == null) { -+ return undefined; -+ } -+ if (op === "access" || op === "optionalAccess") { -+ lastAccessLHS = value; -+ value = fn(value); -+ } else if (op === "call" || op === "optionalCall") { -+ value = fn((...args) => value.call(lastAccessLHS, ...args)); -+ lastAccessLHS = undefined; -+ } -+ } -+ return value; -+} // packages/adapters/aws-lambda.ts -+var _server = require("@trpc/server"); -+var _awslambda = require("@trpc/server/adapters/aws-lambda"); -+var _events = require("events"); -+var _nodemockshttp = require("node-mocks-http"); - - // packages/adapters/node-http/errors.ts - -@@ -21,7 +53,7 @@ var TRPC_ERROR_CODE_HTTP_STATUS = { - METHOD_NOT_SUPPORTED: 405, - TOO_MANY_REQUESTS: 429, - UNPROCESSABLE_CONTENT: 422, -- NOT_IMPLEMENTED: 500 -+ NOT_IMPLEMENTED: 500, - }; - function getErrorFromUnknown(cause) { - if (cause instanceof Error && cause.name === "TRPCError") { -@@ -36,7 +68,7 @@ function getErrorFromUnknown(cause) { - const error = new (0, _server.TRPCError)({ - message: "Internal server error", - code: "INTERNAL_SERVER_ERROR", -- cause: errorCause -+ cause: errorCause, - }); - if (stack) { - error.stack = stack; -@@ -46,11 +78,12 @@ function getErrorFromUnknown(cause) { - - // packages/adapters/node-http/core.ts - --var _lodashclonedeep = require('lodash.clonedeep'); var _lodashclonedeep2 = _interopRequireDefault(_lodashclonedeep); -+var _lodashclonedeep = require("lodash.clonedeep"); -+var _lodashclonedeep2 = _interopRequireDefault(_lodashclonedeep); - - // packages/generator/paths.ts - --var _openapitypes = require('openapi-types'); -+var _openapitypes = require("openapi-types"); - - // packages/utils/method.ts - var acceptsRequestBody = (method) => { -@@ -70,7 +103,7 @@ var getPathRegExp = (path) => { - }; - - // packages/utils/procedure.ts --var _zod = require('zod'); -+var _zod = require("zod"); - var mergeInputs = (inputParsers) => { - return inputParsers.reduce((acc, inputParser) => { - return acc.merge(inputParser); -@@ -80,21 +113,13 @@ var getInputOutputParsers = (procedure) => { - const { inputs, output } = procedure._def; - return { - inputParser: inputs.length >= 2 ? mergeInputs(inputs) : inputs[0], -- outputParser: output -+ outputParser: output, - }; - }; --var getProcedureType = (procedure) => { -- if (procedure._def.query) -- return "query"; -- if (procedure._def.mutation) -- return "mutation"; -- if (procedure._def.subscription) -- return "subscription"; -- throw new Error("Unknown procedure type"); --}; -+var getProcedureType = (procedure) => procedure._def.type; - var forEachOpenApiProcedure = (procedureRecord, callback) => { - for (const [path, procedure] of Object.entries(procedureRecord)) { -- const { openapi } = _nullishCoalesce(procedure._def.meta, () => ( {})); -+ const { openapi } = _nullishCoalesce(procedure._def.meta, () => ({})); - if (openapi && openapi.enabled !== false) { - const type = getProcedureType(procedure); - callback({ path, type, procedure, openapi }); -@@ -104,16 +129,16 @@ var forEachOpenApiProcedure = (procedureRecord, callback) => { - - // packages/generator/schema.ts - -- --var _zodtojsonschema = require('zod-to-json-schema'); var _zodtojsonschema2 = _interopRequireDefault(_zodtojsonschema); -+var _zodtojsonschema = require("zod-to-json-schema"); -+var _zodtojsonschema2 = _interopRequireDefault(_zodtojsonschema); - - // packages/utils/zod.ts - - var instanceofZodType = (type) => { -- return !!_optionalChain([type, 'optionalAccess', _2 => _2._def, 'optionalAccess', _3 => _3.typeName]); -+ return !!_optionalChain([type, "optionalAccess", (_2) => _2._def, "optionalAccess", (_3) => _3.typeName]); - }; - var instanceofZodTypeKind = (type, zodTypeKind) => { -- return _optionalChain([type, 'optionalAccess', _4 => _4._def, 'optionalAccess', _5 => _5.typeName]) === zodTypeKind; -+ return _optionalChain([type, "optionalAccess", (_4) => _4._def, "optionalAccess", (_5) => _5.typeName]) === zodTypeKind; - }; - var instanceofZodTypeOptional = (type) => { - return instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodOptional); -@@ -122,7 +147,11 @@ var instanceofZodTypeObject = (type) => { - return instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodObject); - }; - var instanceofZodTypeLikeVoid = (type) => { -- return instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodVoid) || instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodUndefined) || instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodNever); -+ return ( -+ instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodVoid) || -+ instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodUndefined) || -+ instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodNever) -+ ); - }; - var unwrapZodType = (type, unwrapPreprocess) => { - if (instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodOptional)) { -@@ -174,7 +203,12 @@ var instanceofZodTypeLikeString = (_type) => { - var zodSupportsCoerce = "coerce" in _zod.z; - var instanceofZodTypeCoercible = (_type) => { - const type = unwrapZodType(_type, false); -- return instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodNumber) || instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodBoolean) || instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodBigInt) || instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodDate); -+ return ( -+ instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodNumber) || -+ instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodBoolean) || -+ instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodBigInt) || -+ instanceofZodTypeKind(type, _zod.z.ZodFirstPartyTypeKind.ZodDate) -+ ); - }; - - // packages/generator/schema.ts -@@ -185,7 +219,7 @@ var getParameterObjects = (schema, pathParameters, inType, example) => { - if (!instanceofZodType(schema)) { - throw new (0, _server.TRPCError)({ - message: "Input parser expects a Zod validator", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const isRequired = !schema.isOptional(); -@@ -196,7 +230,7 @@ var getParameterObjects = (schema, pathParameters, inType, example) => { - if (!instanceofZodTypeObject(unwrappedSchema)) { - throw new (0, _server.TRPCError)({ - message: "Input parser must be a ZodObject", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const { shape } = unwrappedSchema; -@@ -205,63 +239,65 @@ var getParameterObjects = (schema, pathParameters, inType, example) => { - if (!shapeKeys.includes(pathParameter)) { - throw new (0, _server.TRPCError)({ - message: `Input parser expects key from path: "${pathParameter}"`, -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - } -- return shapeKeys.filter((shapeKey) => { -- const isPathParameter = pathParameters.includes(shapeKey); -- if (inType === "path") { -- return isPathParameter; -- } -- if (inType === "query") { -- return !isPathParameter; -- } -- return true; -- }).map((shapeKey) => { -- let shapeSchema = shape[shapeKey]; -- const isShapeRequired = !shapeSchema.isOptional(); -- const isPathParameter = pathParameters.includes(shapeKey); -- if (!instanceofZodTypeLikeString(shapeSchema)) { -- if (zodSupportsCoerce) { -- if (!instanceofZodTypeCoercible(shapeSchema)) { -+ return shapeKeys -+ .filter((shapeKey) => { -+ const isPathParameter = pathParameters.includes(shapeKey); -+ if (inType === "path") { -+ return isPathParameter; -+ } -+ if (inType === "query") { -+ return !isPathParameter; -+ } -+ return true; -+ }) -+ .map((shapeKey) => { -+ let shapeSchema = shape[shapeKey]; -+ const isShapeRequired = !shapeSchema.isOptional(); -+ const isPathParameter = pathParameters.includes(shapeKey); -+ if (!instanceofZodTypeLikeString(shapeSchema)) { -+ if (zodSupportsCoerce) { -+ if (!instanceofZodTypeCoercible(shapeSchema)) { -+ throw new (0, _server.TRPCError)({ -+ message: `Input parser key: "${shapeKey}" must be ZodString, ZodNumber, ZodBoolean, ZodBigInt or ZodDate`, -+ code: "INTERNAL_SERVER_ERROR", -+ }); -+ } -+ } else { - throw new (0, _server.TRPCError)({ -- message: `Input parser key: "${shapeKey}" must be ZodString, ZodNumber, ZodBoolean, ZodBigInt or ZodDate`, -- code: "INTERNAL_SERVER_ERROR" -+ message: `Input parser key: "${shapeKey}" must be ZodString`, -+ code: "INTERNAL_SERVER_ERROR", - }); - } -- } else { -- throw new (0, _server.TRPCError)({ -- message: `Input parser key: "${shapeKey}" must be ZodString`, -- code: "INTERNAL_SERVER_ERROR" -- }); - } -- } -- if (instanceofZodTypeOptional(shapeSchema)) { -- if (isPathParameter) { -- throw new (0, _server.TRPCError)({ -- message: `Path parameter: "${shapeKey}" must not be optional`, -- code: "INTERNAL_SERVER_ERROR" -- }); -+ if (instanceofZodTypeOptional(shapeSchema)) { -+ if (isPathParameter) { -+ throw new (0, _server.TRPCError)({ -+ message: `Path parameter: "${shapeKey}" must not be optional`, -+ code: "INTERNAL_SERVER_ERROR", -+ }); -+ } -+ shapeSchema = shapeSchema.unwrap(); - } -- shapeSchema = shapeSchema.unwrap(); -- } -- const { description, ...openApiSchemaObject } = zodSchemaToOpenApiSchemaObject(shapeSchema); -- return { -- name: shapeKey, -- in: isPathParameter ? "path" : "query", -- required: isPathParameter || isRequired && isShapeRequired, -- schema: openApiSchemaObject, -- description, -- example: _optionalChain([example, 'optionalAccess', _6 => _6[shapeKey]]) -- }; -- }); -+ const { description, ...openApiSchemaObject } = zodSchemaToOpenApiSchemaObject(shapeSchema); -+ return { -+ name: shapeKey, -+ in: isPathParameter ? "path" : "query", -+ required: isPathParameter || (isRequired && isShapeRequired), -+ schema: openApiSchemaObject, -+ description, -+ example: _optionalChain([example, "optionalAccess", (_6) => _6[shapeKey]]), -+ }; -+ }); - }; - var getRequestBodyObject = (schema, pathParameters, contentTypes, example) => { - if (!instanceofZodType(schema)) { - throw new (0, _server.TRPCError)({ - message: "Input parser expects a Zod validator", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const isRequired = !schema.isOptional(); -@@ -272,7 +308,7 @@ var getRequestBodyObject = (schema, pathParameters, contentTypes, example) => { - if (!instanceofZodTypeObject(unwrappedSchema)) { - throw new (0, _server.TRPCError)({ - message: "Input parser must be a ZodObject", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const mask = {}; -@@ -292,12 +328,12 @@ var getRequestBodyObject = (schema, pathParameters, contentTypes, example) => { - for (const contentType of contentTypes) { - content[contentType] = { - schema: openApiSchemaObject, -- example: dedupedExample -+ example: dedupedExample, - }; - } - return { - required: isRequired, -- content -+ content, - }; - }; - var errorResponseObject = { -@@ -308,17 +344,17 @@ var errorResponseObject = { - _zod.z.object({ - message: _zod.z.string(), - code: _zod.z.string(), -- issues: _zod.z.array(_zod.z.object({ message: _zod.z.string() })).optional() -+ issues: _zod.z.array(_zod.z.object({ message: _zod.z.string() })).optional(), - }) -- ) -- } -- } -+ ), -+ }, -+ }, - }; - var getResponsesObject = (schema, example, headers) => { - if (!instanceofZodType(schema)) { - throw new (0, _server.TRPCError)({ - message: "Output parser expects a Zod validator", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const successResponseObject = { -@@ -327,15 +363,15 @@ var getResponsesObject = (schema, example, headers) => { - content: { - "application/json": { - schema: zodSchemaToOpenApiSchemaObject(schema), -- example -- } -- } -+ example, -+ }, -+ }, - }; - return { - 200: successResponseObject, - default: { -- $ref: "#/components/responses/error" -- } -+ $ref: "#/components/responses/error", -+ }, - }; - }; - -@@ -349,31 +385,31 @@ var getOpenApiPathsObject = (appRouter, securitySchemeNames) => { - if (type === "subscription") { - throw new (0, _server.TRPCError)({ - message: "Subscriptions are not supported by OpenAPI v3", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const { method, protect, summary, description, tags, headers } = openapi; - const path = normalizePath(openapi.path); - const pathParameters = getPathParameters(path); -- const headerParameters = _optionalChain([headers, 'optionalAccess', _7 => _7.map, 'call', _8 => _8((header) => ({ ...header, in: "header" }))]) || []; -+ const headerParameters = _optionalChain([headers, "optionalAccess", (_7) => _7.map, "call", (_8) => _8((header) => ({ ...header, in: "header" }))]) || []; - const httpMethod = _openapitypes.OpenAPIV3.HttpMethods[method]; - if (!httpMethod) { - throw new (0, _server.TRPCError)({ - message: "Method must be GET, POST, PATCH, PUT or DELETE", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } -- if (_optionalChain([pathsObject, 'access', _9 => _9[path], 'optionalAccess', _10 => _10[httpMethod]])) { -+ if (_optionalChain([pathsObject, "access", (_9) => _9[path], "optionalAccess", (_10) => _10[httpMethod]])) { - throw new (0, _server.TRPCError)({ - message: `Duplicate procedure defined for route ${method} ${path}`, -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const contentTypes = openapi.contentTypes || ["application/json"]; - if (contentTypes.length === 0) { - throw new (0, _server.TRPCError)({ - message: "At least one content type must be specified", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const { inputParser, outputParser } = getInputOutputParsers(procedure); -@@ -385,37 +421,24 @@ var getOpenApiPathsObject = (appRouter, securitySchemeNames) => { - description, - tags, - security: protect ? securitySchemeNames.map((name) => ({ [name]: [] })) : void 0, -- ...acceptsRequestBody(method) ? { -- requestBody: getRequestBodyObject( -- inputParser, -- pathParameters, -- contentTypes, -- _optionalChain([openapi, 'access', _11 => _11.example, 'optionalAccess', _12 => _12.request]) -- ), -- parameters: [ -- ...headerParameters, -- ...getParameterObjects( -- inputParser, -- pathParameters, -- "path", -- _optionalChain([openapi, 'access', _13 => _13.example, 'optionalAccess', _14 => _14.request]) -- ) || [] -- ] -- } : { -- requestBody: void 0, -- parameters: [ -- ...headerParameters, -- ...getParameterObjects( -- inputParser, -- pathParameters, -- "all", -- _optionalChain([openapi, 'access', _15 => _15.example, 'optionalAccess', _16 => _16.request]) -- ) || [] -- ] -- }, -- responses: getResponsesObject(outputParser, _optionalChain([openapi, 'access', _17 => _17.example, 'optionalAccess', _18 => _18.response]), openapi.responseHeaders), -- ...openapi.deprecated ? { deprecated: openapi.deprecated } : {} -- } -+ ...(acceptsRequestBody(method) -+ ? { -+ requestBody: getRequestBodyObject(inputParser, pathParameters, contentTypes, _optionalChain([openapi, "access", (_11) => _11.example, "optionalAccess", (_12) => _12.request])), -+ parameters: [ -+ ...headerParameters, -+ ...(getParameterObjects(inputParser, pathParameters, "path", _optionalChain([openapi, "access", (_13) => _13.example, "optionalAccess", (_14) => _14.request])) || []), -+ ], -+ } -+ : { -+ requestBody: void 0, -+ parameters: [ -+ ...headerParameters, -+ ...(getParameterObjects(inputParser, pathParameters, "all", _optionalChain([openapi, "access", (_15) => _15.example, "optionalAccess", (_16) => _16.request])) || []), -+ ], -+ }), -+ responses: getResponsesObject(outputParser, _optionalChain([openapi, "access", (_17) => _17.example, "optionalAccess", (_18) => _18.response]), openapi.responseHeaders), -+ ...(openapi.deprecated ? { deprecated: openapi.deprecated } : {}), -+ }, - }; - } catch (error) { - error.message = `[${procedureName}] - ${error.message}`; -@@ -431,36 +454,37 @@ var generateOpenApiDocument = (appRouter, opts) => { - const securitySchemes = opts.securitySchemes || { - Authorization: { - type: "http", -- scheme: "bearer" -- } -+ scheme: "bearer", -+ }, - }; - return { - openapi: openApiVersion, - info: { - title: opts.title, - description: opts.description, -- version: opts.version -+ version: opts.version, - }, - servers: [ - { -- url: opts.baseUrl -- } -+ url: opts.baseUrl, -+ }, - ], - paths: getOpenApiPathsObject(appRouter, Object.keys(securitySchemes)), - components: { - securitySchemes, - responses: { -- error: errorResponseObject -- } -+ error: errorResponseObject, -+ }, - }, -- tags: _optionalChain([opts, 'access', _19 => _19.tags, 'optionalAccess', _20 => _20.map, 'call', _21 => _21((tag) => ({ name: tag }))]), -- externalDocs: opts.docsUrl ? { url: opts.docsUrl } : void 0 -+ tags: _optionalChain([opts, "access", (_19) => _19.tags, "optionalAccess", (_20) => _20.map, "call", (_21) => _21((tag) => ({ name: tag }))]), -+ externalDocs: opts.docsUrl ? { url: opts.docsUrl } : void 0, - }; - }; - - // packages/adapters/node-http/input.ts - --var _cobody = require('co-body'); var _cobody2 = _interopRequireDefault(_cobody); -+var _cobody = require("co-body"); -+var _cobody2 = _interopRequireDefault(_cobody); - var getQuery = (req, url) => { - const query = {}; - if (!req.query) { -@@ -498,7 +522,7 @@ var getBody = async (req, maxBodySize = BODY_100_KB) => { - const { raw, parsed } = await _cobody2.default.call(void 0, req, { - limit: maxBodySize, - strict: false, -- returnRawBody: true -+ returnRawBody: true, - }); - req.body = raw ? parsed : void 0; - } catch (cause) { -@@ -506,7 +530,7 @@ var getBody = async (req, maxBodySize = BODY_100_KB) => { - throw new (0, _server.TRPCError)({ - message: "Request body too large", - code: "PAYLOAD_TOO_LARGE", -- cause -+ cause, - }); - } - let errorCause; -@@ -516,7 +540,7 @@ var getBody = async (req, maxBodySize = BODY_100_KB) => { - throw new (0, _server.TRPCError)({ - message: "Failed to parse request body", - code: "PARSE_ERROR", -- cause: errorCause -+ cause: errorCause, - }); - } - } -@@ -526,8 +550,7 @@ var getBody = async (req, maxBodySize = BODY_100_KB) => { - // packages/adapters/node-http/procedures.ts - var createProcedureCache = (router) => { - const procedureCache = /* @__PURE__ */ new Map(); -- const { queries, mutations } = router._def; -- forEachOpenApiProcedure(queries, ({ path: queryPath, procedure, openapi }) => { -+ forEachOpenApiProcedure(router._def.procedures, ({ path: queryPath, procedure, openapi }) => { - const { method } = openapi; - if (!procedureCache.has(method)) { - procedureCache.set(method, /* @__PURE__ */ new Map()); -@@ -535,22 +558,9 @@ var createProcedureCache = (router) => { - const path = normalizePath(openapi.path); - const pathRegExp = getPathRegExp(path); - procedureCache.get(method).set(pathRegExp, { -- type: "query", -+ type: procedure._def.type, - path: queryPath, -- procedure -- }); -- }); -- forEachOpenApiProcedure(mutations, ({ path: mutationPath, procedure, openapi }) => { -- const { method } = openapi; -- if (!procedureCache.has(method)) { -- procedureCache.set(method, /* @__PURE__ */ new Map()); -- } -- const path = normalizePath(openapi.path); -- const pathRegExp = getPathRegExp(path); -- procedureCache.get(method).set(pathRegExp, { -- type: "mutation", -- path: mutationPath, -- procedure -+ procedure, - }); - }); - return (method, path) => { -@@ -563,7 +573,7 @@ var createProcedureCache = (router) => { - return void 0; - } - const procedure = procedureMethodCache.get(procedureRegExp); -- const pathInput = _nullishCoalesce(_optionalChain([procedureRegExp, 'access', _22 => _22.exec, 'call', _23 => _23(path), 'optionalAccess', _24 => _24.groups]), () => ( {})); -+ const pathInput = _nullishCoalesce(_optionalChain([procedureRegExp, "access", (_22) => _22.exec, "call", (_23) => _23(path), "optionalAccess", (_24) => _24.groups]), () => ({})); - return { procedure, pathInput }; - }; - }; -@@ -591,7 +601,7 @@ var createOpenApiNodeHttpHandler = (opts) => { - const reqUrl = req.url; - const url = new URL(reqUrl.startsWith("/") ? `http://127.0.0.1${reqUrl}` : reqUrl); - const path = normalizePath(url.pathname); -- const { procedure, pathInput } = _nullishCoalesce(getProcedure(method, path), () => ( {})); -+ const { procedure, pathInput } = _nullishCoalesce(getProcedure(method, path), () => ({})); - let input; - let ctx; - let data; -@@ -606,7 +616,7 @@ var createOpenApiNodeHttpHandler = (opts) => { - } - throw new (0, _server.TRPCError)({ - message: "Not found", -- code: "NOT_FOUND" -+ code: "NOT_FOUND", - }); - } - const useBody = acceptsRequestBody(method); -@@ -614,8 +624,8 @@ var createOpenApiNodeHttpHandler = (opts) => { - const unwrappedSchema = unwrapZodType(schema, true); - if (!instanceofZodTypeLikeVoid(unwrappedSchema)) { - input = { -- ...useBody ? await getBody(req, maxBodySize) : getQuery(req, url), -- ...pathInput -+ ...(useBody ? await getBody(req, maxBodySize) : getQuery(req, url)), -+ ...pathInput, - }; - } - if (zodSupportsCoerce) { -@@ -628,53 +638,76 @@ var createOpenApiNodeHttpHandler = (opts) => { - }); - } - } -- ctx = await _optionalChain([createContext, 'optionalCall', _25 => _25({ req, res })]); -+ ctx = await _optionalChain([createContext, "optionalCall", (_25) => _25({ req, res })]); - const caller = router.createCaller(ctx); - const segments = procedure.path.split("."); - const procedureFn = segments.reduce((acc, curr) => acc[curr], caller); - data = await procedureFn(input); -- const meta = _optionalChain([responseMeta, 'optionalCall', _26 => _26({ -- type: procedure.type, -- paths: [procedure.path], -- ctx, -- data: [data], -- errors: [] -- })]); -- const statusCode = _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _27 => _27.status]), () => ( 200)); -- const headers = _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _28 => _28.headers]), () => ( {})); -+ const meta = _optionalChain([ -+ responseMeta, -+ "optionalCall", -+ (_26) => -+ _26({ -+ type: procedure.type, -+ paths: [procedure.path], -+ ctx, -+ data: [data], -+ errors: [], -+ }), -+ ]); -+ const statusCode = _nullishCoalesce(_optionalChain([meta, "optionalAccess", (_27) => _27.status]), () => 200); -+ const headers = _nullishCoalesce(_optionalChain([meta, "optionalAccess", (_28) => _28.headers]), () => ({})); - const body = data; - sendResponse(statusCode, headers, body); - } catch (cause) { - const error = getErrorFromUnknown(cause); -- _optionalChain([onError, 'optionalCall', _29 => _29({ -+ _optionalChain([ -+ onError, -+ "optionalCall", -+ (_29) => -+ _29({ -+ error, -+ type: _nullishCoalesce(_optionalChain([procedure, "optionalAccess", (_30) => _30.type]), () => "unknown"), -+ path: _optionalChain([procedure, "optionalAccess", (_31) => _31.path]), -+ input, -+ ctx, -+ req, -+ }), -+ ]); -+ const meta = _optionalChain([ -+ responseMeta, -+ "optionalCall", -+ (_32) => -+ _32({ -+ type: _nullishCoalesce(_optionalChain([procedure, "optionalAccess", (_33) => _33.type]), () => "unknown"), -+ paths: _optionalChain([procedure, "optionalAccess", (_34) => _34.path]) ? [_optionalChain([procedure, "optionalAccess", (_35) => _35.path])] : void 0, -+ ctx, -+ data: [data], -+ errors: [error], -+ }), -+ ]); -+ const errorShape = router._def.errorFormatter({ - error, -- type: _nullishCoalesce(_optionalChain([procedure, 'optionalAccess', _30 => _30.type]), () => ( "unknown")), -- path: _optionalChain([procedure, 'optionalAccess', _31 => _31.path]), -+ type: _nullishCoalesce(_optionalChain([procedure, "optionalAccess", (_36) => _36.type]), () => "unknown"), -+ path: _optionalChain([procedure, "optionalAccess", (_37) => _37.path]), - input, - ctx, -- req -- })]); -- const meta = _optionalChain([responseMeta, 'optionalCall', _32 => _32({ -- type: _nullishCoalesce(_optionalChain([procedure, 'optionalAccess', _33 => _33.type]), () => ( "unknown")), -- paths: _optionalChain([procedure, 'optionalAccess', _34 => _34.path]) ? [_optionalChain([procedure, 'optionalAccess', _35 => _35.path])] : void 0, -- ctx, -- data: [data], -- errors: [error] -- })]); -- const errorShape = router.getErrorShape({ -- error, -- type: _nullishCoalesce(_optionalChain([procedure, 'optionalAccess', _36 => _36.type]), () => ( "unknown")), -- path: _optionalChain([procedure, 'optionalAccess', _37 => _37.path]), -- input, -- ctx - }); - const isInputValidationError = error.code === "BAD_REQUEST" && error.cause instanceof Error && error.cause.name === "ZodError"; -- const statusCode = _nullishCoalesce(_nullishCoalesce(_optionalChain([meta, 'optionalAccess', _38 => _38.status]), () => ( TRPC_ERROR_CODE_HTTP_STATUS[error.code])), () => ( 500)); -- const headers = _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _39 => _39.headers]), () => ( {})); -+ const statusCode = _nullishCoalesce( -+ _nullishCoalesce(_optionalChain([meta, "optionalAccess", (_38) => _38.status]), () => TRPC_ERROR_CODE_HTTP_STATUS[error.code]), -+ () => 500 -+ ); -+ const headers = _nullishCoalesce(_optionalChain([meta, "optionalAccess", (_39) => _39.headers]), () => ({})); - const body = { -- message: isInputValidationError ? "Input validation failed" : _nullishCoalesce(_nullishCoalesce(_optionalChain([errorShape, 'optionalAccess', _40 => _40.message]), () => ( error.message)), () => ( "An error occurred")), -+ message: isInputValidationError -+ ? "Input validation failed" -+ : _nullishCoalesce( -+ _nullishCoalesce(_optionalChain([errorShape, "optionalAccess", (_40) => _40.message]), () => error.message), -+ () => "An error occurred" -+ ), - code: error.code, -- issues: isInputValidationError ? error.cause.errors : void 0 -+ issues: isInputValidationError ? error.cause.errors : void 0, - }; - sendResponse(statusCode, headers, body); - } -@@ -693,7 +726,13 @@ var createMockNodeHTTPRequest = (path, event) => { - const url = event.requestContext.domainName ? `https://${event.requestContext.domainName}${path}` : path; - const method = _awslambda.getHTTPMethod.call(void 0, event).toUpperCase(); - let body; -- const contentType = event.headers[_nullishCoalesce(Object.keys(event.headers).find((key) => key.toLowerCase() === "content-type"), () => ( ""))]; -+ const contentType = -+ event.headers[ -+ _nullishCoalesce( -+ Object.keys(event.headers).find((key) => key.toLowerCase() === "content-type"), -+ () => "" -+ ) -+ ]; - if (contentType === "application/json") { - try { - if (event.body) { -@@ -703,7 +742,7 @@ var createMockNodeHTTPRequest = (path, event) => { - throw new (0, _server.TRPCError)({ - message: "Failed to parse request body", - code: "PARSE_ERROR", -- cause -+ cause, - }); - } - } -@@ -721,7 +760,7 @@ var createMockNodeHTTPRequest = (path, event) => { - throw new (0, _server.TRPCError)({ - message: "Failed to parse request body", - code: "PARSE_ERROR", -- cause -+ cause, - }); - } - } -@@ -730,7 +769,7 @@ var createMockNodeHTTPRequest = (path, event) => { - method, - query: event.queryStringParameters || void 0, - headers: event.headers, -- body -+ body, - }); - }; - var createMockNodeHTTPResponse = () => { -@@ -743,10 +782,10 @@ var createOpenApiAwsLambdaHandler = (opts) => { - if (!_awslambda.isPayloadV1.call(void 0, event) && !_awslambda.isPayloadV2.call(void 0, event)) { - throw new (0, _server.TRPCError)({ - message: _awslambda.UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE, -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } -- const createContext = async () => _optionalChain([opts, 'access', _41 => _41.createContext, 'optionalCall', _42 => _42({ event, context })]); -+ const createContext = async () => _optionalChain([opts, "access", (_41) => _41.createContext, "optionalCall", (_42) => _42({ event, context })]); - const openApiHttpHandler = createOpenApiNodeHttpHandler({ ...opts, createContext }); - path = createMockNodeHTTPPath(event); - const req = createMockNodeHTTPRequest(path, event); -@@ -755,42 +794,62 @@ var createOpenApiAwsLambdaHandler = (opts) => { - return { - statusCode: res.statusCode, - headers: _awslambda.transformHeaders.call(void 0, res._getHeaders() || {}), -- body: res._getData() -+ body: res._getData(), - }; - } catch (cause) { - const error = getErrorFromUnknown(cause); -- _optionalChain([opts, 'access', _43 => _43.onError, 'optionalCall', _44 => _44({ -+ _optionalChain([ -+ opts, -+ "access", -+ (_43) => _43.onError, -+ "optionalCall", -+ (_44) => -+ _44({ -+ error, -+ type: "unknown", -+ path, -+ input: void 0, -+ ctx: void 0, -+ req: event, -+ }), -+ ]); -+ const meta = _optionalChain([ -+ opts, -+ "access", -+ (_45) => _45.responseMeta, -+ "optionalCall", -+ (_46) => -+ _46({ -+ type: "unknown", -+ paths: [path], -+ ctx: void 0, -+ data: [void 0], -+ errors: [error], -+ }), -+ ]); -+ const errorShape = opts.router._def.errorFormatter({ - error, - type: "unknown", - path, - input: void 0, - ctx: void 0, -- req: event -- })]); -- const meta = _optionalChain([opts, 'access', _45 => _45.responseMeta, 'optionalCall', _46 => _46({ -- type: "unknown", -- paths: [path], -- ctx: void 0, -- data: [void 0], -- errors: [error] -- })]); -- const errorShape = opts.router.getErrorShape({ -- error, -- type: "unknown", -- path, -- input: void 0, -- ctx: void 0 - }); -- const statusCode = _nullishCoalesce(_nullishCoalesce(_optionalChain([meta, 'optionalAccess', _47 => _47.status]), () => ( TRPC_ERROR_CODE_HTTP_STATUS[error.code])), () => ( 500)); -- const headers = { "content-type": "application/json", ..._nullishCoalesce(_optionalChain([meta, 'optionalAccess', _48 => _48.headers]), () => ( {})) }; -+ const statusCode = _nullishCoalesce( -+ _nullishCoalesce(_optionalChain([meta, "optionalAccess", (_47) => _47.status]), () => TRPC_ERROR_CODE_HTTP_STATUS[error.code]), -+ () => 500 -+ ); -+ const headers = { "content-type": "application/json", ..._nullishCoalesce(_optionalChain([meta, "optionalAccess", (_48) => _48.headers]), () => ({})) }; - const body = { -- message: _nullishCoalesce(_nullishCoalesce(_optionalChain([errorShape, 'optionalAccess', _49 => _49.message]), () => ( error.message)), () => ( "An error occurred")), -- code: error.code -+ message: _nullishCoalesce( -+ _nullishCoalesce(_optionalChain([errorShape, "optionalAccess", (_49) => _49.message]), () => error.message), -+ () => "An error occurred" -+ ), -+ code: error.code, - }; - return { - statusCode, - headers, -- body: JSON.stringify(body) -+ body: JSON.stringify(body), - }; - } - }; -@@ -806,7 +865,7 @@ var createOpenApiExpressMiddleware = (opts) => { - - // packages/adapters/fastify.ts - function fastifyTRPCOpenApiPlugin(fastify, opts, done) { -- let prefix = _nullishCoalesce(opts.basePath, () => ( "")); -+ let prefix = _nullishCoalesce(opts.basePath, () => ""); - if (prefix.endsWith("/")) { - prefix = prefix.slice(0, -1); - } -@@ -824,7 +883,7 @@ function fastifyTRPCOpenApiPlugin(fastify, opts, done) { - } - return reply.header(key, value); - }, -- end: (body) => reply.send(body) -+ end: (body) => reply.send(body), - // eslint-disable-line @typescript-eslint/no-explicit-any - }) - ); -@@ -844,27 +903,55 @@ var getUrlEncodedBody = async (req) => { - }; - var getRequestBody = async (req) => { - try { -- if (_optionalChain([req, 'access', _50 => _50.headers, 'access', _51 => _51.get, 'call', _52 => _52("content-type"), 'optionalAccess', _53 => _53.includes, 'call', _54 => _54("application/json")])) { -+ if ( -+ _optionalChain([ -+ req, -+ "access", -+ (_50) => _50.headers, -+ "access", -+ (_51) => _51.get, -+ "call", -+ (_52) => _52("content-type"), -+ "optionalAccess", -+ (_53) => _53.includes, -+ "call", -+ (_54) => _54("application/json"), -+ ]) -+ ) { - return { - isValid: true, - // use JSON.parse instead of req.json() because req.json() does not throw on invalid JSON -- data: JSON.parse(await req.text()) -+ data: JSON.parse(await req.text()), - }; - } -- if (_optionalChain([req, 'access', _55 => _55.headers, 'access', _56 => _56.get, 'call', _57 => _57("content-type"), 'optionalAccess', _58 => _58.includes, 'call', _59 => _59("application/x-www-form-urlencoded")])) { -+ if ( -+ _optionalChain([ -+ req, -+ "access", -+ (_55) => _55.headers, -+ "access", -+ (_56) => _56.get, -+ "call", -+ (_57) => _57("content-type"), -+ "optionalAccess", -+ (_58) => _58.includes, -+ "call", -+ (_59) => _59("application/x-www-form-urlencoded"), -+ ]) -+ ) { - return { - isValid: true, -- data: await getUrlEncodedBody(req) -+ data: await getUrlEncodedBody(req), - }; - } - return { - isValid: true, -- data: req.body -+ data: req.body, - }; - } catch (err) { - return { - isValid: false, -- cause: err -+ cause: err, - }; - } - }; -@@ -879,7 +966,7 @@ var createRequestProxy = async (req, url) => { - return new Proxy(target.headers, { - get: (trg, item) => { - return trg.get(item.toString()); -- } -+ }, - }); - } - if (prop === "body") { -@@ -887,13 +974,13 @@ var createRequestProxy = async (req, url) => { - throw new (0, _server.TRPCError)({ - code: "PARSE_ERROR", - message: "Failed to parse request body", -- cause: body.cause -+ cause: body.cause, - }); - } - return body.data; - } - return target[prop]; -- } -+ }, - }); - }; - var createOpenApiFetchHandler = async (opts) => { -@@ -910,38 +997,35 @@ var createOpenApiFetchHandler = async (opts) => { - router: opts.router, - createContext, - onError: opts.onError, -- responseMeta: opts.responseMeta -+ responseMeta: opts.responseMeta, - }); - return new Promise((resolve) => { - let statusCode; -- return openApiHttpHandler( -- req, -- { -- setHeader: (key, value) => { -- if (typeof value === "string") { -- resHeaders.set(key, value); -- } else { -- for (const v of value) { -- resHeaders.append(key, v); -- } -+ return openApiHttpHandler(req, { -+ setHeader: (key, value) => { -+ if (typeof value === "string") { -+ resHeaders.set(key, value); -+ } else { -+ for (const v of value) { -+ resHeaders.append(key, v); - } -- }, -- get statusCode() { -- return statusCode; -- }, -- set statusCode(code) { -- statusCode = code; -- }, -- end: (body) => { -- resolve( -- new Response(body, { -- headers: resHeaders, -- status: statusCode -- }) -- ); - } -- } -- ); -+ }, -+ get statusCode() { -+ return statusCode; -+ }, -+ set statusCode(code) { -+ statusCode = code; -+ }, -+ end: (body) => { -+ resolve( -+ new Response(body, { -+ headers: resHeaders, -+ status: statusCode, -+ }) -+ ); -+ }, -+ }); - }); - }; - -@@ -959,21 +1043,28 @@ var createOpenApiNextHandler = (opts) => { - if (pathname === null) { - const error = new (0, _server.TRPCError)({ - message: 'Query "trpc" not found - is the `trpc-swagger` file named `[...trpc].ts`?', -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); -- _optionalChain([opts, 'access', _60 => _60.onError, 'optionalCall', _61 => _61({ -- error, -- type: "unknown", -- path: void 0, -- input: void 0, -- ctx: void 0, -- req -- })]); -+ _optionalChain([ -+ opts, -+ "access", -+ (_60) => _60.onError, -+ "optionalCall", -+ (_61) => -+ _61({ -+ error, -+ type: "unknown", -+ path: void 0, -+ input: void 0, -+ ctx: void 0, -+ req, -+ }), -+ ]); - res.statusCode = 500; - res.setHeader("Content-Type", "application/json"); - const body = { - message: error.message, -- code: error.code -+ code: error.code, - }; - res.end(JSON.stringify(body)); - return; -@@ -985,7 +1076,6 @@ var createOpenApiNextHandler = (opts) => { - - // packages/adapters/nuxt.ts - -- - // node_modules/ufo/dist/index.mjs - var r = String.fromCharCode; - var PLUS_RE = /\+/g; -@@ -1044,9 +1134,7 @@ function getQuery2(input) { - } - var protocolRelative = Symbol.for("ufo:protocolRelative"); - function parseURL(input = "", defaultProto) { -- const _specialProtoMatch = input.match( -- /^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i -- ); -+ const _specialProtoMatch = input.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i); - if (_specialProtoMatch) { - const [, _proto, _pathname = ""] = _specialProtoMatch; - return { -@@ -1056,7 +1144,7 @@ function parseURL(input = "", defaultProto) { - auth: "", - host: "", - search: "", -- hash: "" -+ hash: "", - }; - } - if (!hasProtocol(input, { acceptRelative: true })) { -@@ -1064,9 +1152,7 @@ function parseURL(input = "", defaultProto) { - } - const [, protocol = "", auth, hostAndPath = ""] = input.replace(/\\/g, "/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/) || []; - const [, host = "", path = ""] = hostAndPath.match(/([^#/?]*)(.*)?/) || []; -- const { pathname, search, hash } = parsePath( -- path.replace(/\/(?=[A-Za-z]:)/, "") -- ); -+ const { pathname, search, hash } = parsePath(path.replace(/\/(?=[A-Za-z]:)/, "")); - return { - protocol: protocol.toLowerCase(), - auth: auth ? auth.slice(0, Math.max(0, auth.length - 1)) : "", -@@ -1074,7 +1160,7 @@ function parseURL(input = "", defaultProto) { - pathname, - search, - hash, -- [protocolRelative]: !protocol -+ [protocolRelative]: !protocol, - }; - } - function parsePath(input = "") { -@@ -1082,7 +1168,7 @@ function parsePath(input = "") { - return { - pathname, - search, -- hash -+ hash, - }; - } - -@@ -1122,12 +1208,7 @@ function _defu(baseObject, defaults, namespace = ".", merger) { - if (Array.isArray(value) && Array.isArray(object[key])) { - object[key] = [...value, ...object[key]]; - } else if (isPlainObject(value) && isPlainObject(object[key])) { -- object[key] = _defu( -- value, -- object[key], -- (namespace ? `${namespace}.` : "") + key.toString(), -- merger -- ); -+ object[key] = _defu(value, object[key], (namespace ? `${namespace}.` : "") + key.toString(), merger); - } else { - object[key] = value; - } -@@ -1135,10 +1216,9 @@ function _defu(baseObject, defaults, namespace = ".", merger) { - return object; - } - function createDefu(merger) { -- return (...arguments_) => ( -+ return (...arguments_) => - // eslint-disable-next-line unicorn/no-array-reduce -- arguments_.reduce((p, c) => _defu(p, c, "", merger), {}) -- ); -+ arguments_.reduce((p, c) => _defu(p, c, "", merger), {}); - } - var defu = createDefu(); - var defuFn = createDefu((object, key, currentValue) => { -@@ -1156,7 +1236,7 @@ var defuArrayFn = createDefu((object, key, currentValue) => { - - // node_modules/h3/dist/index.mjs - var __defProp$2 = Object.defineProperty; --var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -+var __defNormalProp$2 = (obj, key, value) => (key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : (obj[key] = value)); - var __publicField$2 = (obj, key, value) => { - __defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -@@ -1177,7 +1257,7 @@ var H3Error = class extends Error { - toJSON() { - const obj = { - message: this.message, -- statusCode: sanitizeStatusCode(this.statusCode, 500) -+ statusCode: sanitizeStatusCode(this.statusCode, 500), - }; - if (this.statusMessage) { - obj.statusMessage = sanitizeStatusMessage(this.statusMessage); -@@ -1218,7 +1298,7 @@ function defineEventHandler(handler) { - } - const _hooks = { - onRequest: _normalizeArray(handler.onRequest), -- onBeforeResponse: _normalizeArray(handler.onBeforeResponse) -+ onBeforeResponse: _normalizeArray(handler.onBeforeResponse), - }; - const _handler = (event) => { - return _callHandler(event, handler.handler, _hooks); -@@ -1229,7 +1309,7 @@ function defineEventHandler(handler) { - return _handler; - } - function _normalizeArray(input) { -- return input ? Array.isArray(input) ? input : [input] : void 0; -+ return input ? (Array.isArray(input) ? input : [input]) : void 0; - } - async function _callHandler(event, handler, hooks) { - if (hooks.onRequest) { -@@ -1258,7 +1338,7 @@ var createOpenApiNuxtHandler = (opts) => { - return defineEventHandler(async (event) => { - let pathname = null; - const { params } = event.context; -- if (params && _optionalChain([params, 'optionalAccess', _62 => _62.trpc])) { -+ if (params && _optionalChain([params, "optionalAccess", (_62) => _62.trpc])) { - if (!params.trpc.includes("/")) { - pathname = params.trpc; - } else { -@@ -1268,21 +1348,28 @@ var createOpenApiNuxtHandler = (opts) => { - if (pathname === null) { - const error = new (0, _server.TRPCError)({ - message: 'Query "trpc" not found - is the `trpc-swagger` file named `[...trpc].ts`?', -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); -- _optionalChain([opts, 'access', _63 => _63.onError, 'optionalCall', _64 => _64({ -- error, -- type: "unknown", -- path: void 0, -- input: void 0, -- ctx: void 0, -- req: event.node.req -- })]); -+ _optionalChain([ -+ opts, -+ "access", -+ (_63) => _63.onError, -+ "optionalCall", -+ (_64) => -+ _64({ -+ error, -+ type: "unknown", -+ path: void 0, -+ input: void 0, -+ ctx: void 0, -+ req: event.node.req, -+ }), -+ ]); - event.node.res.statusCode = 500; - event.node.res.setHeader("Content-Type", "application/json"); - const body = { - message: error.message, -- code: error.code -+ code: error.code, - }; - event.node.res.end(JSON.stringify(body)); - return; -@@ -1301,14 +1388,13 @@ var createOpenApiHttpHandler = (opts) => { - }; - }; - -- -- -- -- -- -- -- -- -- --exports.createOpenApiAwsLambdaHandler = createOpenApiAwsLambdaHandler; exports.createOpenApiExpressMiddleware = createOpenApiExpressMiddleware; exports.createOpenApiFetchHandler = createOpenApiFetchHandler; exports.createOpenApiHttpHandler = createOpenApiHttpHandler; exports.createOpenApiNextHandler = createOpenApiNextHandler; exports.createOpenApiNuxtHandler = createOpenApiNuxtHandler; exports.fastifyTRPCOpenApiPlugin = fastifyTRPCOpenApiPlugin; exports.generateOpenApiDocument = generateOpenApiDocument; exports.openApiVersion = openApiVersion; -+exports.createOpenApiAwsLambdaHandler = createOpenApiAwsLambdaHandler; -+exports.createOpenApiExpressMiddleware = createOpenApiExpressMiddleware; -+exports.createOpenApiFetchHandler = createOpenApiFetchHandler; -+exports.createOpenApiHttpHandler = createOpenApiHttpHandler; -+exports.createOpenApiNextHandler = createOpenApiNextHandler; -+exports.createOpenApiNuxtHandler = createOpenApiNuxtHandler; -+exports.fastifyTRPCOpenApiPlugin = fastifyTRPCOpenApiPlugin; -+exports.generateOpenApiDocument = generateOpenApiDocument; -+exports.openApiVersion = openApiVersion; - //# sourceMappingURL=index.js.map -diff --git a/build/index.mjs b/build/index.mjs -index a23c6fb2fb648818fb0ece6addb62fd69511986e..b21a4a57ca8178bfe7d6b81d7d4d66b18c9ff0b8 100644 ---- a/build/index.mjs -+++ b/build/index.mjs -@@ -1,6 +1,5 @@ - // packages/adapters/aws-lambda.ts - import { TRPCError as TRPCError6 } from "@trpc/server"; --import { UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE, getHTTPMethod, getPath, isPayloadV1, isPayloadV2, transformHeaders } from "@trpc/server/adapters/aws-lambda"; - import { EventEmitter } from "events"; - import { createRequest, createResponse } from "node-mocks-http"; - -@@ -21,7 +20,7 @@ var TRPC_ERROR_CODE_HTTP_STATUS = { - METHOD_NOT_SUPPORTED: 405, - TOO_MANY_REQUESTS: 429, - UNPROCESSABLE_CONTENT: 422, -- NOT_IMPLEMENTED: 500 -+ NOT_IMPLEMENTED: 500, - }; - function getErrorFromUnknown(cause) { - if (cause instanceof Error && cause.name === "TRPCError") { -@@ -36,7 +35,7 @@ function getErrorFromUnknown(cause) { - const error = new TRPCError({ - message: "Internal server error", - code: "INTERNAL_SERVER_ERROR", -- cause: errorCause -+ cause: errorCause, - }); - if (stack) { - error.stack = stack; -@@ -80,18 +79,10 @@ var getInputOutputParsers = (procedure) => { - const { inputs, output } = procedure._def; - return { - inputParser: inputs.length >= 2 ? mergeInputs(inputs) : inputs[0], -- outputParser: output -+ outputParser: output, - }; - }; --var getProcedureType = (procedure) => { -- if (procedure._def.query) -- return "query"; -- if (procedure._def.mutation) -- return "mutation"; -- if (procedure._def.subscription) -- return "subscription"; -- throw new Error("Unknown procedure type"); --}; -+var getProcedureType = (procedure) => procedure._def.type; - var forEachOpenApiProcedure = (procedureRecord, callback) => { - for (const [path, procedure] of Object.entries(procedureRecord)) { - const { openapi } = procedure._def.meta ?? {}; -@@ -122,7 +113,11 @@ var instanceofZodTypeObject = (type) => { - return instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodObject); - }; - var instanceofZodTypeLikeVoid = (type) => { -- return instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodVoid) || instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodUndefined) || instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodNever); -+ return ( -+ instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodVoid) || -+ instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodUndefined) || -+ instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodNever) -+ ); - }; - var unwrapZodType = (type, unwrapPreprocess) => { - if (instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodOptional)) { -@@ -174,7 +169,12 @@ var instanceofZodTypeLikeString = (_type) => { - var zodSupportsCoerce = "coerce" in z2; - var instanceofZodTypeCoercible = (_type) => { - const type = unwrapZodType(_type, false); -- return instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodNumber) || instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodBoolean) || instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodBigInt) || instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodDate); -+ return ( -+ instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodNumber) || -+ instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodBoolean) || -+ instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodBigInt) || -+ instanceofZodTypeKind(type, z2.ZodFirstPartyTypeKind.ZodDate) -+ ); - }; - - // packages/generator/schema.ts -@@ -185,7 +185,7 @@ var getParameterObjects = (schema, pathParameters, inType, example) => { - if (!instanceofZodType(schema)) { - throw new TRPCError2({ - message: "Input parser expects a Zod validator", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const isRequired = !schema.isOptional(); -@@ -196,7 +196,7 @@ var getParameterObjects = (schema, pathParameters, inType, example) => { - if (!instanceofZodTypeObject(unwrappedSchema)) { - throw new TRPCError2({ - message: "Input parser must be a ZodObject", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const { shape } = unwrappedSchema; -@@ -205,63 +205,65 @@ var getParameterObjects = (schema, pathParameters, inType, example) => { - if (!shapeKeys.includes(pathParameter)) { - throw new TRPCError2({ - message: `Input parser expects key from path: "${pathParameter}"`, -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - } -- return shapeKeys.filter((shapeKey) => { -- const isPathParameter = pathParameters.includes(shapeKey); -- if (inType === "path") { -- return isPathParameter; -- } -- if (inType === "query") { -- return !isPathParameter; -- } -- return true; -- }).map((shapeKey) => { -- let shapeSchema = shape[shapeKey]; -- const isShapeRequired = !shapeSchema.isOptional(); -- const isPathParameter = pathParameters.includes(shapeKey); -- if (!instanceofZodTypeLikeString(shapeSchema)) { -- if (zodSupportsCoerce) { -- if (!instanceofZodTypeCoercible(shapeSchema)) { -+ return shapeKeys -+ .filter((shapeKey) => { -+ const isPathParameter = pathParameters.includes(shapeKey); -+ if (inType === "path") { -+ return isPathParameter; -+ } -+ if (inType === "query") { -+ return !isPathParameter; -+ } -+ return true; -+ }) -+ .map((shapeKey) => { -+ let shapeSchema = shape[shapeKey]; -+ const isShapeRequired = !shapeSchema.isOptional(); -+ const isPathParameter = pathParameters.includes(shapeKey); -+ if (!instanceofZodTypeLikeString(shapeSchema)) { -+ if (zodSupportsCoerce) { -+ if (!instanceofZodTypeCoercible(shapeSchema)) { -+ throw new TRPCError2({ -+ message: `Input parser key: "${shapeKey}" must be ZodString, ZodNumber, ZodBoolean, ZodBigInt or ZodDate`, -+ code: "INTERNAL_SERVER_ERROR", -+ }); -+ } -+ } else { - throw new TRPCError2({ -- message: `Input parser key: "${shapeKey}" must be ZodString, ZodNumber, ZodBoolean, ZodBigInt or ZodDate`, -- code: "INTERNAL_SERVER_ERROR" -+ message: `Input parser key: "${shapeKey}" must be ZodString`, -+ code: "INTERNAL_SERVER_ERROR", - }); - } -- } else { -- throw new TRPCError2({ -- message: `Input parser key: "${shapeKey}" must be ZodString`, -- code: "INTERNAL_SERVER_ERROR" -- }); - } -- } -- if (instanceofZodTypeOptional(shapeSchema)) { -- if (isPathParameter) { -- throw new TRPCError2({ -- message: `Path parameter: "${shapeKey}" must not be optional`, -- code: "INTERNAL_SERVER_ERROR" -- }); -+ if (instanceofZodTypeOptional(shapeSchema)) { -+ if (isPathParameter) { -+ throw new TRPCError2({ -+ message: `Path parameter: "${shapeKey}" must not be optional`, -+ code: "INTERNAL_SERVER_ERROR", -+ }); -+ } -+ shapeSchema = shapeSchema.unwrap(); - } -- shapeSchema = shapeSchema.unwrap(); -- } -- const { description, ...openApiSchemaObject } = zodSchemaToOpenApiSchemaObject(shapeSchema); -- return { -- name: shapeKey, -- in: isPathParameter ? "path" : "query", -- required: isPathParameter || isRequired && isShapeRequired, -- schema: openApiSchemaObject, -- description, -- example: example?.[shapeKey] -- }; -- }); -+ const { description, ...openApiSchemaObject } = zodSchemaToOpenApiSchemaObject(shapeSchema); -+ return { -+ name: shapeKey, -+ in: isPathParameter ? "path" : "query", -+ required: isPathParameter || (isRequired && isShapeRequired), -+ schema: openApiSchemaObject, -+ description, -+ example: example?.[shapeKey], -+ }; -+ }); - }; - var getRequestBodyObject = (schema, pathParameters, contentTypes, example) => { - if (!instanceofZodType(schema)) { - throw new TRPCError2({ - message: "Input parser expects a Zod validator", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const isRequired = !schema.isOptional(); -@@ -272,7 +274,7 @@ var getRequestBodyObject = (schema, pathParameters, contentTypes, example) => { - if (!instanceofZodTypeObject(unwrappedSchema)) { - throw new TRPCError2({ - message: "Input parser must be a ZodObject", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const mask = {}; -@@ -292,12 +294,12 @@ var getRequestBodyObject = (schema, pathParameters, contentTypes, example) => { - for (const contentType of contentTypes) { - content[contentType] = { - schema: openApiSchemaObject, -- example: dedupedExample -+ example: dedupedExample, - }; - } - return { - required: isRequired, -- content -+ content, - }; - }; - var errorResponseObject = { -@@ -308,17 +310,17 @@ var errorResponseObject = { - z3.object({ - message: z3.string(), - code: z3.string(), -- issues: z3.array(z3.object({ message: z3.string() })).optional() -+ issues: z3.array(z3.object({ message: z3.string() })).optional(), - }) -- ) -- } -- } -+ ), -+ }, -+ }, - }; - var getResponsesObject = (schema, example, headers) => { - if (!instanceofZodType(schema)) { - throw new TRPCError2({ - message: "Output parser expects a Zod validator", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const successResponseObject = { -@@ -327,15 +329,15 @@ var getResponsesObject = (schema, example, headers) => { - content: { - "application/json": { - schema: zodSchemaToOpenApiSchemaObject(schema), -- example -- } -- } -+ example, -+ }, -+ }, - }; - return { - 200: successResponseObject, - default: { -- $ref: "#/components/responses/error" -- } -+ $ref: "#/components/responses/error", -+ }, - }; - }; - -@@ -349,7 +351,7 @@ var getOpenApiPathsObject = (appRouter, securitySchemeNames) => { - if (type === "subscription") { - throw new TRPCError3({ - message: "Subscriptions are not supported by OpenAPI v3", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const { method, protect, summary, description, tags, headers } = openapi; -@@ -360,20 +362,20 @@ var getOpenApiPathsObject = (appRouter, securitySchemeNames) => { - if (!httpMethod) { - throw new TRPCError3({ - message: "Method must be GET, POST, PATCH, PUT or DELETE", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - if (pathsObject[path]?.[httpMethod]) { - throw new TRPCError3({ - message: `Duplicate procedure defined for route ${method} ${path}`, -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const contentTypes = openapi.contentTypes || ["application/json"]; - if (contentTypes.length === 0) { - throw new TRPCError3({ - message: "At least one content type must be specified", -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const { inputParser, outputParser } = getInputOutputParsers(procedure); -@@ -385,37 +387,18 @@ var getOpenApiPathsObject = (appRouter, securitySchemeNames) => { - description, - tags, - security: protect ? securitySchemeNames.map((name) => ({ [name]: [] })) : void 0, -- ...acceptsRequestBody(method) ? { -- requestBody: getRequestBodyObject( -- inputParser, -- pathParameters, -- contentTypes, -- openapi.example?.request -- ), -- parameters: [ -- ...headerParameters, -- ...getParameterObjects( -- inputParser, -- pathParameters, -- "path", -- openapi.example?.request -- ) || [] -- ] -- } : { -- requestBody: void 0, -- parameters: [ -- ...headerParameters, -- ...getParameterObjects( -- inputParser, -- pathParameters, -- "all", -- openapi.example?.request -- ) || [] -- ] -- }, -+ ...(acceptsRequestBody(method) -+ ? { -+ requestBody: getRequestBodyObject(inputParser, pathParameters, contentTypes, openapi.example?.request), -+ parameters: [...headerParameters, ...(getParameterObjects(inputParser, pathParameters, "path", openapi.example?.request) || [])], -+ } -+ : { -+ requestBody: void 0, -+ parameters: [...headerParameters, ...(getParameterObjects(inputParser, pathParameters, "all", openapi.example?.request) || [])], -+ }), - responses: getResponsesObject(outputParser, openapi.example?.response, openapi.responseHeaders), -- ...openapi.deprecated ? { deprecated: openapi.deprecated } : {} -- } -+ ...(openapi.deprecated ? { deprecated: openapi.deprecated } : {}), -+ }, - }; - } catch (error) { - error.message = `[${procedureName}] - ${error.message}`; -@@ -431,30 +414,30 @@ var generateOpenApiDocument = (appRouter, opts) => { - const securitySchemes = opts.securitySchemes || { - Authorization: { - type: "http", -- scheme: "bearer" -- } -+ scheme: "bearer", -+ }, - }; - return { - openapi: openApiVersion, - info: { - title: opts.title, - description: opts.description, -- version: opts.version -+ version: opts.version, - }, - servers: [ - { -- url: opts.baseUrl -- } -+ url: opts.baseUrl, -+ }, - ], - paths: getOpenApiPathsObject(appRouter, Object.keys(securitySchemes)), - components: { - securitySchemes, - responses: { -- error: errorResponseObject -- } -+ error: errorResponseObject, -+ }, - }, - tags: opts.tags?.map((tag) => ({ name: tag })), -- externalDocs: opts.docsUrl ? { url: opts.docsUrl } : void 0 -+ externalDocs: opts.docsUrl ? { url: opts.docsUrl } : void 0, - }; - }; - -@@ -498,7 +481,7 @@ var getBody = async (req, maxBodySize = BODY_100_KB) => { - const { raw, parsed } = await parse(req, { - limit: maxBodySize, - strict: false, -- returnRawBody: true -+ returnRawBody: true, - }); - req.body = raw ? parsed : void 0; - } catch (cause) { -@@ -506,7 +489,7 @@ var getBody = async (req, maxBodySize = BODY_100_KB) => { - throw new TRPCError4({ - message: "Request body too large", - code: "PAYLOAD_TOO_LARGE", -- cause -+ cause, - }); - } - let errorCause; -@@ -516,7 +499,7 @@ var getBody = async (req, maxBodySize = BODY_100_KB) => { - throw new TRPCError4({ - message: "Failed to parse request body", - code: "PARSE_ERROR", -- cause: errorCause -+ cause: errorCause, - }); - } - } -@@ -526,31 +509,18 @@ var getBody = async (req, maxBodySize = BODY_100_KB) => { - // packages/adapters/node-http/procedures.ts - var createProcedureCache = (router) => { - const procedureCache = /* @__PURE__ */ new Map(); -- const { queries, mutations } = router._def; -- forEachOpenApiProcedure(queries, ({ path: queryPath, procedure, openapi }) => { -+ forEachOpenApiProcedure(router._def.procedures, ({ path: queryPath, procedure, openapi }) => { - const { method } = openapi; - if (!procedureCache.has(method)) { - procedureCache.set(method, /* @__PURE__ */ new Map()); - } - const path = normalizePath(openapi.path); - const pathRegExp = getPathRegExp(path); -+ - procedureCache.get(method).set(pathRegExp, { -- type: "query", -+ type: procedure._def.type, - path: queryPath, -- procedure -- }); -- }); -- forEachOpenApiProcedure(mutations, ({ path: mutationPath, procedure, openapi }) => { -- const { method } = openapi; -- if (!procedureCache.has(method)) { -- procedureCache.set(method, /* @__PURE__ */ new Map()); -- } -- const path = normalizePath(openapi.path); -- const pathRegExp = getPathRegExp(path); -- procedureCache.get(method).set(pathRegExp, { -- type: "mutation", -- path: mutationPath, -- procedure -+ procedure, - }); - }); - return (method, path) => { -@@ -606,7 +576,7 @@ var createOpenApiNodeHttpHandler = (opts) => { - } - throw new TRPCError5({ - message: "Not found", -- code: "NOT_FOUND" -+ code: "NOT_FOUND", - }); - } - const useBody = acceptsRequestBody(method); -@@ -614,8 +584,8 @@ var createOpenApiNodeHttpHandler = (opts) => { - const unwrappedSchema = unwrapZodType(schema, true); - if (!instanceofZodTypeLikeVoid(unwrappedSchema)) { - input = { -- ...useBody ? await getBody(req, maxBodySize) : getQuery(req, url), -- ...pathInput -+ ...(useBody ? await getBody(req, maxBodySize) : getQuery(req, url)), -+ ...pathInput, - }; - } - if (zodSupportsCoerce) { -@@ -638,7 +608,7 @@ var createOpenApiNodeHttpHandler = (opts) => { - paths: [procedure.path], - ctx, - data: [data], -- errors: [] -+ errors: [], - }); - const statusCode = meta?.status ?? 200; - const headers = meta?.headers ?? {}; -@@ -652,21 +622,21 @@ var createOpenApiNodeHttpHandler = (opts) => { - path: procedure?.path, - input, - ctx, -- req -+ req, - }); - const meta = responseMeta?.({ - type: procedure?.type ?? "unknown", - paths: procedure?.path ? [procedure?.path] : void 0, - ctx, - data: [data], -- errors: [error] -+ errors: [error], - }); -- const errorShape = router.getErrorShape({ -+ const errorShape = router._def.errorFormatter({ - error, - type: procedure?.type ?? "unknown", - path: procedure?.path, - input, -- ctx -+ ctx, - }); - const isInputValidationError = error.code === "BAD_REQUEST" && error.cause instanceof Error && error.cause.name === "ZodError"; - const statusCode = meta?.status ?? TRPC_ERROR_CODE_HTTP_STATUS[error.code] ?? 500; -@@ -674,7 +644,7 @@ var createOpenApiNodeHttpHandler = (opts) => { - const body = { - message: isInputValidationError ? "Input validation failed" : errorShape?.message ?? error.message ?? "An error occurred", - code: error.code, -- issues: isInputValidationError ? error.cause.errors : void 0 -+ issues: isInputValidationError ? error.cause.errors : void 0, - }; - sendResponse(statusCode, headers, body); - } -@@ -703,7 +673,7 @@ var createMockNodeHTTPRequest = (path, event) => { - throw new TRPCError6({ - message: "Failed to parse request body", - code: "PARSE_ERROR", -- cause -+ cause, - }); - } - } -@@ -721,7 +691,7 @@ var createMockNodeHTTPRequest = (path, event) => { - throw new TRPCError6({ - message: "Failed to parse request body", - code: "PARSE_ERROR", -- cause -+ cause, - }); - } - } -@@ -730,7 +700,7 @@ var createMockNodeHTTPRequest = (path, event) => { - method, - query: event.queryStringParameters || void 0, - headers: event.headers, -- body -+ body, - }); - }; - var createMockNodeHTTPResponse = () => { -@@ -743,7 +713,7 @@ var createOpenApiAwsLambdaHandler = (opts) => { - if (!isPayloadV1(event) && !isPayloadV2(event)) { - throw new TRPCError6({ - message: UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE, -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - } - const createContext = async () => opts.createContext?.({ event, context }); -@@ -755,7 +725,7 @@ var createOpenApiAwsLambdaHandler = (opts) => { - return { - statusCode: res.statusCode, - headers: transformHeaders(res._getHeaders() || {}), -- body: res._getData() -+ body: res._getData(), - }; - } catch (cause) { - const error = getErrorFromUnknown(cause); -@@ -765,32 +735,32 @@ var createOpenApiAwsLambdaHandler = (opts) => { - path, - input: void 0, - ctx: void 0, -- req: event -+ req: event, - }); - const meta = opts.responseMeta?.({ - type: "unknown", - paths: [path], - ctx: void 0, - data: [void 0], -- errors: [error] -+ errors: [error], - }); -- const errorShape = opts.router.getErrorShape({ -+ const errorShape = opts.router._def.errorFormatter({ - error, - type: "unknown", - path, - input: void 0, -- ctx: void 0 -+ ctx: void 0, - }); - const statusCode = meta?.status ?? TRPC_ERROR_CODE_HTTP_STATUS[error.code] ?? 500; -- const headers = { "content-type": "application/json", ...meta?.headers ?? {} }; -+ const headers = { "content-type": "application/json", ...(meta?.headers ?? {}) }; - const body = { - message: errorShape?.message ?? error.message ?? "An error occurred", -- code: error.code -+ code: error.code, - }; - return { - statusCode, - headers, -- body: JSON.stringify(body) -+ body: JSON.stringify(body), - }; - } - }; -@@ -824,7 +794,7 @@ function fastifyTRPCOpenApiPlugin(fastify, opts, done) { - } - return reply.header(key, value); - }, -- end: (body) => reply.send(body) -+ end: (body) => reply.send(body), - // eslint-disable-line @typescript-eslint/no-explicit-any - }) - ); -@@ -848,23 +818,23 @@ var getRequestBody = async (req) => { - return { - isValid: true, - // use JSON.parse instead of req.json() because req.json() does not throw on invalid JSON -- data: JSON.parse(await req.text()) -+ data: JSON.parse(await req.text()), - }; - } - if (req.headers.get("content-type")?.includes("application/x-www-form-urlencoded")) { - return { - isValid: true, -- data: await getUrlEncodedBody(req) -+ data: await getUrlEncodedBody(req), - }; - } - return { - isValid: true, -- data: req.body -+ data: req.body, - }; - } catch (err) { - return { - isValid: false, -- cause: err -+ cause: err, - }; - } - }; -@@ -879,7 +849,7 @@ var createRequestProxy = async (req, url) => { - return new Proxy(target.headers, { - get: (trg, item) => { - return trg.get(item.toString()); -- } -+ }, - }); - } - if (prop === "body") { -@@ -887,13 +857,13 @@ var createRequestProxy = async (req, url) => { - throw new TRPCError7({ - code: "PARSE_ERROR", - message: "Failed to parse request body", -- cause: body.cause -+ cause: body.cause, - }); - } - return body.data; - } - return target[prop]; -- } -+ }, - }); - }; - var createOpenApiFetchHandler = async (opts) => { -@@ -910,38 +880,35 @@ var createOpenApiFetchHandler = async (opts) => { - router: opts.router, - createContext, - onError: opts.onError, -- responseMeta: opts.responseMeta -+ responseMeta: opts.responseMeta, - }); - return new Promise((resolve) => { - let statusCode; -- return openApiHttpHandler( -- req, -- { -- setHeader: (key, value) => { -- if (typeof value === "string") { -- resHeaders.set(key, value); -- } else { -- for (const v of value) { -- resHeaders.append(key, v); -- } -+ return openApiHttpHandler(req, { -+ setHeader: (key, value) => { -+ if (typeof value === "string") { -+ resHeaders.set(key, value); -+ } else { -+ for (const v of value) { -+ resHeaders.append(key, v); - } -- }, -- get statusCode() { -- return statusCode; -- }, -- set statusCode(code) { -- statusCode = code; -- }, -- end: (body) => { -- resolve( -- new Response(body, { -- headers: resHeaders, -- status: statusCode -- }) -- ); - } -- } -- ); -+ }, -+ get statusCode() { -+ return statusCode; -+ }, -+ set statusCode(code) { -+ statusCode = code; -+ }, -+ end: (body) => { -+ resolve( -+ new Response(body, { -+ headers: resHeaders, -+ status: statusCode, -+ }) -+ ); -+ }, -+ }); - }); - }; - -@@ -959,7 +926,7 @@ var createOpenApiNextHandler = (opts) => { - if (pathname === null) { - const error = new TRPCError8({ - message: 'Query "trpc" not found - is the `trpc-swagger` file named `[...trpc].ts`?', -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - opts.onError?.({ - error, -@@ -967,13 +934,13 @@ var createOpenApiNextHandler = (opts) => { - path: void 0, - input: void 0, - ctx: void 0, -- req -+ req, - }); - res.statusCode = 500; - res.setHeader("Content-Type", "application/json"); - const body = { - message: error.message, -- code: error.code -+ code: error.code, - }; - res.end(JSON.stringify(body)); - return; -@@ -1044,9 +1011,7 @@ function getQuery2(input) { - } - var protocolRelative = Symbol.for("ufo:protocolRelative"); - function parseURL(input = "", defaultProto) { -- const _specialProtoMatch = input.match( -- /^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i -- ); -+ const _specialProtoMatch = input.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i); - if (_specialProtoMatch) { - const [, _proto, _pathname = ""] = _specialProtoMatch; - return { -@@ -1056,7 +1021,7 @@ function parseURL(input = "", defaultProto) { - auth: "", - host: "", - search: "", -- hash: "" -+ hash: "", - }; - } - if (!hasProtocol(input, { acceptRelative: true })) { -@@ -1064,9 +1029,7 @@ function parseURL(input = "", defaultProto) { - } - const [, protocol = "", auth, hostAndPath = ""] = input.replace(/\\/g, "/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/) || []; - const [, host = "", path = ""] = hostAndPath.match(/([^#/?]*)(.*)?/) || []; -- const { pathname, search, hash } = parsePath( -- path.replace(/\/(?=[A-Za-z]:)/, "") -- ); -+ const { pathname, search, hash } = parsePath(path.replace(/\/(?=[A-Za-z]:)/, "")); - return { - protocol: protocol.toLowerCase(), - auth: auth ? auth.slice(0, Math.max(0, auth.length - 1)) : "", -@@ -1074,7 +1037,7 @@ function parseURL(input = "", defaultProto) { - pathname, - search, - hash, -- [protocolRelative]: !protocol -+ [protocolRelative]: !protocol, - }; - } - function parsePath(input = "") { -@@ -1082,7 +1045,7 @@ function parsePath(input = "") { - return { - pathname, - search, -- hash -+ hash, - }; - } - -@@ -1122,12 +1085,7 @@ function _defu(baseObject, defaults, namespace = ".", merger) { - if (Array.isArray(value) && Array.isArray(object[key])) { - object[key] = [...value, ...object[key]]; - } else if (isPlainObject(value) && isPlainObject(object[key])) { -- object[key] = _defu( -- value, -- object[key], -- (namespace ? `${namespace}.` : "") + key.toString(), -- merger -- ); -+ object[key] = _defu(value, object[key], (namespace ? `${namespace}.` : "") + key.toString(), merger); - } else { - object[key] = value; - } -@@ -1135,10 +1093,9 @@ function _defu(baseObject, defaults, namespace = ".", merger) { - return object; - } - function createDefu(merger) { -- return (...arguments_) => ( -+ return (...arguments_) => - // eslint-disable-next-line unicorn/no-array-reduce -- arguments_.reduce((p, c) => _defu(p, c, "", merger), {}) -- ); -+ arguments_.reduce((p, c) => _defu(p, c, "", merger), {}); - } - var defu = createDefu(); - var defuFn = createDefu((object, key, currentValue) => { -@@ -1156,7 +1113,7 @@ var defuArrayFn = createDefu((object, key, currentValue) => { - - // node_modules/h3/dist/index.mjs - var __defProp$2 = Object.defineProperty; --var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -+var __defNormalProp$2 = (obj, key, value) => (key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : (obj[key] = value)); - var __publicField$2 = (obj, key, value) => { - __defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -@@ -1177,7 +1134,7 @@ var H3Error = class extends Error { - toJSON() { - const obj = { - message: this.message, -- statusCode: sanitizeStatusCode(this.statusCode, 500) -+ statusCode: sanitizeStatusCode(this.statusCode, 500), - }; - if (this.statusMessage) { - obj.statusMessage = sanitizeStatusMessage(this.statusMessage); -@@ -1218,7 +1175,7 @@ function defineEventHandler(handler) { - } - const _hooks = { - onRequest: _normalizeArray(handler.onRequest), -- onBeforeResponse: _normalizeArray(handler.onBeforeResponse) -+ onBeforeResponse: _normalizeArray(handler.onBeforeResponse), - }; - const _handler = (event) => { - return _callHandler(event, handler.handler, _hooks); -@@ -1229,7 +1186,7 @@ function defineEventHandler(handler) { - return _handler; - } - function _normalizeArray(input) { -- return input ? Array.isArray(input) ? input : [input] : void 0; -+ return input ? (Array.isArray(input) ? input : [input]) : void 0; - } - async function _callHandler(event, handler, hooks) { - if (hooks.onRequest) { -@@ -1268,7 +1225,7 @@ var createOpenApiNuxtHandler = (opts) => { - if (pathname === null) { - const error = new TRPCError9({ - message: 'Query "trpc" not found - is the `trpc-swagger` file named `[...trpc].ts`?', -- code: "INTERNAL_SERVER_ERROR" -+ code: "INTERNAL_SERVER_ERROR", - }); - opts.onError?.({ - error, -@@ -1276,13 +1233,13 @@ var createOpenApiNuxtHandler = (opts) => { - path: void 0, - input: void 0, - ctx: void 0, -- req: event.node.req -+ req: event.node.req, - }); - event.node.res.statusCode = 500; - event.node.res.setHeader("Content-Type", "application/json"); - const body = { - message: error.message, -- code: error.code -+ code: error.code, - }; - event.node.res.end(JSON.stringify(body)); - return; -@@ -1309,6 +1266,6 @@ export { - createOpenApiNuxtHandler, - fastifyTRPCOpenApiPlugin, - generateOpenApiDocument, -- openApiVersion -+ openApiVersion, - }; - //# sourceMappingURL=index.mjs.map diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 773f64c5f..eb2c5e3ec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,11 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -patchedDependencies: - trpc-swagger@1.2.6: - hash: 6s72z7zx33c52iesv5sewipn6i - path: patches/trpc-swagger@1.2.6.patch - importers: .: @@ -24,7 +19,7 @@ importers: version: 4.3.3(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': specifier: ^2.1.5 - version: 2.1.5(vitest@2.1.5) + version: 2.1.5(vitest@2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/ui': specifier: ^2.1.5 version: 2.1.5(vitest@2.1.5) @@ -527,9 +522,9 @@ importers: superjson: specifier: 2.2.1 version: 2.2.1 - trpc-swagger: - specifier: ^1.2.6 - version: 1.2.6(patch_hash=6s72z7zx33c52iesv5sewipn6i)(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(zod@3.23.8) + trpc-to-openapi: + specifier: ^2.0.2 + version: 2.0.2(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.9.3)(zod@3.23.8) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -877,6 +872,9 @@ importers: drizzle-orm: specifier: ^0.36.4 version: 0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.5.0)(mysql2@3.11.4)(react@18.3.1) + drizzle-zod: + specifier: ^0.5.1 + version: 0.5.1(drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.5.0)(mysql2@3.11.4)(react@18.3.1))(zod@3.23.8) mysql2: specifier: 3.11.4 version: 3.11.4 @@ -4444,9 +4442,6 @@ packages: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} - chalk-scripts@1.2.8: - resolution: {integrity: sha512-Mu3mEn4lbqJHZD+wqBE8kwGb1TaNgcMspDIZVDzDHxKhK1zB3Q8q49PP15z0CNNDu5wxSwxhdPV+8UcejOSWxA==} - chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -4459,10 +4454,6 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - change-case@3.1.0: resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==} @@ -4616,6 +4607,10 @@ 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==} @@ -4629,6 +4624,9 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + 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'} @@ -4697,6 +4695,9 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + crossws@0.3.1: + resolution: {integrity: sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==} + crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} @@ -4792,6 +4793,9 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + degenerator@5.0.1: resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} engines: {node: '>= 14'} @@ -5006,6 +5010,12 @@ packages: sqlite3: optional: true + drizzle-zod@0.5.1: + resolution: {integrity: sha512-C/8bvzUH/zSnVfwdSibOgFjLhtDtbKYmkbPbUCq46QZyZCH6kODIMSOgZ8R7rVjoI+tCj3k06MRJMDqsIeoS4A==} + peerDependencies: + drizzle-orm: '>=0.23.13' + zod: '*' + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -5552,6 +5562,9 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + h3@1.13.0: + resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==} + handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -5728,6 +5741,9 @@ packages: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} @@ -6233,6 +6249,11 @@ packages: engines: {node: '>=4'} hasBin: true + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -6463,9 +6484,17 @@ packages: peerDependencies: webpack: ^5.0.0 - node-mocks-http@1.16.0: - resolution: {integrity: sha512-jmDjsr87ugnZ4nqBeX8ccMB1Fn04qc5Fz45XgrneJerWGV0VqS+wpu/zVkwv8LDAYHljDy5FzNvRJaOzEW9Dyw==} + node-mocks-http@1.16.1: + resolution: {integrity: sha512-Q2m5bmIE1KFeeKI6OsSn+c4XDara5NWnUJgzqnIkhiCNukYX+fqu0ADSeKOlpWtbCwgRnJ69F+7RUiQltzTKXA==} engines: {node: '>=14'} + peerDependencies: + '@types/express': ^4.17.21 || ^5.0.0 + '@types/node': '*' + peerDependenciesMeta: + '@types/express': + optional: true + '@types/node': + optional: true node-plop@0.26.3: resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} @@ -6535,6 +6564,9 @@ packages: ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + ohash@1.1.4: + resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -6553,8 +6585,8 @@ packages: resolution: {integrity: sha512-dtyTFKx2xVcO0W8JKaluXIHC9l/MLjHeflBaWjiWNMCHp/TBs9dEjQDbj/VFlHR4omFOKjjmqm1pW1aCAhmPBg==} engines: {node: '>=12.20.0'} - openapi-types@12.1.3: - resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + openapi3-ts@4.3.3: + resolution: {integrity: sha512-LKkzBGJcZ6wdvkKGMoSvpK+0cbN5Xc3XuYkJskO+vjEQWJgs1kgtyUk0pjf8KwPuysv323Er62F5P17XQl96Qg==} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} @@ -6662,9 +6694,6 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} - performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} @@ -6879,8 +6908,8 @@ packages: resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} engines: {node: '>=8'} - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + qs@6.13.1: + resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} engines: {node: '>=0.6'} querystringify@2.2.0: @@ -6892,6 +6921,9 @@ packages: queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + ramda-adjunct@5.1.0: resolution: {integrity: sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==} engines: {node: '>=0.10.3'} @@ -7711,12 +7743,11 @@ packages: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} - trpc-swagger@1.2.6: - resolution: {integrity: sha512-LVh2NicwYZdaUEvshY9IF1oL02z9PWjltY0CwTslHw4mi4DcSAP4bx/FPfp5+371oj75vujjNbOjGG9grNl3Xg==} + trpc-to-openapi@2.0.2: + resolution: {integrity: sha512-uuBkemnf9SY0mRv/wo0BBogdaoReOEg4zk8CSu95yUVgl/DxtDs+Ie02XGcGr1fCYKiyrfJbhRAo2wBbWV0POg==} peerDependencies: - '@trpc/client': ^10.45.2 - '@trpc/server': ^10.45.2 - zod: ^3.14.4 + '@trpc/server': ^11.0.0-rc.566 + zod: ^3.23.8 ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} @@ -7887,6 +7918,9 @@ packages: unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -7901,6 +7935,9 @@ packages: resolution: {integrity: sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==} engines: {node: '>=18.17'} + unenv@1.10.0: + resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} + unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} @@ -8029,10 +8066,6 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -8355,10 +8388,11 @@ packages: peerDependencies: zod: '>= 3.11.0' - zod-to-json-schema@3.23.3: - resolution: {integrity: sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==} + zod-openapi@2.19.0: + resolution: {integrity: sha512-OUAAyBDPPwZ9u61i4k/LieXUzP2re8kFjqdNh2AvHjsyi/aRNz9leDAtMGcSoSzUT5xUeQoACJufBI6FzzZyxA==} + engines: {node: '>=16.11'} peerDependencies: - zod: ^3.23.3 + zod: ^3.21.4 zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} @@ -10623,7 +10657,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@2.1.5(vitest@2.1.5)': + '@vitest/coverage-v8@2.1.5(vitest@2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -11185,12 +11219,6 @@ snapshots: loupe: 3.1.2 pathval: 2.0.0 - chalk-scripts@1.2.8: - dependencies: - chalk: 5.3.0 - performance-now: 2.1.0 - uuid: 9.0.1 - chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -11207,8 +11235,6 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} - change-case@3.1.0: dependencies: camel-case: 3.0.0 @@ -11295,7 +11321,7 @@ snapshots: dependencies: '@hapi/bourne': 3.0.0 inflation: 2.1.0 - qs: 6.13.0 + qs: 6.13.1 raw-body: 2.5.2 type-is: 1.6.18 @@ -11372,6 +11398,8 @@ 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: @@ -11385,6 +11413,8 @@ snapshots: convert-source-map@2.0.0: {} + cookie-es@1.2.2: {} + cookie@0.7.1: {} cookie@0.7.2: {} @@ -11453,6 +11483,10 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + crossws@0.3.1: + dependencies: + uncrypto: 0.1.3 + crypto-random-string@2.0.0: {} css.escape@1.5.1: {} @@ -11532,6 +11566,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + defu@6.1.4: {} + degenerator@5.0.1: dependencies: ast-types: 0.13.4 @@ -11670,6 +11706,11 @@ snapshots: mysql2: 3.11.4 react: 18.3.1 + drizzle-zod@0.5.1(drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.5.0)(mysql2@3.11.4)(react@18.3.1))(zod@3.23.8): + dependencies: + drizzle-orm: 0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.5.0)(mysql2@3.11.4)(react@18.3.1) + zod: 3.23.8 + eastasianwidth@0.2.0: {} effect@3.9.2: {} @@ -12448,6 +12489,19 @@ snapshots: graphemer@1.4.0: {} + h3@1.13.0: + dependencies: + cookie-es: 1.2.2 + crossws: 0.3.1 + defu: 6.1.4 + destr: 2.0.3 + iron-webcrypto: 1.2.1 + ohash: 1.1.4 + radix3: 1.1.2 + ufo: 1.5.4 + uncrypto: 0.1.3 + unenv: 1.10.0 + handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -12657,6 +12711,8 @@ snapshots: jsbn: 1.1.0 sprintf-js: 1.1.3 + iron-webcrypto@1.2.1: {} + is-alphabetical@1.0.4: {} is-alphanumerical@1.0.4: @@ -13147,6 +13203,8 @@ snapshots: mime@1.6.0: {} + mime@3.0.0: {} + mimic-fn@2.1.0: {} mimic-response@3.1.0: {} @@ -13374,10 +13432,8 @@ snapshots: loader-utils: 2.0.4 webpack: 5.94.0 - node-mocks-http@1.16.0: + node-mocks-http@1.16.1(@types/express@4.17.21)(@types/node@22.9.3): dependencies: - '@types/express': 4.17.21 - '@types/node': 22.9.3 accepts: 1.3.8 content-disposition: 0.5.4 depd: 1.1.2 @@ -13388,6 +13444,9 @@ snapshots: parseurl: 1.3.3 range-parser: 1.2.1 type-is: 1.6.18 + optionalDependencies: + '@types/express': 4.17.21 + '@types/node': 22.9.3 node-plop@0.26.3: dependencies: @@ -13472,6 +13531,8 @@ snapshots: node-fetch-native: 1.6.4 ufo: 1.5.4 + ohash@1.1.4: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -13492,7 +13553,9 @@ snapshots: dependencies: apg-lite: 1.0.4 - openapi-types@12.1.3: {} + openapi3-ts@4.3.3: + dependencies: + yaml: 2.5.1 optionator@0.9.4: dependencies: @@ -13622,8 +13685,6 @@ snapshots: pathval@2.0.0: {} - performance-now@2.1.0: {} - picocolors@1.0.1: {} picocolors@1.1.0: {} @@ -13886,7 +13947,7 @@ snapshots: dependencies: escape-goat: 2.1.1 - qs@6.13.0: + qs@6.13.1: dependencies: side-channel: 1.0.6 @@ -13896,6 +13957,8 @@ snapshots: queue-tick@1.0.1: {} + radix3@1.1.2: {} + ramda-adjunct@5.1.0(ramda@0.30.1): dependencies: ramda: 0.30.1 @@ -14863,17 +14926,19 @@ snapshots: triple-beam@1.4.1: {} - trpc-swagger@1.2.6(patch_hash=6s72z7zx33c52iesv5sewipn6i)(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(zod@3.23.8): + trpc-to-openapi@2.0.2(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.9.3)(zod@3.23.8): dependencies: - '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.643(typescript@5.7.2) - chalk-scripts: 1.2.8 co-body: 6.2.0 + h3: 1.13.0 lodash.clonedeep: 4.5.0 - node-mocks-http: 1.16.0 - openapi-types: 12.1.3 + node-mocks-http: 1.16.1(@types/express@4.17.21)(@types/node@22.9.3) + openapi3-ts: 4.3.3 zod: 3.23.8 - zod-to-json-schema: 3.23.3(zod@3.23.8) + zod-openapi: 2.19.0(zod@3.23.8) + transitivePeerDependencies: + - '@types/express' + - '@types/node' ts-api-utils@1.3.0(typescript@5.7.2): dependencies: @@ -15042,6 +15107,8 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + uncrypto@0.1.3: {} + undici-types@5.26.5: {} undici-types@6.19.8: {} @@ -15052,6 +15119,14 @@ snapshots: undici@6.21.0: {} + unenv@1.10.0: + dependencies: + consola: 3.2.3 + defu: 6.1.4 + mime: 3.0.0 + node-fetch-native: 1.6.4 + pathe: 1.1.2 + unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 @@ -15178,8 +15253,6 @@ snapshots: uuid@8.3.2: {} - uuid@9.0.1: {} - v8-compile-cache-lib@3.0.1: {} validate-npm-package-name@5.0.1: {} @@ -15535,7 +15608,7 @@ snapshots: dependencies: zod: 3.23.8 - zod-to-json-schema@3.23.3(zod@3.23.8): + zod-openapi@2.19.0(zod@3.23.8): dependencies: zod: 3.23.8 From 24daba743ed645e6a974bb212e28b745acdd34f7 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 24 Nov 2024 03:56:56 +0000 Subject: [PATCH 13/48] fix(deps): update tanstack-query monorepo to ^5.61.3 (#1536) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 6 ++-- pnpm-lock.yaml | 66 ++++++++++++++++++++-------------------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 6003e27fc..8f15b2a92 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -45,9 +45,9 @@ "@million/lint": "1.0.12", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.22.0", - "@tanstack/react-query": "^5.61.0", - "@tanstack/react-query-devtools": "^5.61.0", - "@tanstack/react-query-next-experimental": "5.61.0", + "@tanstack/react-query": "^5.61.3", + "@tanstack/react-query-devtools": "^5.61.3", + "@tanstack/react-query-next-experimental": "5.61.3", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eb2c5e3ec..08272528e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ importers: version: 4.3.3(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': specifier: ^2.1.5 - version: 2.1.5(vitest@2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 2.1.5(vitest@2.1.5) '@vitest/ui': specifier: ^2.1.5 version: 2.1.5(vitest@2.1.5) @@ -141,23 +141,23 @@ importers: specifier: ^3.22.0 version: 3.22.0(react@18.3.1) '@tanstack/react-query': - specifier: ^5.61.0 - version: 5.61.0(react@18.3.1) + specifier: ^5.61.3 + version: 5.61.3(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.61.0 - version: 5.61.0(@tanstack/react-query@5.61.0(react@18.3.1))(react@18.3.1) + specifier: ^5.61.3 + version: 5.61.3(@tanstack/react-query@5.61.3(react@18.3.1))(react@18.3.1) '@tanstack/react-query-next-experimental': - specifier: 5.61.0 - version: 5.61.0(@tanstack/react-query@5.61.0(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) + specifier: 5.61.3 + version: 5.61.3(@tanstack/react-query@5.61.3(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) '@trpc/client': specifier: next version: 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.643(typescript@5.7.2) @@ -506,7 +506,7 @@ importers: version: 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.643(typescript@5.7.2) @@ -3424,24 +3424,24 @@ packages: '@tanstack/query-core@5.60.6': resolution: {integrity: sha512-tI+k0KyCo1EBJ54vxK1kY24LWj673ujTydCZmzEZKAew4NqZzTaVQJEuaG1qKj2M03kUHN46rchLRd+TxVq/zQ==} - '@tanstack/query-devtools@5.59.20': - resolution: {integrity: sha512-vxhuQ+8VV4YWQSFxQLsuM+dnEKRY7VeRzpNabFXdhEwsBYLrjXlF1pM38A8WyKNLqZy8JjyRO8oP4Wd/oKHwuQ==} + '@tanstack/query-devtools@5.61.3': + resolution: {integrity: sha512-AoRco+DMw7Xy9fFs+5BxBop82YPKs1/tWpTPoO1iYVwPLmAU+znnLfWyZ8Qr5OiEqoS0dCyEe6F5V11/JkCK/A==} - '@tanstack/react-query-devtools@5.61.0': - resolution: {integrity: sha512-hd3yXl+KV+OGQmAw946qHAFp6DygcXcYN+1ai9idYddx6uEQyCwYk3jyIBOQEUw9uzN5DOGJLBsgd/QcimDQsA==} + '@tanstack/react-query-devtools@5.61.3': + resolution: {integrity: sha512-bR/TaiOSqTq0M5dmYY+pJeSnl5QAuCaRRmJg+Q5hEqt6uTHgKz5WO4jdi8BywRJiZhpXLirlUAIOXJsZ8ukqSA==} peerDependencies: - '@tanstack/react-query': ^5.61.0 + '@tanstack/react-query': ^5.61.3 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.61.0': - resolution: {integrity: sha512-jR1KHeeUgj/Dec5P/cWZF4hx6I9KS+NWfjlwS3PWdoJKBn6OKWqn4na/pFsPk1KNZVcNv+C9pHxBBY3/gU48nQ==} + '@tanstack/react-query-next-experimental@5.61.3': + resolution: {integrity: sha512-VO3Xc0oZA8r493lx5AUU9UhrcZhAkiApjsliuHC2vurNSdbJnR4Khzl8lzLe84AgyTpnmIVbSHSf1+IlurluOg==} peerDependencies: - '@tanstack/react-query': ^5.61.0 + '@tanstack/react-query': ^5.61.3 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.61.0': - resolution: {integrity: sha512-SBzV27XAeCRBOQ8QcC94w2H1Md0+LI0gTWwc3qRJoaGuewKn5FNW4LSqwPFJZVEItfhMfGT7RpZuSFXjTi12pQ==} + '@tanstack/react-query@5.61.3': + resolution: {integrity: sha512-c3Oz9KaCBapGkRewu7AJLhxE9BVqpMcHsd3KtFxSd7FSCu2qGwqfIN37zbSGoyk6Ix9LGZBNHQDPI6GpWABnmA==} peerDependencies: react: ^18 || ^19 @@ -10005,21 +10005,21 @@ snapshots: '@tanstack/query-core@5.60.6': {} - '@tanstack/query-devtools@5.59.20': {} + '@tanstack/query-devtools@5.61.3': {} - '@tanstack/react-query-devtools@5.61.0(@tanstack/react-query@5.61.0(react@18.3.1))(react@18.3.1)': + '@tanstack/react-query-devtools@5.61.3(@tanstack/react-query@5.61.3(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/query-devtools': 5.59.20 - '@tanstack/react-query': 5.61.0(react@18.3.1) + '@tanstack/query-devtools': 5.61.3 + '@tanstack/react-query': 5.61.3(react@18.3.1) react: 18.3.1 - '@tanstack/react-query-next-experimental@5.61.0(@tanstack/react-query@5.61.0(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1)': + '@tanstack/react-query-next-experimental@5.61.3(@tanstack/react-query@5.61.3(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1)': dependencies: - '@tanstack/react-query': 5.61.0(react@18.3.1) + '@tanstack/react-query': 5.61.3(react@18.3.1) next: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 - '@tanstack/react-query@5.61.0(react@18.3.1)': + '@tanstack/react-query@5.61.3(react@18.3.1)': dependencies: '@tanstack/query-core': 5.60.6 react: 18.3.1 @@ -10260,7 +10260,7 @@ snapshots: '@trpc/server': 11.0.0-rc.643(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.643(typescript@5.7.2) @@ -10269,12 +10269,12 @@ snapshots: react-dom: 18.3.1(react@18.3.1) typescript: 5.7.2 optionalDependencies: - '@tanstack/react-query': 5.61.0(react@18.3.1) - '@trpc/react-query': 11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + '@tanstack/react-query': 5.61.3(react@18.3.1) + '@trpc/react-query': 11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.0(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: - '@tanstack/react-query': 5.61.0(react@18.3.1) + '@tanstack/react-query': 5.61.3(react@18.3.1) '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.643(typescript@5.7.2) react: 18.3.1 @@ -10657,7 +10657,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@2.1.5(vitest@2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitest/coverage-v8@2.1.5(vitest@2.1.5)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 From 2e2814707e0a5c2c38ccefcf0387cc0dab195fb9 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 24 Nov 2024 10:49:24 +0000 Subject: [PATCH 14/48] fix(deps): update mantine monorepo to ^7.14.2 (#1537) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 10 +- packages/form/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/modals/package.json | 4 +- packages/notifications/package.json | 2 +- packages/spotlight/package.json | 6 +- packages/ui/package.json | 6 +- packages/widgets/package.json | 4 +- pnpm-lock.yaml | 220 ++++++++++++------------ 9 files changed, 128 insertions(+), 128 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 8f15b2a92..a3a687e5d 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -37,11 +37,11 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0", - "@mantine/colors-generator": "^7.14.1", - "@mantine/core": "^7.14.1", - "@mantine/hooks": "^7.14.1", - "@mantine/modals": "^7.14.1", - "@mantine/tiptap": "^7.14.1", + "@mantine/colors-generator": "^7.14.2", + "@mantine/core": "^7.14.2", + "@mantine/hooks": "^7.14.2", + "@mantine/modals": "^7.14.2", + "@mantine/tiptap": "^7.14.2", "@million/lint": "1.0.12", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.22.0", diff --git a/packages/form/package.json b/packages/form/package.json index d1cda9483..60be15dad 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -24,7 +24,7 @@ "dependencies": { "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/form": "^7.14.1" + "@mantine/form": "^7.14.2" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 22b859f61..521214a87 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -30,7 +30,7 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.14.1", + "@mantine/core": "^7.14.2", "@tabler/icons-react": "^3.22.0", "dayjs": "^1.11.13", "next": "^14.2.18", diff --git a/packages/modals/package.json b/packages/modals/package.json index ac78df086..0078cccc9 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.14.1", - "@mantine/hooks": "^7.14.1", + "@mantine/core": "^7.14.2", + "@mantine/hooks": "^7.14.2", "react": "^18.3.1" }, "devDependencies": { diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 1bef45669..dd1c506da 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.14.1", + "@mantine/notifications": "^7.14.2", "@tabler/icons-react": "^3.22.0" }, "devDependencies": { diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 410931cdb..a7b7b54e5 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -31,9 +31,9 @@ "@homarr/modals-collection": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^7.14.1", - "@mantine/hooks": "^7.14.1", - "@mantine/spotlight": "^7.14.1", + "@mantine/core": "^7.14.2", + "@mantine/hooks": "^7.14.2", + "@mantine/spotlight": "^7.14.2", "@tabler/icons-react": "^3.22.0", "jotai": "^2.10.3", "next": "^14.2.18", diff --git a/packages/ui/package.json b/packages/ui/package.json index fac08bf0a..2d417d2f0 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -28,9 +28,9 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.14.1", - "@mantine/dates": "^7.14.1", - "@mantine/hooks": "^7.14.1", + "@mantine/core": "^7.14.2", + "@mantine/dates": "^7.14.2", + "@mantine/hooks": "^7.14.2", "@tabler/icons-react": "^3.22.0", "mantine-react-table": "2.0.0-beta.7", "next": "^14.2.18", diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 81873c308..4626686bd 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -41,8 +41,8 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.14.1", - "@mantine/hooks": "^7.14.1", + "@mantine/core": "^7.14.2", + "@mantine/hooks": "^7.14.2", "@tabler/icons-react": "^3.22.0", "@tiptap/extension-color": "2.10.2", "@tiptap/extension-highlight": "2.10.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 08272528e..72ac605da 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -117,20 +117,20 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/widgets '@mantine/colors-generator': - specifier: ^7.14.1 - version: 7.14.1(chroma-js@3.1.2) + specifier: ^7.14.2 + version: 7.14.2(chroma-js@3.1.2) '@mantine/core': - specifier: ^7.14.1 - version: 7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': - specifier: ^7.14.1 - version: 7.14.1(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(react@18.3.1) '@mantine/modals': - specifier: ^7.14.1 - version: 7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/tiptap': - specifier: ^7.14.1 - version: 7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(@tiptap/extension-link@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2))(@tiptap/react@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tiptap/extension-link@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2))(@tiptap/react@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@million/lint': specifier: 1.0.12 version: 1.0.12(rollup@4.21.3)(webpack-sources@3.2.3) @@ -193,7 +193,7 @@ importers: version: 2.10.3(@types/react@18.3.12)(react@18.3.1) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) @@ -938,8 +938,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/form': - specifier: ^7.14.1 - version: 7.14.1(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(react@18.3.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1077,11 +1077,11 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.14.1 - version: 7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': - specifier: ^7.14.1 - version: 7.14.1(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -1132,8 +1132,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.14.1 - version: 7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tabler/icons-react': specifier: ^3.22.0 version: 3.22.0(react@18.3.1) @@ -1169,8 +1169,8 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/notifications': - specifier: ^7.14.1 - version: 7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tabler/icons-react': specifier: ^3.22.0 version: 3.22.0(react@18.3.1) @@ -1413,14 +1413,14 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.14.1 - version: 7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': - specifier: ^7.14.1 - version: 7.14.1(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(react@18.3.1) '@mantine/spotlight': - specifier: ^7.14.1 - version: 7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tabler/icons-react': specifier: ^3.22.0 version: 3.22.0(react@18.3.1) @@ -1469,7 +1469,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) @@ -1514,20 +1514,20 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.14.1 - version: 7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/dates': - specifier: ^7.14.1 - version: 7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': - specifier: ^7.14.1 - version: 7.14.1(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(react@18.3.1) '@tabler/icons-react': specifier: ^3.22.0 version: 3.22.0(react@18.3.1) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) @@ -1642,11 +1642,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.14.1 - version: 7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': - specifier: ^7.14.1 - version: 7.14.1(react@18.3.1) + specifier: ^7.14.2 + version: 7.14.2(react@18.3.1) '@tabler/icons-react': specifier: ^3.22.0 version: 3.22.0(react@18.3.1) @@ -1703,7 +1703,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) @@ -2822,8 +2822,8 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/react@0.26.27': - resolution: {integrity: sha512-jLP72x0Kr2CgY6eTYi/ra3VA9LOkTo4C+DUTrbFgFOExKy3omYVmwMjNKqxAHdsnyLS96BIDLcO2SlnsNf8KUQ==} + '@floating-ui/react@0.26.28': + resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -2935,71 +2935,71 @@ packages: '@libsql/core@0.14.0': resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} - '@mantine/colors-generator@7.14.1': - resolution: {integrity: sha512-WcOyv0HpSmoraZCX2GMJrmNguY4Syaz+hPdSZ6/RaQwOiXdswCZhrYkWjIO+yGKhu0pAD+rsTD0fdLtkFBKT3g==} + '@mantine/colors-generator@7.14.2': + resolution: {integrity: sha512-ny4txQkXm02IQikgf7yFXBvXUXqD/5mof/RSFiRcmzzSAGL7v4apDYrFyJfsTvyvPKUaGUqPwKbFqkWIaTBLew==} peerDependencies: chroma-js: '>=2.4.2' - '@mantine/core@7.14.1': - resolution: {integrity: sha512-oHqaOE1n4KJkvJgF628OCVXE2zUgkEotEsPUdVaC58qRfJ7SvZAI26JNbUG8+MoqHHEqHKtBaRkTyuEVMbomxw==} + '@mantine/core@7.14.2': + resolution: {integrity: sha512-lq5l8T6TRkaCbs3HeaRDvUG80JbrwCxQPF5pwNP4yRrdln99hWpGtyNm0DSfcN5u1eOQRudOtAc+R8TfU+2GXw==} peerDependencies: - '@mantine/hooks': 7.14.1 + '@mantine/hooks': 7.14.2 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dates@7.14.1': - resolution: {integrity: sha512-NtQWisJi0DmYehShmYvHM6bvUsVE864kW4NJc8rbatFL7/bhCp9U49s6vqpz6B1GxZ2WfiQZtjPE1FLInWX+Pw==} + '@mantine/dates@7.14.2': + resolution: {integrity: sha512-tyEA/HuG5yXJNV0PKRfJEwER5+uQoxd9bmM3O90F5yC652H4Kxlt//yN2bf67yt/WFx7SQGid1ESFbj4od7w3A==} peerDependencies: - '@mantine/core': 7.14.1 - '@mantine/hooks': 7.14.1 + '@mantine/core': 7.14.2 + '@mantine/hooks': 7.14.2 dayjs: '>=1.0.0' react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/form@7.14.1': - resolution: {integrity: sha512-ziYsTsFhR1sEjGebwahKr7LRRFQQtH47o+rPLbvD0FGb6aYRVQgaebQo4jVgxFIgqiafxGNEpD6GkPBqmCmU4g==} + '@mantine/form@7.14.2': + resolution: {integrity: sha512-IXgvEjIivXBNU4+sRinXGCSziRpx+pVeazuZixU3BxiSBap36gLxCbcWiyG3PkI4NkfI70YTTWFFeX39C06lzg==} peerDependencies: react: ^18.x || ^19.x - '@mantine/hooks@7.14.1': - resolution: {integrity: sha512-VlgTyV/9WNFCwCshW1KHMYNzLt+M8aG68E1lWaqOXtyWSLJo+X5zQJGg0f8bwGbJvIMQCpQd0yTLfnjD6uAtrA==} + '@mantine/hooks@7.14.2': + resolution: {integrity: sha512-WN0bEJHw2Lh/2PLqik8rqITJRZAu6A1FK6f+H0SNTrQuWYBPSHdNTqM8hntDnhpM/2mZ52t3VWYgvNVGczLxIw==} peerDependencies: react: ^18.x || ^19.x - '@mantine/modals@7.14.1': - resolution: {integrity: sha512-jpcRS5fzD+CPRJ7mebA9lt0bmSI+2lJVZloG7SPIY3S66ZtUsEis0fHkDtuAqGANbhr43Enjhno0M+4x9IzuZw==} + '@mantine/modals@7.14.2': + resolution: {integrity: sha512-Sr8JRS5waZGnUZwKK9tB2m/Z78l3lkg4TZsrtJiTivaM6+xSyANSiGuVLtiCpsZ/CdtrG9KVcm7wzZilLhpWTA==} peerDependencies: - '@mantine/core': 7.14.1 - '@mantine/hooks': 7.14.1 + '@mantine/core': 7.14.2 + '@mantine/hooks': 7.14.2 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/notifications@7.14.1': - resolution: {integrity: sha512-08suBIh/EJuTnzF1/Aao73S534KXvD7MiEaRNPXG+vBFz57Lu4DOtyLG4mXju6eNK99KJziVlK7CMIv6ADcQNg==} + '@mantine/notifications@7.14.2': + resolution: {integrity: sha512-BXafA7YeDNwziFkZ0BnK5iEN0Cw3CRk/pnZ6E6u9eGCve5iMkaCTk0LaKnT2DPmPaAqEgmnnRduy6Akaalzjhw==} peerDependencies: - '@mantine/core': 7.14.1 - '@mantine/hooks': 7.14.1 + '@mantine/core': 7.14.2 + '@mantine/hooks': 7.14.2 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/spotlight@7.14.1': - resolution: {integrity: sha512-yQ7ROtlxn1KclEtPs8RN+yUvkwopvXvM2qqjKrDa/XtvugjYICcJzyop4W+uzddekrlk55Y0qaSAzMBUpqZg/w==} + '@mantine/spotlight@7.14.2': + resolution: {integrity: sha512-wGr5d8W8/OiquNilBGv6sBD2Sl5RlsGiySEGDzeF6N2eFzkyIuKQzUM8zKlmJTRsoEmojIvvVfXSubB78KlBzw==} peerDependencies: - '@mantine/core': 7.14.1 - '@mantine/hooks': 7.14.1 + '@mantine/core': 7.14.2 + '@mantine/hooks': 7.14.2 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/store@7.14.1': - resolution: {integrity: sha512-wpemDaqOJc1zsvnjaic1+KRQSy7dZhQ4XDwxqqq5MwG6aImCHqEBVf17Qhj3sDjpA7pnpxnKAHotLqfzjQn3dQ==} + '@mantine/store@7.14.2': + resolution: {integrity: sha512-OCur2rymfOw+tEFDQjUvVoAGl9DRnyIZ6gJyGaj73hrxSMUyrdsekdYwN5HpbI6qXqW0h7u1aV0tNf0vvIUQDA==} peerDependencies: react: ^18.x || ^19.x - '@mantine/tiptap@7.14.1': - resolution: {integrity: sha512-pwhvR1Om8XOD6QCDWUdWKyq/djV0Gm2Z5HjziDkAJtiUfj5IWkxPinAF7lkV/9XDafo4oa3hyOA6XegdInE0rw==} + '@mantine/tiptap@7.14.2': + resolution: {integrity: sha512-taONFBdyk+YKVTp0dfLXKtZNp1wuPYhVUqoFkTztUCX9snD+92jJTtLflqLGcaP4KhitEgj2rRzJF8gX61cxIA==} peerDependencies: - '@mantine/core': 7.14.1 - '@mantine/hooks': 7.14.1 + '@mantine/core': 7.14.2 + '@mantine/hooks': 7.14.2 '@tiptap/extension-link': '>=2.1.12' '@tiptap/react': '>=2.1.12' react: ^18.x || ^19.x @@ -7055,8 +7055,8 @@ packages: peerDependencies: react: '>= 0.14.0' - react-textarea-autosize@8.5.4: - resolution: {integrity: sha512-eSSjVtRLcLfFwFcariT77t9hcbVJHQV76b51QjQGarQIHml2+gM2lms0n3XrhnDmgK5B+/Z7TmQk5OHNzqYm/A==} + react-textarea-autosize@8.5.5: + resolution: {integrity: sha512-CVA94zmfp8m4bSHtWwmANaBR8EPsKy2aZ7KwqhoS4Ftib87F9Kvi7XQhOixypPLMc6kVYgOXvKFuuzZDpHGRPg==} engines: {node: '>=10'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -7855,8 +7855,8 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - type-fest@4.26.1: - resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} + type-fest@4.28.0: + resolution: {integrity: sha512-jXMwges/FVbFRe5lTMJZVEZCrO9kI9c8k0PA/z7nF3bo0JSCCLysvokFjNPIUK/itEMas10MQM+AiHoHt/T/XA==} engines: {node: '>=16'} type-is@1.6.18: @@ -9182,7 +9182,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@floating-ui/react@0.26.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react@0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@floating-ui/utils': 0.2.8 @@ -9304,75 +9304,75 @@ snapshots: js-base64: 3.7.7 optional: true - '@mantine/colors-generator@7.14.1(chroma-js@3.1.2)': + '@mantine/colors-generator@7.14.2(chroma-js@3.1.2)': dependencies: chroma-js: 3.1.2 - '@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/react': 0.26.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.1(react@18.3.1) + '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.2(react@18.3.1) clsx: 2.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-number-format: 5.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) - react-textarea-autosize: 8.5.4(@types/react@18.3.12)(react@18.3.1) - type-fest: 4.26.1 + react-textarea-autosize: 8.5.5(@types/react@18.3.12)(react@18.3.1) + type-fest: 4.28.0 transitivePeerDependencies: - '@types/react' - '@mantine/dates@7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@mantine/core': 7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.1(react@18.3.1) + '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.2(react@18.3.1) clsx: 2.1.1 dayjs: 1.11.13 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@mantine/form@7.14.1(react@18.3.1)': + '@mantine/form@7.14.2(react@18.3.1)': dependencies: fast-deep-equal: 3.1.3 klona: 2.0.6 react: 18.3.1 - '@mantine/hooks@7.14.1(react@18.3.1)': + '@mantine/hooks@7.14.2(react@18.3.1)': dependencies: react: 18.3.1 - '@mantine/modals@7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/modals@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@mantine/core': 7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.1(react@18.3.1) + '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.2(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@mantine/notifications@7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/notifications@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@mantine/core': 7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.1(react@18.3.1) - '@mantine/store': 7.14.1(react@18.3.1) + '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.2(react@18.3.1) + '@mantine/store': 7.14.2(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/spotlight@7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/spotlight@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@mantine/core': 7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.1(react@18.3.1) - '@mantine/store': 7.14.1(react@18.3.1) + '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.2(react@18.3.1) + '@mantine/store': 7.14.2(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@mantine/store@7.14.1(react@18.3.1)': + '@mantine/store@7.14.2(react@18.3.1)': dependencies: react: 18.3.1 - '@mantine/tiptap@7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(@tiptap/extension-link@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2))(@tiptap/react@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/tiptap@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tiptap/extension-link@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2))(@tiptap/react@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@mantine/core': 7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.1(react@18.3.1) + '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.2(react@18.3.1) '@tiptap/extension-link': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2) '@tiptap/react': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 @@ -13155,11 +13155,11 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.7(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + mantine-react-table@2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@mantine/core': 7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/dates': 7.14.1(@mantine/core@7.14.1(@mantine/hooks@7.14.1(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.1(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.1(react@18.3.1) + '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/dates': 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.2(react@18.3.1) '@tabler/icons-react': 3.22.0(react@18.3.1) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -14088,7 +14088,7 @@ snapshots: react: 18.3.1 refractor: 3.6.0 - react-textarea-autosize@8.5.4(@types/react@18.3.12)(react@18.3.1): + react-textarea-autosize@8.5.5(@types/react@18.3.12)(react@18.3.1): dependencies: '@babel/runtime': 7.25.6 react: 18.3.1 @@ -15031,7 +15031,7 @@ snapshots: type-fest@0.21.3: {} - type-fest@4.26.1: {} + type-fest@4.28.0: {} type-is@1.6.18: dependencies: From 32e6b8ee45cac46cf71fd5c6cd71558c352b4097 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 24 Nov 2024 13:43:25 +0100 Subject: [PATCH 15/48] fix: external users can be added to groups manually (#1540) --- .../manage/users/groups/[id]/members/_add-group-member.tsx | 1 + apps/nextjs/src/components/access/user-select-modal.tsx | 5 ++++- packages/api/src/router/user.ts | 5 +++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/_add-group-member.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/_add-group-member.tsx index 745af9e3e..4dddfdca3 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/_add-group-member.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/_add-group-member.tsx @@ -32,6 +32,7 @@ export const AddGroupMember = ({ groupId, presentUserIds }: AddGroupMemberProps) await revalidatePathActionAsync(`/manage/users/groups/${groupId}}/members`); }, presentUserIds, + excludeExternalProviders: true, }, { title: tMembersAdd("label"), diff --git a/apps/nextjs/src/components/access/user-select-modal.tsx b/apps/nextjs/src/components/access/user-select-modal.tsx index b586e47d5..22f22a1e1 100644 --- a/apps/nextjs/src/components/access/user-select-modal.tsx +++ b/apps/nextjs/src/components/access/user-select-modal.tsx @@ -12,6 +12,7 @@ import { UserAvatar } from "@homarr/ui"; interface InnerProps { presentUserIds: string[]; + excludeExternalProviders?: boolean; onSelect: (props: { id: string; name: string; image: string }) => void | Promise; confirmLabel?: string; } @@ -22,7 +23,9 @@ interface UserSelectFormType { export const UserSelectModal = createModal(({ actions, innerProps }) => { const t = useI18n(); - const { data: users, isPending } = clientApi.user.selectable.useQuery(); + const { data: users, isPending } = clientApi.user.selectable.useQuery({ + excludeExternalProviders: innerProps.excludeExternalProviders, + }); const [loading, setLoading] = useState(false); const form = useForm(); const handleSubmitAsync = async (values: UserSelectFormType) => { diff --git a/packages/api/src/router/user.ts b/packages/api/src/router/user.ts index 9a17e3caa..3939343c2 100644 --- a/packages/api/src/router/user.ts +++ b/packages/api/src/router/user.ts @@ -160,16 +160,17 @@ export const userRouter = createTRPCRouter({ }), // Is protected because also used in board access / integration access forms selectable: protectedProcedure - .input(z.undefined()) + .input(z.object({ excludeExternalProviders: z.boolean().default(false) }).optional()) .output(z.array(selectUserSchema.pick({ id: true, name: true, image: true }))) .meta({ openapi: { method: "GET", path: "/api/users/selectable", tags: ["users"], protect: true } }) - .query(({ ctx }) => { + .query(({ ctx, input }) => { return ctx.db.query.users.findMany({ columns: { id: true, name: true, image: true, }, + where: input?.excludeExternalProviders ? eq(users.provider, "credentials") : undefined, }); }), search: permissionRequiredProcedure From 225356cc4f49a8a8178f9d7dffc3283bc641b3d0 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 24 Nov 2024 13:43:50 +0100 Subject: [PATCH 16/48] fix: add beforeunload logic for board in edit mode (#1531) --- .../boards/(content)/_header-actions.tsx | 68 ++++++++++++++++++- .../src/components/user-avatar-menu.tsx | 3 +- packages/translation/src/lang/en.json | 4 ++ 3 files changed, 72 insertions(+), 3 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx index 0782c1f94..e951a4318 100644 --- a/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx +++ b/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx @@ -1,6 +1,8 @@ "use client"; -import { useCallback } from "react"; +import type { MouseEvent } from "react"; +import { useCallback, useEffect } from "react"; +import { useRouter } from "next/navigation"; import { Group, Menu } from "@mantine/core"; import { useHotkeys } from "@mantine/hooks"; import { @@ -16,7 +18,7 @@ import { import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; -import { useModalAction } from "@homarr/modals"; +import { useConfirmModal, useModalAction } from "@homarr/modals"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; @@ -26,6 +28,7 @@ import { useCategoryActions } from "~/components/board/sections/category/categor import { CategoryEditModal } from "~/components/board/sections/category/category-edit-modal"; import { useDynamicSectionActions } from "~/components/board/sections/dynamic/dynamic-actions"; import { HeaderButton } from "~/components/layout/header/button"; +import { env } from "~/env.mjs"; import { useEditMode, useRequiredBoard } from "./_context"; export const BoardContentHeaderActions = () => { @@ -139,6 +142,7 @@ const EditModeMenu = () => { }, [board, isEditMode, saveBoard, setEditMode]); useHotkeys([["mod+e", toggle]]); + usePreventLeaveWithDirty(isEditMode); return ( @@ -146,3 +150,63 @@ const EditModeMenu = () => { ); }; + +const usePreventLeaveWithDirty = (isDirty: boolean) => { + const t = useI18n(); + const { openConfirmModal } = useConfirmModal(); + const router = useRouter(); + + useEffect(() => { + const handleClick = (event: MouseEvent) => { + const target = (event.target as HTMLElement).closest("a"); + + if (!target) return; + if (!isDirty) return; + + event.preventDefault(); + + openConfirmModal({ + title: t("board.action.edit.confirmLeave.title"), + children: t("board.action.edit.confirmLeave.message"), + onConfirm() { + router.push(target.href); + }, + confirmProps: { + children: t("common.action.discard"), + }, + }); + }; + + const handlePopState = (event: Event) => { + if (isDirty) { + window.history.pushState(null, document.title, window.location.href); + event.preventDefault(); + } else { + window.history.back(); + } + }; + + const handleBeforeUnload = (event: BeforeUnloadEvent) => { + if (!isDirty) return; + if (env.NODE_ENV === "development") return; // Allow to reload in development + + event.preventDefault(); + event.returnValue = true; + }; + + document.querySelectorAll("a").forEach((link) => { + link.addEventListener("click", handleClick as never); + }); + window.addEventListener("popstate", handlePopState); + window.addEventListener("beforeunload", handleBeforeUnload); + + return () => { + document.querySelectorAll("a").forEach((link) => { + link.removeEventListener("click", handleClick as never); + window.removeEventListener("popstate", handlePopState); + }); + window.removeEventListener("beforeunload", handleBeforeUnload); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isDirty]); +}; diff --git a/apps/nextjs/src/components/user-avatar-menu.tsx b/apps/nextjs/src/components/user-avatar-menu.tsx index 63b089883..503642482 100644 --- a/apps/nextjs/src/components/user-avatar-menu.tsx +++ b/apps/nextjs/src/components/user-avatar-menu.tsx @@ -61,7 +61,8 @@ export const UserAvatarMenu = ({ children }: UserAvatarMenuProps) => { }, [logoutUrl, openModal, router]); return ( - + // We use keepMounted so we can add event listeners to prevent navigating away without saving the board + }> {colorSchemeText} diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index d09867d96..0ec22920c 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1563,6 +1563,10 @@ "title": "Unable to apply changes", "message": "The board could not be saved" } + }, + "confirmLeave": { + "title": "Unsaved changes", + "message": "You have unsaved changes, are you sure you want to leave?" } }, "oldImport": { From ecf299e03b5906a7f006397ef1df463a2c531468 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 24 Nov 2024 13:44:15 +0100 Subject: [PATCH 17/48] fix: icon picker suspense issue (#1533) * fix: icon picker suspense issue * fix: remove unused variable --- .../components/icons/picker/icon-picker.tsx | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/apps/nextjs/src/components/icons/picker/icon-picker.tsx b/apps/nextjs/src/components/icons/picker/icon-picker.tsx index bd77a27d5..8a514f8a5 100644 --- a/apps/nextjs/src/components/icons/picker/icon-picker.tsx +++ b/apps/nextjs/src/components/icons/picker/icon-picker.tsx @@ -15,6 +15,7 @@ import { UnstyledButton, useCombobox, } from "@mantine/core"; +import { useDebouncedValue } from "@mantine/hooks"; import { clientApi } from "@homarr/api/client"; import { useScopedI18n } from "@homarr/translation/client"; @@ -34,16 +35,19 @@ export const IconPicker = ({ initialValue, onChange, error, onFocus, onBlur }: I const tCommon = useScopedI18n("common"); - const [data] = clientApi.icon.findIcons.useSuspenseQuery({ - searchText: search, + const [debouncedSearch] = useDebouncedValue(search, 100); + + // We use not useSuspenseQuery as it would cause an above Suspense boundary to trigger and so searching for something is bad UX. + const { data } = clientApi.icon.findIcons.useQuery({ + searchText: debouncedSearch, }); const combobox = useCombobox({ onDropdownClose: () => combobox.resetSelectedOption(), }); - const totalOptions = data.icons.reduce((acc, group) => acc + group.icons.length, 0); - const groups = data.icons.map((group) => { + const totalOptions = data?.icons.reduce((acc, group) => acc + group.icons.length, 0) ?? 0; + const groups = data?.icons.map((group) => { const options = group.icons.map((item) => ( { @@ -92,8 +96,12 @@ export const IconPicker = ({ initialValue, onChange, error, onFocus, onBlur }: I } - // eslint-disable-next-line @next/next/no-img-element - leftSection={previewUrl ? : null} + leftSection={ + previewUrl ? ( + // eslint-disable-next-line @next/next/no-img-element + + ) : null + } value={search} onChange={(event) => { combobox.openDropdown(); @@ -118,7 +126,7 @@ export const IconPicker = ({ initialValue, onChange, error, onFocus, onBlur }: I withAsterisk error={error} label={tCommon("iconPicker.label")} - placeholder={tCommon("iconPicker.header", { countIcons: data.countIcons })} + placeholder={tCommon("iconPicker.header", { countIcons: data?.countIcons ?? 0 })} /> From 1c4d4f4e9d39d52d6a8e69f06c1d6246c774ed79 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 24 Nov 2024 13:44:43 +0100 Subject: [PATCH 18/48] fix: rename default to home board (#1538) --- .../src/app/[locale]/boards/[name]/settings/page.tsx | 2 +- .../manage/settings/_components/board-settings-form.tsx | 6 +++--- packages/api/src/router/board.ts | 8 ++++---- packages/api/src/router/test/board.spec.ts | 2 +- packages/server-settings/src/index.ts | 2 +- packages/translation/src/lang/en.json | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx b/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx index 002c5f4c8..06255e0ff 100644 --- a/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx +++ b/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx @@ -95,7 +95,7 @@ export default async function BoardSettingsPage({ params, searchParams }: Props) - + )} diff --git a/apps/nextjs/src/app/[locale]/manage/settings/_components/board-settings-form.tsx b/apps/nextjs/src/app/[locale]/manage/settings/_components/board-settings-form.tsx index d91d94196..8890cbce0 100644 --- a/apps/nextjs/src/app/[locale]/manage/settings/_components/board-settings-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/settings/_components/board-settings-form.tsx @@ -19,8 +19,8 @@ export const BoardSettingsForm = ({ defaultValues }: { defaultValues: ServerSett {(form) => ( <> ({ value: board.id, label: board.name, @@ -35,7 +35,7 @@ export const BoardSettingsForm = ({ defaultValues }: { defaultValues: ServerSett )} - {...form.getInputProps("defaultBoardId")} + {...form.getInputProps("homeBoardId")} /> )} diff --git a/packages/api/src/router/board.ts b/packages/api/src/router/board.ts index 7ab693bde..accbf7aa3 100644 --- a/packages/api/src/router/board.ts +++ b/packages/api/src/router/board.ts @@ -229,10 +229,10 @@ export const boardRouter = createTRPCRouter({ await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "full"); const boardSettings = await getServerSettingByKeyAsync(ctx.db, "board"); - if (input.visibility !== "public" && boardSettings.defaultBoardId === input.id) { + if (input.visibility !== "public" && boardSettings.homeBoardId === input.id) { throw new TRPCError({ code: "BAD_REQUEST", - message: "Cannot make default board private", + message: "Cannot make home board private", }); } @@ -259,13 +259,13 @@ export const boardRouter = createTRPCRouter({ }) : null; - // 1. user home board, 2. default board, 3. not found + // 1. user home board, 2. home board, 3. not found let boardWhere: SQL | null = null; if (user?.homeBoardId) { boardWhere = eq(boards.id, user.homeBoardId); } else { const boardSettings = await getServerSettingByKeyAsync(ctx.db, "board"); - boardWhere = boardSettings.defaultBoardId ? eq(boards.id, boardSettings.defaultBoardId) : null; + boardWhere = boardSettings.homeBoardId ? eq(boards.id, boardSettings.homeBoardId) : null; } if (!boardWhere) { diff --git a/packages/api/src/router/test/board.spec.ts b/packages/api/src/router/test/board.spec.ts index 034fc585b..c8a50ca25 100644 --- a/packages/api/src/router/test/board.spec.ts +++ b/packages/api/src/router/test/board.spec.ts @@ -507,7 +507,7 @@ describe("getHomeBoard should return home board", () => { const fullBoardProps = await createFullBoardAsync(db, "home"); await db.insert(serverSettings).values({ settingKey: "board", - value: SuperJSON.stringify({ defaultBoardId: fullBoardProps.boardId }), + value: SuperJSON.stringify({ homeBoardId: fullBoardProps.boardId }), }); // Act diff --git a/packages/server-settings/src/index.ts b/packages/server-settings/src/index.ts index 9d3c61373..779490f00 100644 --- a/packages/server-settings/src/index.ts +++ b/packages/server-settings/src/index.ts @@ -25,7 +25,7 @@ export const defaultServerSettings = { noSiteLinksSearchBox: false, }, board: { - defaultBoardId: null as string | null, + homeBoardId: null as string | null, }, appearance: { defaultColorScheme: "light" as ColorScheme, diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 0ec22920c..7b8655ed1 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -2075,8 +2075,8 @@ }, "board": { "title": "Boards", - "defaultBoard": { - "label": "Global default board", + "homeBoard": { + "label": "Global home board", "description": "Only public boards are available for selection" } }, From 74e1b6b54494455fecc37f673569482c3fad1ce4 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 24 Nov 2024 13:45:00 +0100 Subject: [PATCH 19/48] fix: transfer group not invalidating path (#1539) --- .../manage/users/groups/[id]/_transfer-group-ownership.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/_transfer-group-ownership.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/_transfer-group-ownership.tsx index a3a860d2b..9074c9ecf 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/_transfer-group-ownership.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/_transfer-group-ownership.tsx @@ -4,6 +4,7 @@ import { useCallback, useState } from "react"; import { Button, useMatches } from "@mantine/core"; import { clientApi } from "@homarr/api/client"; +import { revalidatePathActionAsync } from "@homarr/common/client"; import { useConfirmModal, useModalAction } from "@homarr/modals"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; @@ -46,7 +47,7 @@ export const TransferGroupOwnership = ({ group }: TransferGroupOwnershipProps) = userId: id, }, { - onSuccess() { + async onSuccess() { setInnerOwnerId(id); showSuccessNotification({ title: tRoot("common.notification.transfer.success"), @@ -55,6 +56,7 @@ export const TransferGroupOwnership = ({ group }: TransferGroupOwnershipProps) = user: name, }), }); + await revalidatePathActionAsync(`/manage/users/groups/${group.id}`); }, onError() { showErrorNotification({ From b68977c52c84ae9742fd52b554d4838409ab76a6 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 24 Nov 2024 13:47:50 +0100 Subject: [PATCH 20/48] fix(deps): update dependency @dnd-kit/sortable to v9 (#1535) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 4626686bd..08ff3448d 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -25,7 +25,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@dnd-kit/core": "^6.2.0", - "@dnd-kit/sortable": "^8.0.0", + "@dnd-kit/sortable": "^9.0.0", "@extractus/feed-extractor": "^7.1.3", "@homarr/api": "workspace:^0.1.0", "@homarr/auth": "workspace:^0.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 72ac605da..527a2a5e9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1594,8 +1594,8 @@ importers: specifier: ^6.2.0 version: 6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dnd-kit/sortable': - specifier: ^8.0.0 - version: 8.0.0(@dnd-kit/core@6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + specifier: ^9.0.0 + version: 9.0.0(@dnd-kit/core@6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@extractus/feed-extractor': specifier: ^7.1.3 version: 7.1.3 @@ -2053,10 +2053,10 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - '@dnd-kit/sortable@8.0.0': - resolution: {integrity: sha512-U3jk5ebVXe1Lr7c2wU7SBZjcWdQP+j7peHJfCspnA81enlu88Mgd7CC8Q+pub9ubP7eKVETzJW+IBAhsqbSu/g==} + '@dnd-kit/sortable@9.0.0': + resolution: {integrity: sha512-3/9r8Mmba0nKTbo8kPnVSFZKf/VSy94nXZ3aUwzPEh78j/LooQ/EFKRZENak4PHKBkN53mgTF/z+Sd8H+FcAnQ==} peerDependencies: - '@dnd-kit/core': ^6.1.0 + '@dnd-kit/core': ^6.2.0 react: '>=16.8.0' '@dnd-kit/utilities@3.2.2': @@ -8746,7 +8746,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) tslib: 2.7.0 - '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@dnd-kit/sortable@9.0.0(@dnd-kit/core@6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: '@dnd-kit/core': 6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@dnd-kit/utilities': 3.2.2(react@18.3.1) From 7e349bb04bba665112b41cdbd40f8e76be2e8381 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Mon, 25 Nov 2024 17:31:14 +0100 Subject: [PATCH 21/48] refactor: improve design of no integrations found (#1543) * refactor: improve design of no integrations found * fix: deepsource issue --- .../src/app/[locale]/manage/apps/page.tsx | 23 ++++++++-------- .../app/[locale]/manage/integrations/page.tsx | 5 ++-- .../[locale]/manage/search-engines/page.tsx | 21 +++++++-------- apps/nextjs/src/components/no-results.tsx | 26 +++++++++++++++++++ packages/translation/src/lang/en.json | 8 +++--- 5 files changed, 55 insertions(+), 28 deletions(-) create mode 100644 apps/nextjs/src/components/no-results.tsx diff --git a/apps/nextjs/src/app/[locale]/manage/apps/page.tsx b/apps/nextjs/src/app/[locale]/manage/apps/page.tsx index 2029fbafa..8dd13774b 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/page.tsx @@ -1,7 +1,7 @@ import Link from "next/link"; import { redirect } from "next/navigation"; import { ActionIcon, ActionIconGroup, Anchor, Avatar, Card, Group, Stack, Text, Title } from "@mantine/core"; -import { IconApps, IconPencil } from "@tabler/icons-react"; +import { IconBox, IconPencil } from "@tabler/icons-react"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; @@ -12,6 +12,7 @@ import { getI18n, getScopedI18n } from "@homarr/translation/server"; import { ManageContainer } from "~/components/manage/manage-container"; import { MobileAffixButton } from "~/components/manage/mobile-affix-button"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; +import { NoResults } from "~/components/no-results"; import { AppDeleteButton } from "./_app-delete-button"; export default async function AppsPage() { @@ -113,16 +114,14 @@ const AppNoResults = async () => { const session = await auth(); return ( - - - - - {t("app.page.list.noResults.title")} - - {session?.user.permissions.includes("app-create") && ( - {t("app.page.list.noResults.action")} - )} - - + ); }; diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx index a600effed..853630698 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx @@ -27,7 +27,7 @@ import { Text, Title, } from "@mantine/core"; -import { IconChevronDown, IconChevronUp, IconPencil } from "@tabler/icons-react"; +import { IconChevronDown, IconChevronUp, IconPencil, IconPlugX } from "@tabler/icons-react"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; @@ -40,6 +40,7 @@ import { CountBadge, IntegrationAvatar } from "@homarr/ui"; import { ManageContainer } from "~/components/manage/manage-container"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; +import { NoResults } from "~/components/no-results"; import { ActiveTabAccordion } from "../../../../components/active-tab-accordion"; import { DeleteIntegrationActionButton } from "./_integration-buttons"; import { IntegrationCreateDropdownContent } from "./new/_integration-new-dropdown"; @@ -120,7 +121,7 @@ const IntegrationList = async ({ integrations, activeTab }: IntegrationListProps const hasFullAccess = session?.user.permissions.includes("integration-full-all") ?? false; if (integrations.length === 0) { - return
{t("page.list.empty")}
; + return ; } const grouppedIntegrations = integrations.reduce( diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx index 8f66abbf1..5d56fe17c 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx @@ -13,6 +13,7 @@ import { z } from "@homarr/validation"; import { ManageContainer } from "~/components/manage/manage-container"; import { MobileAffixButton } from "~/components/manage/mobile-affix-button"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; +import { NoResults } from "~/components/no-results"; import { SearchEngineDeleteButton } from "./_search-engine-delete-button"; const searchParamsSchema = z.object({ @@ -142,16 +143,14 @@ const SearchEngineNoResults = async () => { const session = await auth(); return ( - - - - - {t("search.engine.page.list.noResults.title")} - - {session?.user.permissions.includes("search-engine-create") && ( - {t("search.engine.page.list.noResults.action")} - )} - - + ); }; diff --git a/apps/nextjs/src/components/no-results.tsx b/apps/nextjs/src/components/no-results.tsx new file mode 100644 index 000000000..c25724297 --- /dev/null +++ b/apps/nextjs/src/components/no-results.tsx @@ -0,0 +1,26 @@ +import { Anchor, Card, Stack, Text } from "@mantine/core"; +import type { TablerIcon } from "@tabler/icons-react"; + +interface NoResultsProps { + icon: TablerIcon; + title: string; + action?: { + label: string; + href: string; + hidden?: boolean; + }; +} + +export const NoResults = ({ icon: Icon, title, action }: NoResultsProps) => { + return ( + + + + + {title} + + {!action?.hidden && {action?.label}} + + + ); +}; diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 7b8655ed1..cac220e9f 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -388,7 +388,7 @@ "list": { "title": "Apps", "noResults": { - "title": "There aren't any apps", + "title": "There are no apps yet", "action": "Create your first app" } }, @@ -456,7 +456,9 @@ "list": { "title": "Integrations", "search": "Search integrations", - "empty": "No integrations found" + "noResults": { + "title": "There are no integrations yet" + } }, "create": { "title": "New {name} integration", @@ -2676,7 +2678,7 @@ "list": { "title": "Search engines", "noResults": { - "title": "There aren't any search engines", + "title": "There are no search engines yet", "action": "Create your first search engine" }, "interactive": "Interactive, uses an integration" From b6c28da32b0cdcfe181db8e698e9f28997cebc52 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 19:09:38 +0000 Subject: [PATCH 22/48] fix(deps): update dependency next-intl to v3.25.2 (#1545) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/translation/package.json | 2 +- pnpm-lock.yaml | 86 +++++++++++++++---------------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/packages/translation/package.json b/packages/translation/package.json index 337d06d99..6462c0f59 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.7", "next": "^14.2.18", - "next-intl": "3.25.1", + "next-intl": "3.25.2", "react": "^18.3.1" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 527a2a5e9..25faeba4d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -151,16 +151,16 @@ importers: version: 5.61.3(@tanstack/react-query@5.61.3(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) '@trpc/client': specifier: next - version: 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) + version: 11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next - version: 11.0.0-rc.643(typescript@5.7.2) + version: 11.0.0-rc.645(typescript@5.7.2) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -503,13 +503,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) + version: 11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next - version: 11.0.0-rc.643(typescript@5.7.2) + version: 11.0.0-rc.645(typescript@5.7.2) dockerode: specifier: ^4.0.2 version: 4.0.2 @@ -524,7 +524,7 @@ importers: version: 2.2.1 trpc-to-openapi: specifier: ^2.0.2 - version: 2.0.2(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.9.3)(zod@3.23.8) + version: 2.0.2(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.9.3)(zod@3.23.8) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1474,8 +1474,8 @@ importers: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) next-intl: - specifier: 3.25.1 - version: 3.25.1(next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) + specifier: 3.25.2 + version: 3.25.2(next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -3666,19 +3666,19 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trpc/client@11.0.0-rc.643': - resolution: {integrity: sha512-Y7coaGHPxnzW9nZrigXInjSw3QoQ2IOIBnBaalC4m5B0Tt72j3UTc4gnELKDWxD/u3tRV7EoSnf8MvFhNsuDHA==} + '@trpc/client@11.0.0-rc.645': + resolution: {integrity: sha512-mL3frD59uwPdH4g4uWJhs3KAVv840SOlsWwmSZ8/FirBiPYhnduMtrNr48C1/e71feIoxDdsIdQiHJqpLvoPrQ==} peerDependencies: - '@trpc/server': 11.0.0-rc.643+0914e43c5 + '@trpc/server': 11.0.0-rc.645+b25f4f627 typescript: '>=5.6.2' - '@trpc/next@11.0.0-rc.643': - resolution: {integrity: sha512-etjsk9BHwi4sRGw2vjzWJZer5d5RpsOIwZX2rLqaPjOyyh5QtiVpHjL1G62tote/40nghvIQ2+GNyNj8RBUgjQ==} + '@trpc/next@11.0.0-rc.645': + resolution: {integrity: sha512-OvST2nNxPZC9iLsGEBtlNZ8gmeYxCUSnFZ0dCSQxCrx82i2KnnRR1KOBF92mdHPMc04cRuummQmrEpIZKQnayw==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.643+0914e43c5 - '@trpc/react-query': 11.0.0-rc.643+0914e43c5 - '@trpc/server': 11.0.0-rc.643+0914e43c5 + '@trpc/client': 11.0.0-rc.645+b25f4f627 + '@trpc/react-query': 11.0.0-rc.645+b25f4f627 + '@trpc/server': 11.0.0-rc.645+b25f4f627 next: 15.0.3 react: '>=16.8.0' react-dom: '>=16.8.0' @@ -3689,18 +3689,18 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.0.0-rc.643': - resolution: {integrity: sha512-uLXdWprp2IgpxSpUaAKBRgge0vzVlDCS9F4ivG+LErUM05+hAOMS2iVeNDyR4uvVfdYj9i2nNeGB+7lmZDT2Ww==} + '@trpc/react-query@11.0.0-rc.645': + resolution: {integrity: sha512-y3FQGCwzbTKFmdH9GuhhZ32XXmebtJVrRaa2Qd7DTrIyxZKMWkKktWDSsvD679Gy4M6rpDlPdFBllxDXUjs84w==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.643+0914e43c5 - '@trpc/server': 11.0.0-rc.643+0914e43c5 + '@trpc/client': 11.0.0-rc.645+b25f4f627 + '@trpc/server': 11.0.0-rc.645+b25f4f627 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.6.2' - '@trpc/server@11.0.0-rc.643': - resolution: {integrity: sha512-w8qPtnbvKF441erzLjDX55AcgrC+5wXT3VCyBp8HMCUKJS4Q7LSEmig02Kva+gJ3E6cYTahsQFTDWaVnr26YZA==} + '@trpc/server@11.0.0-rc.645': + resolution: {integrity: sha512-DbAp3kzYceem6getORJh55a6ZRt6gIy69xJV3cxYyZ9Xx1MV3PwL27qXGNrprPO0c+kPnnIIu/iGB0d90LSZOA==} peerDependencies: typescript: '>=5.6.2' @@ -6403,8 +6403,8 @@ packages: nodemailer: optional: true - next-intl@3.25.1: - resolution: {integrity: sha512-Z2dJWn5f/b1sb8EmuJcuDhbQTIp4RG1KBFAILgRt/y27W0ifU7Ll/os3liphUY4InyRH89uShTAk7ItAlpr0uA==} + next-intl@3.25.2: + resolution: {integrity: sha512-C2BoRMX3h+KxCf5TC6BjlnZie2EOCK+QZz4C9A7xGf++1E/r1uD25wT8EZBaQAkO2uKKhBoZg78X8j8r2HPsag==} peerDependencies: next: ^10.0.0 || ^11.0.0 || ^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 @@ -8017,8 +8017,8 @@ packages: peerDependencies: react: '>=16.13' - use-intl@3.25.1: - resolution: {integrity: sha512-Xeyl0+BjlBf6fJr2h5W/CESZ2IQAH7jzXYK4c/ao+qR26jNPW3FXBLjg7eLRxdeI6QaLcYGLtH3WYhC9I0+6Yg==} + use-intl@3.25.2: + resolution: {integrity: sha512-xDnhI2+5vzeF3k/fS4Qn4vv5dFUZw8O7T5m2G6VfLUcgHayBrTCWhlqowOQmGHDsf+j52WU+cpFOApcTZ2tl+A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 @@ -10255,33 +10255,33 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2)': + '@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2)': dependencies: - '@trpc/server': 11.0.0-rc.643(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: - '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) - '@trpc/server': 11.0.0-rc.643(typescript@5.7.2) + '@trpc/client': 11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) next: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) typescript: 5.7.2 optionalDependencies: '@tanstack/react-query': 5.61.3(react@18.3.1) - '@trpc/react-query': 11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + '@trpc/react-query': 11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.643(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: '@tanstack/react-query': 5.61.3(react@18.3.1) - '@trpc/client': 11.0.0-rc.643(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(typescript@5.7.2) - '@trpc/server': 11.0.0-rc.643(typescript@5.7.2) + '@trpc/client': 11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) typescript: 5.7.2 - '@trpc/server@11.0.0-rc.643(typescript@5.7.2)': + '@trpc/server@11.0.0-rc.645(typescript@5.7.2)': dependencies: typescript: 5.7.2 @@ -13323,13 +13323,13 @@ snapshots: next: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 - next-intl@3.25.1(next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1): + next-intl@3.25.2(next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 next: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 - use-intl: 3.25.1(react@18.3.1) + use-intl: 3.25.2(react@18.3.1) next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0): dependencies: @@ -14926,9 +14926,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.0.2(@trpc/server@11.0.0-rc.643(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.9.3)(zod@3.23.8): + trpc-to-openapi@2.0.2(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.9.3)(zod@3.23.8): dependencies: - '@trpc/server': 11.0.0-rc.643(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) co-body: 6.2.0 h3: 1.13.0 lodash.clonedeep: 4.5.0 @@ -15216,7 +15216,7 @@ snapshots: dequal: 2.0.3 react: 18.3.1 - use-intl@3.25.1(react@18.3.1): + use-intl@3.25.2(react@18.3.1): dependencies: '@formatjs/fast-memoize': 2.2.1 intl-messageformat: 10.7.1 From 3cbc20bdfe44eea1d952e1c29f51177cc9b2b429 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 21:27:45 +0000 Subject: [PATCH 23/48] chore(deps): update dependency @types/node to ^22.9.4 (#1546) 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 | 110 +++++++++++++++++++-------------------- 3 files changed, 57 insertions(+), 57 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index a3a687e5d..15d1ec8e2 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -80,7 +80,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "2.4.4", - "@types/node": "^22.9.3", + "@types/node": "^22.9.4", "@types/prismjs": "^1.26.5", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 9eb8691ac..155518307 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.9.3", + "@types/node": "^22.9.4", "dotenv-cli": "^7.4.4", "eslint": "^9.15.0", "prettier": "^3.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 25faeba4d..bd683ee27 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,10 +13,10 @@ importers: version: link:tooling/prettier '@turbo/gen': specifier: ^2.3.1 - version: 2.3.1(@types/node@22.9.3)(typescript@5.7.2) + version: 2.3.1(@types/node@22.9.4)(typescript@5.7.2) '@vitejs/plugin-react': specifier: ^4.3.3 - version: 4.3.3(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 4.3.3(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': specifier: ^2.1.5 version: 2.1.5(vitest@2.1.5) @@ -43,10 +43,10 @@ importers: version: 5.7.2 vite-tsconfig-paths: specifier: ^5.1.3 - version: 5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + version: 2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) apps/nextjs: dependencies: @@ -241,8 +241,8 @@ importers: specifier: 2.4.4 version: 2.4.4 '@types/node': - specifier: ^22.9.3 - version: 22.9.3 + specifier: ^22.9.4 + version: 22.9.4 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 @@ -341,8 +341,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^22.9.3 - version: 22.9.3 + specifier: ^22.9.4 + version: 22.9.4 dotenv-cli: specifier: ^7.4.4 version: 7.4.4 @@ -524,7 +524,7 @@ importers: version: 2.2.1 trpc-to-openapi: specifier: ^2.0.2 - version: 2.0.2(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.9.3)(zod@3.23.8) + version: 2.0.2(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.9.4)(zod@3.23.8) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -3829,8 +3829,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.9.3': - resolution: {integrity: sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==} + '@types/node@22.9.4': + resolution: {integrity: sha512-d9RWfoR7JC/87vj7n+PVTzGg9hDyuFjir3RxUHbjFSKNd9mpxbxwMEyaCim/ddCmy4IuW7HjTzF3g9p3EtWEOg==} '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -10295,7 +10295,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.3.1(@types/node@22.9.3)(typescript@5.7.2)': + '@turbo/gen@2.3.1(@types/node@22.9.4)(typescript@5.7.2)': dependencies: '@turbo/workspaces': 2.3.1 commander: 10.0.1 @@ -10305,7 +10305,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.4.0 - ts-node: 10.9.2(@types/node@22.9.3)(typescript@5.7.2) + ts-node: 10.9.2(@types/node@22.9.4)(typescript@5.7.2) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -10332,7 +10332,7 @@ snapshots: '@types/asn1@0.2.4': dependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/babel__core@7.20.5': dependencies: @@ -10357,22 +10357,22 @@ snapshots: '@types/bcrypt@5.0.2': dependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/better-sqlite3@7.6.12': dependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/chroma-js@2.4.4': {} '@types/connect@3.4.38': dependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/cookie@0.6.0': {} @@ -10381,7 +10381,7 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/css-font-loading-module@0.0.7': {} @@ -10389,13 +10389,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.32': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/ssh2': 1.15.1 '@types/estree@1.0.5': {} @@ -10404,7 +10404,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -10419,7 +10419,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/hast@2.3.10': dependencies: @@ -10457,7 +10457,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@22.9.3': + '@types/node@22.9.4': dependencies: undici-types: 6.19.8 @@ -10485,21 +10485,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/ssh2@0.5.52': dependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -10512,7 +10512,7 @@ snapshots: '@types/through@0.0.33': dependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/tinycolor2@1.4.6': {} @@ -10528,11 +10528,11 @@ snapshots: '@types/ws@8.5.13': dependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@typescript-eslint/eslint-plugin@8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2)': dependencies: @@ -10646,14 +10646,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.3.3(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitejs/plugin-react@4.3.3(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -10671,7 +10671,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -10682,13 +10682,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.5(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitest/mocker@2.1.5(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@vitest/spy': 2.1.5 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/pretty-format@2.1.5': dependencies: @@ -10718,7 +10718,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/utils@2.1.5': dependencies: @@ -12925,7 +12925,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -13432,7 +13432,7 @@ snapshots: loader-utils: 2.0.4 webpack: 5.94.0 - node-mocks-http@1.16.1(@types/express@4.17.21)(@types/node@22.9.3): + node-mocks-http@1.16.1(@types/express@4.17.21)(@types/node@22.9.4): dependencies: accepts: 1.3.8 content-disposition: 0.5.4 @@ -13446,7 +13446,7 @@ snapshots: type-is: 1.6.18 optionalDependencies: '@types/express': 4.17.21 - '@types/node': 22.9.3 + '@types/node': 22.9.4 node-plop@0.26.3: dependencies: @@ -14926,13 +14926,13 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.0.2(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.9.3)(zod@3.23.8): + trpc-to-openapi@2.0.2(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.9.4)(zod@3.23.8): dependencies: '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) co-body: 6.2.0 h3: 1.13.0 lodash.clonedeep: 4.5.0 - node-mocks-http: 1.16.1(@types/express@4.17.21)(@types/node@22.9.3) + node-mocks-http: 1.16.1(@types/express@4.17.21)(@types/node@22.9.4) openapi3-ts: 4.3.3 zod: 3.23.8 zod-openapi: 2.19.0(zod@3.23.8) @@ -14946,14 +14946,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.9.3)(typescript@5.7.2): + ts-node@10.9.2(@types/node@22.9.4)(typescript@5.7.2): 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.9.3 + '@types/node': 22.9.4 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -15283,13 +15283,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@2.1.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite-node@2.1.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.3.7 es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -15301,33 +15301,33 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): + vite-tsconfig-paths@5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.7.2) optionalDependencies: - vite: 5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.3 optionalDependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 fsevents: 2.3.3 sass: 1.81.0 sugarss: 4.0.1(postcss@8.4.47) terser: 5.32.0 - vitest@2.1.5(@types/node@22.9.3)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vitest@2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + '@vitest/mocker': 2.1.5(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/pretty-format': 2.1.5 '@vitest/runner': 2.1.5 '@vitest/snapshot': 2.1.5 @@ -15343,11 +15343,11 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) - vite-node: 2.1.5(@types/node@22.9.3)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite-node: 2.1.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.9.3 + '@types/node': 22.9.4 '@vitest/ui': 2.1.5(vitest@2.1.5) jsdom: 25.0.1 transitivePeerDependencies: From 591c5b5cff3796153df8e54d7af4d1d7bfc2dfe7 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 22:11:35 +0000 Subject: [PATCH 24/48] chore(deps): update turbo monorepo to ^2.3.2 (#1547) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 4 +- pnpm-lock.yaml | 97 ++++++++++++++++++------------------- tooling/eslint/package.json | 2 +- 3 files changed, 51 insertions(+), 52 deletions(-) diff --git a/package.json b/package.json index 6192b562b..a43ecc0bd 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "prettier": "@homarr/prettier-config", "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", - "@turbo/gen": "^2.3.1", + "@turbo/gen": "^2.3.2", "@vitejs/plugin-react": "^4.3.3", "@vitest/coverage-v8": "^2.1.5", "@vitest/ui": "^2.1.5", @@ -37,7 +37,7 @@ "jsdom": "^25.0.1", "prettier": "^3.3.3", "testcontainers": "^10.15.0", - "turbo": "^2.3.1", + "turbo": "^2.3.2", "typescript": "^5.7.2", "vite-tsconfig-paths": "^5.1.3", "vitest": "^2.1.5" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd683ee27..64c7cde3f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: workspace:^0.1.0 version: link:tooling/prettier '@turbo/gen': - specifier: ^2.3.1 - version: 2.3.1(@types/node@22.9.4)(typescript@5.7.2) + specifier: ^2.3.2 + version: 2.3.2(@types/node@22.9.4)(typescript@5.7.2) '@vitejs/plugin-react': specifier: ^4.3.3 version: 4.3.3(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) @@ -36,8 +36,8 @@ importers: specifier: ^10.15.0 version: 10.15.0 turbo: - specifier: ^2.3.1 - version: 2.3.1 + specifier: ^2.3.2 + version: 2.3.2 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1742,8 +1742,8 @@ importers: specifier: ^9.1.0 version: 9.1.0(eslint@9.15.0) eslint-config-turbo: - specifier: ^2.3.1 - version: 2.3.1(eslint@9.15.0) + specifier: ^2.3.2 + version: 2.3.2(eslint@9.15.0) eslint-plugin-import: specifier: ^2.31.0 version: 2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0) @@ -3719,12 +3719,12 @@ packages: '@tsconfig/svelte@1.0.13': resolution: {integrity: sha512-5lYJP45Xllo4yE/RUBccBT32eBlRDbqN8r1/MIvQbKxW3aFqaYPCNgm8D5V20X4ShHcwvYWNlKg3liDh1MlBoA==} - '@turbo/gen@2.3.1': - resolution: {integrity: sha512-QlxmNhrgH9vkI8e13O3Wd3wnLLb+JbGBeifaYywORN9bY29YmObhxLvBTCYGoYFED1nHRxB19mTJBQjPdejskA==} + '@turbo/gen@2.3.2': + resolution: {integrity: sha512-QnuMeLnNr4C+TE/Ac4kYH0zreRQRg5qyRqMW1kkZBaaLa2txDlhA3lwBh0dilc+fIqww9luYTmuQS9JgntM/aA==} hasBin: true - '@turbo/workspaces@2.3.1': - resolution: {integrity: sha512-JIDt9G43l/HMOeZcbllbfq7Z8S+GEcjLC9tZS18fs0JQqKsd3lgCJebNS4tJM+3pplJVcM4CQv4BMQxoFW7Qsw==} + '@turbo/workspaces@2.3.2': + resolution: {integrity: sha512-PwRg3+YZP7AaCk4JBdrKfc8bvyZ7KqP+Pc4lJ00uswlxycf9kU8HXRAxNg8HD6GGbTXYCvNGY7VUELf9rIU+6g==} hasBin: true '@types/asn1@0.2.4': @@ -5150,8 +5150,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-config-turbo@2.3.1: - resolution: {integrity: sha512-pxxCLLgnZYCjJoGrzUu3jAcb67bKVykLblyMtgTzHN7DlNu6tnp89K3/5fznc6ALyXwXFp0K+nM+Sxst43oaoA==} + eslint-config-turbo@2.3.2: + resolution: {integrity: sha512-gIH/BQdbfWNa9uw/Obo7PZa/NNilZNP8STD0ppVKd8ekSVFONm2GebvOxNiSr5zHregRzokfynnHjZfB5ngJig==} peerDependencies: eslint: '>6.6.0' @@ -5207,8 +5207,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-turbo@2.3.1: - resolution: {integrity: sha512-M5MBYBkcQsv11MFHJ+6WpzLpiTBx0OApeUMAHlO4L0eHqQxY03GrmHXjXfozqB+9HwGrW9fqihBzVRllyixJDA==} + eslint-plugin-turbo@2.3.2: + resolution: {integrity: sha512-NoGxnaFi/8KotvKdbwR+VJOB3nVvIOjS193qCjHz2eBKhnO+Wr3cFgw9IZvk1rBIqg3a6VtJQmxkwNIYo2yWOw==} peerDependencies: eslint: '>6.6.0' @@ -7806,38 +7806,38 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - turbo-darwin-64@2.3.1: - resolution: {integrity: sha512-tjHfjW/Gs8Q9IO+9gPdIsSStZ8I09QYDRT/SyhFTPLnc7O2ZlxHPBVFfjUkHUjanHNYO8CpRGt+zdp1PaMCruw==} + turbo-darwin-64@2.3.2: + resolution: {integrity: sha512-B1lS/UqjXNsG+kx1uzJNwXMuw2i5wavcyNy8opvSLjfuECdsqQU9B1wPqkSTU+mZjFTJcEfiGKyJ/I2EVk8vdw==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.3.1: - resolution: {integrity: sha512-At1WStnxCfrBQ4M2g6ynre8WsusGwA11okhVolBxyFUemYozDTtbZwelr+IqNggjT251vviokxOkcFzzogbiFw==} + turbo-darwin-arm64@2.3.2: + resolution: {integrity: sha512-XHeuEdk9tHaw2Bsr3rTzFtZyldeSyagDZkOSPIJ1zioavMjWEFPA75vdgy4j8ns96EBpZMaPXVEnODuEHfiZfQ==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.3.1: - resolution: {integrity: sha512-COwEev7s9fsxLM2eoRCyRLPj+BXvZjFIS+GxzdAubYhoSoZit8B8QGKczyDl6448xhuFEWKrpHhcR9aBuwB4ag==} + turbo-linux-64@2.3.2: + resolution: {integrity: sha512-oKDsO5+flqpPx5tNLFGVUYpJ/sBc3KvaGpyNzXl2u3epzyafgblFKWMG5YsSiU1ruouPpcC6YG5SN5chA7Abfg==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.3.1: - resolution: {integrity: sha512-AP0uE15Rhxza2Jl+Q3gxdXRA92IIeFAYaufz6CMcZuGy9yZsBlLt9w6T47H6g7XQPzWuw8pzfjM1omcTKkkDpQ==} + turbo-linux-arm64@2.3.2: + resolution: {integrity: sha512-luyvTl3wQ1hF+ljK7ljH4TL7rg4pmx5pQ2mzvfMvPo5eaLuKr/tImmbdH6/vr56iffUIISkIsLVhVxgZeAsUOw==} cpu: [arm64] os: [linux] - turbo-windows-64@2.3.1: - resolution: {integrity: sha512-HDSneq0dNZYZch74c2eygq+OiJE/JYDs7OsGM0yRYVj336383xkUnxz6W2I7qiyMCQXzp4UVUDZXvZhUYcX3BA==} + turbo-windows-64@2.3.2: + resolution: {integrity: sha512-yw7BnTU5cE7GdUnZEW3jIAI98hh4dcWk+Jwza8X7CXpxpill2zteq7VPf+a/B3o/xm+oVXzLmP83YP91Bm0SaA==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.3.1: - resolution: {integrity: sha512-7/2/sJZiquwoT/jWBCfV0qKq4NarsJPmDRjMcR9dDMIwCYsGM8ljomkDRTCtkNeFcUvYw54MiRWHehWgbcRPsw==} + turbo-windows-arm64@2.3.2: + resolution: {integrity: sha512-Hgp6V7jaIYlDcy5xpKN+XXyYCf5afT690GmXcEsMoUawd5dStvZe0QHWcGxuqho497BAlx0XGAWftm0KelNePA==} cpu: [arm64] os: [win32] - turbo@2.3.1: - resolution: {integrity: sha512-vHZe/e6k1HZVKiMQPQ1BWFn53vjVQDFKdkjUq/pBKlRWi1gw9LQO6ntH4qZCcHY1rH6TXgsRmexXdgWl96YvVQ==} + turbo@2.3.2: + resolution: {integrity: sha512-vCJPoy8/3KkqY3W0cX2nrwhmtBQSZhEyrVgeJ4NlEXwGxu5vNRQDyV6se5VVAQMwfBsBJswlo87B7ai7Dr1MpQ==} hasBin: true tweetnacl@0.14.5: @@ -10295,9 +10295,9 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.3.1(@types/node@22.9.4)(typescript@5.7.2)': + '@turbo/gen@2.3.2(@types/node@22.9.4)(typescript@5.7.2)': dependencies: - '@turbo/workspaces': 2.3.1 + '@turbo/workspaces': 2.3.2 commander: 10.0.1 fs-extra: 10.1.0 inquirer: 8.2.6 @@ -10315,7 +10315,7 @@ snapshots: - supports-color - typescript - '@turbo/workspaces@2.3.1': + '@turbo/workspaces@2.3.2': dependencies: commander: 10.0.1 execa: 5.1.1 @@ -10326,7 +10326,6 @@ snapshots: js-yaml: 4.1.0 ora: 4.1.1 picocolors: 1.0.1 - rimraf: 3.0.2 semver: 7.6.2 update-check: 1.5.4 @@ -12003,10 +12002,10 @@ snapshots: dependencies: eslint: 9.15.0 - eslint-config-turbo@2.3.1(eslint@9.15.0): + eslint-config-turbo@2.3.2(eslint@9.15.0): dependencies: eslint: 9.15.0 - eslint-plugin-turbo: 2.3.1(eslint@9.15.0) + eslint-plugin-turbo: 2.3.2(eslint@9.15.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -12100,7 +12099,7 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.3.1(eslint@9.15.0): + eslint-plugin-turbo@2.3.2(eslint@9.15.0): dependencies: dotenv: 16.0.3 eslint: 9.15.0 @@ -12192,7 +12191,7 @@ snapshots: execa@5.1.1: dependencies: - cross-spawn: 7.0.5 + cross-spawn: 7.0.6 get-stream: 6.0.1 human-signals: 2.1.0 is-stream: 2.0.1 @@ -14994,32 +14993,32 @@ snapshots: dependencies: safe-buffer: 5.2.1 - turbo-darwin-64@2.3.1: + turbo-darwin-64@2.3.2: optional: true - turbo-darwin-arm64@2.3.1: + turbo-darwin-arm64@2.3.2: optional: true - turbo-linux-64@2.3.1: + turbo-linux-64@2.3.2: optional: true - turbo-linux-arm64@2.3.1: + turbo-linux-arm64@2.3.2: optional: true - turbo-windows-64@2.3.1: + turbo-windows-64@2.3.2: optional: true - turbo-windows-arm64@2.3.1: + turbo-windows-arm64@2.3.2: optional: true - turbo@2.3.1: + turbo@2.3.2: optionalDependencies: - turbo-darwin-64: 2.3.1 - turbo-darwin-arm64: 2.3.1 - turbo-linux-64: 2.3.1 - turbo-linux-arm64: 2.3.1 - turbo-windows-64: 2.3.1 - turbo-windows-arm64: 2.3.1 + turbo-darwin-64: 2.3.2 + turbo-darwin-arm64: 2.3.2 + turbo-linux-64: 2.3.2 + turbo-linux-arm64: 2.3.2 + turbo-windows-64: 2.3.2 + turbo-windows-arm64: 2.3.2 tweetnacl@0.14.5: {} diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 6f4c8082e..9246b4b54 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -18,7 +18,7 @@ "dependencies": { "@next/eslint-plugin-next": "^14.2.18", "eslint-config-prettier": "^9.1.0", - "eslint-config-turbo": "^2.3.1", + "eslint-config-turbo": "^2.3.2", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.2", From bfe284cdd116f3c2eacde588ca19d621b1fee109 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 03:54:50 +0000 Subject: [PATCH 25/48] chore(deps): update dependency @types/node to ^22.10.0 (#1549) 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 | 118 +++++++++++++++++++-------------------- 3 files changed, 61 insertions(+), 61 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 15d1ec8e2..18deda53e 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -80,7 +80,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "2.4.4", - "@types/node": "^22.9.4", + "@types/node": "^22.10.0", "@types/prismjs": "^1.26.5", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 155518307..4d7aff644 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.9.4", + "@types/node": "^22.10.0", "dotenv-cli": "^7.4.4", "eslint": "^9.15.0", "prettier": "^3.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64c7cde3f..83a2c36bc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,10 +13,10 @@ importers: version: link:tooling/prettier '@turbo/gen': specifier: ^2.3.2 - version: 2.3.2(@types/node@22.9.4)(typescript@5.7.2) + version: 2.3.2(@types/node@22.10.0)(typescript@5.7.2) '@vitejs/plugin-react': specifier: ^4.3.3 - version: 4.3.3(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 4.3.3(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': specifier: ^2.1.5 version: 2.1.5(vitest@2.1.5) @@ -43,10 +43,10 @@ importers: version: 5.7.2 vite-tsconfig-paths: specifier: ^5.1.3 - version: 5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + version: 2.1.5(@types/node@22.10.0)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) apps/nextjs: dependencies: @@ -241,8 +241,8 @@ importers: specifier: 2.4.4 version: 2.4.4 '@types/node': - specifier: ^22.9.4 - version: 22.9.4 + specifier: ^22.10.0 + version: 22.10.0 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 @@ -341,8 +341,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^22.9.4 - version: 22.9.4 + specifier: ^22.10.0 + version: 22.10.0 dotenv-cli: specifier: ^7.4.4 version: 7.4.4 @@ -524,7 +524,7 @@ importers: version: 2.2.1 trpc-to-openapi: specifier: ^2.0.2 - version: 2.0.2(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.9.4)(zod@3.23.8) + version: 2.0.2(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.10.0)(zod@3.23.8) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -3829,8 +3829,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.9.4': - resolution: {integrity: sha512-d9RWfoR7JC/87vj7n+PVTzGg9hDyuFjir3RxUHbjFSKNd9mpxbxwMEyaCim/ddCmy4IuW7HjTzF3g9p3EtWEOg==} + '@types/node@22.10.0': + resolution: {integrity: sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA==} '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -7924,8 +7924,8 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} undici@5.28.4: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} @@ -10295,7 +10295,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.3.2(@types/node@22.9.4)(typescript@5.7.2)': + '@turbo/gen@2.3.2(@types/node@22.10.0)(typescript@5.7.2)': dependencies: '@turbo/workspaces': 2.3.2 commander: 10.0.1 @@ -10305,7 +10305,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.4.0 - ts-node: 10.9.2(@types/node@22.9.4)(typescript@5.7.2) + ts-node: 10.9.2(@types/node@22.10.0)(typescript@5.7.2) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -10331,7 +10331,7 @@ snapshots: '@types/asn1@0.2.4': dependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/babel__core@7.20.5': dependencies: @@ -10356,22 +10356,22 @@ snapshots: '@types/bcrypt@5.0.2': dependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/better-sqlite3@7.6.12': dependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/chroma-js@2.4.4': {} '@types/connect@3.4.38': dependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/cookie@0.6.0': {} @@ -10380,7 +10380,7 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/css-font-loading-module@0.0.7': {} @@ -10388,13 +10388,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.32': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/ssh2': 1.15.1 '@types/estree@1.0.5': {} @@ -10403,7 +10403,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -10418,7 +10418,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/hast@2.3.10': dependencies: @@ -10456,9 +10456,9 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@22.9.4': + '@types/node@22.10.0': dependencies: - undici-types: 6.19.8 + undici-types: 6.20.0 '@types/prismjs@1.26.5': {} @@ -10484,21 +10484,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/ssh2@0.5.52': dependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -10511,7 +10511,7 @@ snapshots: '@types/through@0.0.33': dependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/tinycolor2@1.4.6': {} @@ -10527,11 +10527,11 @@ snapshots: '@types/ws@8.5.13': dependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@typescript-eslint/eslint-plugin@8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2)': dependencies: @@ -10645,14 +10645,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.3.3(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitejs/plugin-react@4.3.3(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -10670,7 +10670,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.5(@types/node@22.10.0)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -10681,13 +10681,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.5(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitest/mocker@2.1.5(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@vitest/spy': 2.1.5 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/pretty-format@2.1.5': dependencies: @@ -10717,7 +10717,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.5(@types/node@22.10.0)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/utils@2.1.5': dependencies: @@ -12924,7 +12924,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -13431,7 +13431,7 @@ snapshots: loader-utils: 2.0.4 webpack: 5.94.0 - node-mocks-http@1.16.1(@types/express@4.17.21)(@types/node@22.9.4): + node-mocks-http@1.16.1(@types/express@4.17.21)(@types/node@22.10.0): dependencies: accepts: 1.3.8 content-disposition: 0.5.4 @@ -13445,7 +13445,7 @@ snapshots: type-is: 1.6.18 optionalDependencies: '@types/express': 4.17.21 - '@types/node': 22.9.4 + '@types/node': 22.10.0 node-plop@0.26.3: dependencies: @@ -14925,13 +14925,13 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.0.2(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.9.4)(zod@3.23.8): + trpc-to-openapi@2.0.2(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.10.0)(zod@3.23.8): dependencies: '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) co-body: 6.2.0 h3: 1.13.0 lodash.clonedeep: 4.5.0 - node-mocks-http: 1.16.1(@types/express@4.17.21)(@types/node@22.9.4) + node-mocks-http: 1.16.1(@types/express@4.17.21)(@types/node@22.10.0) openapi3-ts: 4.3.3 zod: 3.23.8 zod-openapi: 2.19.0(zod@3.23.8) @@ -14945,14 +14945,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.9.4)(typescript@5.7.2): + ts-node@10.9.2(@types/node@22.10.0)(typescript@5.7.2): 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.9.4 + '@types/node': 22.10.0 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -15110,7 +15110,7 @@ snapshots: undici-types@5.26.5: {} - undici-types@6.19.8: {} + undici-types@6.20.0: {} undici@5.28.4: dependencies: @@ -15282,13 +15282,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@2.1.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite-node@2.1.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.3.7 es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -15300,33 +15300,33 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): + vite-tsconfig-paths@5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.7.2) optionalDependencies: - vite: 5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.3 optionalDependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 fsevents: 2.3.3 sass: 1.81.0 sugarss: 4.0.1(postcss@8.4.47) terser: 5.32.0 - vitest@2.1.5(@types/node@22.9.4)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vitest@2.1.5(@types/node@22.10.0)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + '@vitest/mocker': 2.1.5(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/pretty-format': 2.1.5 '@vitest/runner': 2.1.5 '@vitest/snapshot': 2.1.5 @@ -15342,11 +15342,11 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) - vite-node: 2.1.5(@types/node@22.9.4)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite-node: 2.1.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.9.4 + '@types/node': 22.10.0 '@vitest/ui': 2.1.5(vitest@2.1.5) jsdom: 25.0.1 transitivePeerDependencies: From 93aedd994f405a1e60913086900015c94a364962 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 04:14:30 +0000 Subject: [PATCH 26/48] fix(deps): update dependency better-sqlite3 to ^11.6.0 (#1548) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/db/package.json | 2 +- pnpm-lock.yaml | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/db/package.json b/packages/db/package.json index 8e1c456a8..e5a7f2dd9 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -43,7 +43,7 @@ "@homarr/server-settings": "workspace:^0.1.0", "@paralleldrive/cuid2": "^2.2.2", "@testcontainers/mysql": "^10.15.0", - "better-sqlite3": "^11.5.0", + "better-sqlite3": "^11.6.0", "dotenv": "^16.4.5", "drizzle-kit": "^0.28.1", "drizzle-orm": "^0.36.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 83a2c36bc..8975d67ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -861,8 +861,8 @@ importers: specifier: ^10.15.0 version: 10.15.0 better-sqlite3: - specifier: ^11.5.0 - version: 11.5.0 + specifier: ^11.6.0 + version: 11.6.0 dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -871,10 +871,10 @@ importers: version: 0.28.1 drizzle-orm: specifier: ^0.36.4 - version: 0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.5.0)(mysql2@3.11.4)(react@18.3.1) + version: 0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.4)(react@18.3.1) drizzle-zod: specifier: ^0.5.1 - version: 0.5.1(drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.5.0)(mysql2@3.11.4)(react@18.3.1))(zod@3.23.8) + version: 0.5.1(drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.4)(react@18.3.1))(zod@3.23.8) mysql2: specifier: 3.11.4 version: 3.11.4 @@ -4347,8 +4347,8 @@ packages: resolution: {integrity: sha512-Wjss+Bc674ZABPr+SCKWTqA4V1pyYFhzDTjNBJy4jdmgOv0oGIGXeKBRJyINwP5tIy+iIZD9SfgZpztduzQ5QA==} engines: {node: '>= 18.4'} - better-sqlite3@11.5.0: - resolution: {integrity: sha512-e/6eggfOutzoK0JWiU36jsisdWoHOfN9iWiW/SieKvb7SAa6aGNmBM/UKyp+/wWSXpLlWNN8tCPwoDNPhzUvuQ==} + better-sqlite3@11.6.0: + resolution: {integrity: sha512-2J6k/eVxcFYY2SsTxsXrj6XylzHWPxveCn4fKPKZFv/Vqn/Cd7lOuX4d7rGQXT5zL+97MkNL3nSbCrIoe3LkgA==} big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} @@ -11107,7 +11107,7 @@ snapshots: bellajs@11.2.0: {} - better-sqlite3@11.5.0: + better-sqlite3@11.6.0: dependencies: bindings: 1.5.0 prebuild-install: 7.1.2 @@ -11696,18 +11696,18 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.5.0)(mysql2@3.11.4)(react@18.3.1): + drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.4)(react@18.3.1): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.12 '@types/react': 18.3.12 - better-sqlite3: 11.5.0 + better-sqlite3: 11.6.0 mysql2: 3.11.4 react: 18.3.1 - drizzle-zod@0.5.1(drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.5.0)(mysql2@3.11.4)(react@18.3.1))(zod@3.23.8): + drizzle-zod@0.5.1(drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.4)(react@18.3.1))(zod@3.23.8): dependencies: - drizzle-orm: 0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.5.0)(mysql2@3.11.4)(react@18.3.1) + drizzle-orm: 0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.4)(react@18.3.1) zod: 3.23.8 eastasianwidth@0.2.0: {} From 2e9b99dff76e675a5e28ca22dddc467fe94a5f6d Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 05:32:01 +0000 Subject: [PATCH 27/48] fix(deps): update dependency prettier to ^3.4.0 (#1550) 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 +- package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- packages/db/package.json | 2 +- pnpm-lock.yaml | 44 +++++++++++++++++------------------ tooling/prettier/package.json | 2 +- 9 files changed, 30 insertions(+), 30 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 18deda53e..c9fa9ac22 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -88,7 +88,7 @@ "concurrently": "^9.1.0", "eslint": "^9.15.0", "node-loader": "^2.1.0", - "prettier": "^3.3.3", + "prettier": "^3.4.0", "typescript": "^5.7.2" } } diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 4d7aff644..c4d252b72 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -47,7 +47,7 @@ "@types/node": "^22.10.0", "dotenv-cli": "^7.4.4", "eslint": "^9.15.0", - "prettier": "^3.3.3", + "prettier": "^3.4.0", "tsx": "4.19.2", "typescript": "^5.7.2" } diff --git a/apps/websocket/package.json b/apps/websocket/package.json index 4192a96bc..aab9e6667 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -35,7 +35,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/ws": "^8.5.13", "eslint": "^9.15.0", - "prettier": "^3.3.3", + "prettier": "^3.4.0", "typescript": "^5.7.2" } } diff --git a/package.json b/package.json index a43ecc0bd..557594ec6 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@vitest/ui": "^2.1.5", "cross-env": "^7.0.3", "jsdom": "^25.0.1", - "prettier": "^3.3.3", + "prettier": "^3.4.0", "testcontainers": "^10.15.0", "turbo": "^2.3.2", "typescript": "^5.7.2", diff --git a/packages/api/package.json b/packages/api/package.json index d4a2f1b10..076d07e4e 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -51,7 +51,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/dockerode": "^3.3.32", "eslint": "^9.15.0", - "prettier": "^3.3.3", + "prettier": "^3.4.0", "typescript": "^5.7.2" } } diff --git a/packages/auth/package.json b/packages/auth/package.json index 354e34290..6ab83671a 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -46,7 +46,7 @@ "@types/bcrypt": "5.0.2", "@types/cookies": "0.9.0", "eslint": "^9.15.0", - "prettier": "^3.3.3", + "prettier": "^3.4.0", "typescript": "^5.7.2" } } diff --git a/packages/db/package.json b/packages/db/package.json index e5a7f2dd9..308b77668 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -57,7 +57,7 @@ "@types/better-sqlite3": "7.6.12", "dotenv-cli": "^7.4.4", "eslint": "^9.15.0", - "prettier": "^3.3.3", + "prettier": "^3.4.0", "tsx": "4.19.2", "typescript": "^5.7.2" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8975d67ad..895c7fe50 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: ^25.0.1 version: 25.0.1 prettier: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.4.0 + version: 3.4.0 testcontainers: specifier: ^10.15.0 version: 10.15.0 @@ -265,8 +265,8 @@ importers: specifier: ^2.1.0 version: 2.1.0(webpack@5.94.0) prettier: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.4.0 + version: 3.4.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -350,8 +350,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 prettier: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.4.0 + version: 3.4.0 tsx: specifier: 4.19.2 version: 4.19.2 @@ -411,8 +411,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 prettier: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.4.0 + version: 3.4.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -542,8 +542,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 prettier: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.4.0 + version: 3.4.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -615,8 +615,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 prettier: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.4.0 + version: 3.4.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -898,8 +898,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 prettier: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.4.0 + version: 3.4.0 tsx: specifier: 4.19.2 version: 4.19.2 @@ -1779,10 +1779,10 @@ importers: dependencies: '@ianvs/prettier-plugin-sort-imports': specifier: ^4.4.0 - version: 4.4.0(prettier@3.3.3) + version: 4.4.0(prettier@3.4.0) prettier: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.4.0 + version: 3.4.0 devDependencies: '@homarr/tsconfig': specifier: workspace:^0.1.0 @@ -6785,8 +6785,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + prettier@3.4.0: + resolution: {integrity: sha512-/OXNZcLyWkfo13ofOW5M7SLh+k5pnIs07owXK2teFpnfaOEcycnSy7HQxldaVX1ZP/7Q8oO1eDuQJNwbomQq5Q==} engines: {node: '>=14'} hasBin: true @@ -9238,13 +9238,13 @@ snapshots: '@humanwhocodes/retry@0.4.1': {} - '@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.3.3)': + '@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.4.0)': dependencies: '@babel/generator': 7.26.2 '@babel/parser': 7.26.2 '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 - prettier: 3.3.3 + prettier: 3.4.0 semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -13777,7 +13777,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier@3.3.3: {} + prettier@3.4.0: {} pretty-format@3.8.0: {} diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json index dfec1f530..c1a637374 100644 --- a/tooling/prettier/package.json +++ b/tooling/prettier/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@ianvs/prettier-plugin-sort-imports": "^4.4.0", - "prettier": "^3.3.3" + "prettier": "^3.4.0" }, "devDependencies": { "@homarr/tsconfig": "workspace:^0.1.0", From 907c28c945bc7e7ac2c600f7c7a04750ff7465d6 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 10:36:21 +0000 Subject: [PATCH 28/48] fix(deps): update dependency next-intl to v3.25.3 (#1551) 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 6462c0f59..d0f604ef6 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.7", "next": "^14.2.18", - "next-intl": "3.25.2", + "next-intl": "3.25.3", "react": "^18.3.1" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 895c7fe50..2a971627a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1474,8 +1474,8 @@ importers: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) next-intl: - specifier: 3.25.2 - version: 3.25.2(next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) + specifier: 3.25.3 + version: 3.25.3(next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -6403,8 +6403,8 @@ packages: nodemailer: optional: true - next-intl@3.25.2: - resolution: {integrity: sha512-C2BoRMX3h+KxCf5TC6BjlnZie2EOCK+QZz4C9A7xGf++1E/r1uD25wT8EZBaQAkO2uKKhBoZg78X8j8r2HPsag==} + next-intl@3.25.3: + resolution: {integrity: sha512-3VQ+OZdU9Z2enx5uWLYfmd/eb/gZN6QIfj59ROE/R+MTSD7ZAOPsGFnKqj5wwqm4EISGviYenkSuxypyYnhomA==} peerDependencies: next: ^10.0.0 || ^11.0.0 || ^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 @@ -8017,8 +8017,8 @@ packages: peerDependencies: react: '>=16.13' - use-intl@3.25.2: - resolution: {integrity: sha512-xDnhI2+5vzeF3k/fS4Qn4vv5dFUZw8O7T5m2G6VfLUcgHayBrTCWhlqowOQmGHDsf+j52WU+cpFOApcTZ2tl+A==} + use-intl@3.25.3: + resolution: {integrity: sha512-zF+GHRx7auT1qpmiPMN+RnzSad6W5ZjhOpgC5Li/TByqCkMs4SP3xcd8C0jWxT8YI8Ucl518bnkS+gvKIvrXjw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 @@ -13322,13 +13322,13 @@ snapshots: next: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 - next-intl@3.25.2(next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1): + next-intl@3.25.3(next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 next: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 - use-intl: 3.25.2(react@18.3.1) + use-intl: 3.25.3(react@18.3.1) next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0): dependencies: @@ -15215,7 +15215,7 @@ snapshots: dequal: 2.0.3 react: 18.3.1 - use-intl@3.25.2(react@18.3.1): + use-intl@3.25.3(react@18.3.1): dependencies: '@formatjs/fast-memoize': 2.2.1 intl-messageformat: 10.7.1 From 63f863748ea287d2ab9b7c837f81cd025250a3a5 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 11:25:24 +0000 Subject: [PATCH 29/48] chore(deps): update dependency @vitejs/plugin-react to ^4.3.4 (#1552) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 304 ++++++------------------------------------------- 2 files changed, 38 insertions(+), 268 deletions(-) diff --git a/package.json b/package.json index 557594ec6..b4618f11a 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", "@turbo/gen": "^2.3.2", - "@vitejs/plugin-react": "^4.3.3", + "@vitejs/plugin-react": "^4.3.4", "@vitest/coverage-v8": "^2.1.5", "@vitest/ui": "^2.1.5", "cross-env": "^7.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2a971627a..40bd8ef22 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: ^2.3.2 version: 2.3.2(@types/node@22.10.0)(typescript@5.7.2) '@vitejs/plugin-react': - specifier: ^4.3.3 - version: 4.3.3(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + specifier: ^4.3.4 + version: 4.3.4(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': specifier: ^2.1.5 version: 2.1.5(vitest@2.1.5) @@ -515,7 +515,7 @@ importers: version: 4.0.2 next: specifier: ^14.2.18 - version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: specifier: ^18.3.1 version: 18.3.1 @@ -585,10 +585,10 @@ importers: version: 7.2.1 next: specifier: ^14.2.18 - version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) next-auth: specifier: 5.0.0-beta.25 - version: 5.0.0-beta.25(next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) + version: 5.0.0-beta.25(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -665,7 +665,7 @@ importers: version: 1.11.13 next: specifier: ^14.2.18 - version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: specifier: ^18.3.1 version: 18.3.1 @@ -1142,7 +1142,7 @@ importers: version: 1.11.13 next: specifier: ^14.2.18 - version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: specifier: ^18.3.1 version: 18.3.1 @@ -1429,7 +1429,7 @@ importers: version: 2.10.3(@types/react@18.3.12)(react@18.3.1) next: specifier: ^14.2.18 - version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: specifier: ^18.3.1 version: 18.3.1 @@ -1472,10 +1472,10 @@ importers: version: 2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 - version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) next-intl: specifier: 3.25.3 - version: 3.25.3(next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) + version: 3.25.3(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -1530,7 +1530,7 @@ importers: version: 2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 - version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: specifier: ^18.3.1 version: 18.3.1 @@ -1706,7 +1706,7 @@ importers: version: 2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 - version: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: specifier: ^18.3.1 version: 18.3.1 @@ -1840,72 +1840,38 @@ packages: resolution: {integrity: sha512-Zm10TczcMLounWqC42nMkXQ7XKLqjzLrd5ia022oBKDUZqAFVg2y9d1quQVNV4FlXyg9MKDdfMjpKQRmzEGaog==} engines: {node: '>=16'} - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} - '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.4': - resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} - engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.2': resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} - '@babel/core@7.25.2': - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} - engines: {node: '>=6.9.0'} - '@babel/core@7.26.0': resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.25.6': - resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.26.2': resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.2': - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} - engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.9': resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.25.9': resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.25.2': - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.26.0': resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-plugin-utils@7.24.8': - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.25.9': @@ -1916,44 +1882,27 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.8': - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.25.9': resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.6': - resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.26.0': resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.25.6': - resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.26.2': resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-transform-react-jsx-self@7.24.7': - resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + '@babel/plugin-transform-react-jsx-self@7.25.9': + resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-source@7.24.7': - resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + '@babel/plugin-transform-react-jsx-source@7.25.9': + resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1966,18 +1915,10 @@ packages: resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} engines: {node: '>=6.9.0'} - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} - engines: {node: '>=6.9.0'} - '@babel/template@7.25.9': resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.6': - resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.9': resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} @@ -3980,11 +3921,11 @@ packages: '@videojs/xhr@2.7.0': resolution: {integrity: sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==} - '@vitejs/plugin-react@4.3.3': - resolution: {integrity: sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==} + '@vitejs/plugin-react@4.3.4': + resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 '@vitest/coverage-v8@2.1.5': resolution: {integrity: sha512-/RoopB7XGW7UEkUndRXF87A9CwkoZAJW01pj8/3pgmDVsjMH2IKy6H1A38po9tmUlwhSyYs0az82rbKd9Yaynw==} @@ -4373,11 +4314,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - browserslist@4.24.2: resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -5022,9 +4958,6 @@ packages: effect@3.9.2: resolution: {integrity: sha512-1sx/v1HTWHTodXfzWxAFg+SCF+ACgpJVruaAMIh/NmDVvrUsf0x9PzpXvkgJUbQ1fMdmKYK//FqxeHSQ+Zxv/Q==} - electron-to-chromium@1.5.23: - resolution: {integrity: sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA==} - electron-to-chromium@1.5.55: resolution: {integrity: sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==} @@ -6015,11 +5948,6 @@ packages: canvas: optional: true - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -7962,12 +7890,6 @@ packages: unraw@3.0.0: resolution: {integrity: sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==} - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true @@ -8437,41 +8359,14 @@ snapshots: fetch-retry: 6.0.0 uuid: 8.3.2 - '@babel/code-frame@7.24.7': - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.1.0 - '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 picocolors: 1.1.0 - '@babel/compat-data@7.25.4': {} - '@babel/compat-data@7.26.2': {} - '@babel/core@7.25.2': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.26.0 - convert-source-map: 2.0.0 - debug: 4.3.7 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 @@ -8492,13 +8387,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.25.6': - dependencies: - '@babel/types': 7.26.0 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - '@babel/generator@7.26.2': dependencies: '@babel/parser': 7.26.2 @@ -8507,14 +8395,6 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 - '@babel/helper-compilation-targets@7.25.2': - dependencies: - '@babel/compat-data': 7.25.4 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 - lru-cache: 5.1.1 - semver: 6.3.1 - '@babel/helper-compilation-targets@7.25.9': dependencies: '@babel/compat-data': 7.26.2 @@ -8523,13 +8403,6 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-module-imports@7.24.7': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-imports@7.25.9': dependencies: '@babel/traverse': 7.25.9 @@ -8537,16 +8410,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -8556,57 +8419,32 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-plugin-utils@7.24.8': {} - - '@babel/helper-simple-access@7.24.7': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils@7.25.9': {} '@babel/helper-string-parser@7.25.9': {} '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-option@7.24.8': {} - '@babel/helper-validator-option@7.25.9': {} - '@babel/helpers@7.25.6': - dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - '@babel/helpers@7.26.0': dependencies: '@babel/template': 7.25.9 '@babel/types': 7.26.0 - '@babel/highlight@7.24.7': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.0 - - '@babel/parser@7.25.6': - dependencies: - '@babel/types': 7.26.0 - '@babel/parser@7.26.2': dependencies: '@babel/types': 7.26.0 - '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 '@babel/runtime-corejs3@7.25.6': dependencies: @@ -8617,30 +8455,12 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.25.0': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 - '@babel/template@7.25.9': dependencies: '@babel/code-frame': 7.26.2 '@babel/parser': 7.26.2 '@babel/types': 7.26.0 - '@babel/traverse@7.25.6': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - debug: 4.3.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.25.9': dependencies: '@babel/code-frame': 7.26.2 @@ -10335,7 +10155,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.25.6 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 @@ -10645,11 +10465,11 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.3.3(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) @@ -11148,13 +10968,6 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.23.3: - dependencies: - caniuse-lite: 1.0.30001679 - electron-to-chromium: 1.5.23 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) - browserslist@4.24.2: dependencies: caniuse-lite: 1.0.30001679 @@ -11714,8 +11527,6 @@ snapshots: effect@3.9.2: {} - electron-to-chromium@1.5.23: {} - electron-to-chromium@1.5.55: {} emoji-regex@8.0.0: {} @@ -12978,8 +12789,6 @@ snapshots: - supports-color - utf-8-validate - jsesc@2.5.2: {} - jsesc@3.0.2: {} json-buffer@3.0.1: {} @@ -13316,46 +13125,20 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.25(next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1): + next-auth@5.0.0-beta.25(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1): dependencies: '@auth/core': 0.37.2 - next: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + next: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 - next-intl@3.25.3(next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1): + next-intl@3.25.3(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 - next: 14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) + next: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 use-intl: 3.25.3(react@18.3.1) - next@14.2.18(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0): - dependencies: - '@next/env': 14.2.18 - '@swc/helpers': 0.5.5 - busboy: 1.6.0 - caniuse-lite: 1.0.30001679 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.25.2)(react@18.3.1) - optionalDependencies: - '@next/swc-darwin-arm64': 14.2.18 - '@next/swc-darwin-x64': 14.2.18 - '@next/swc-linux-arm64-gnu': 14.2.18 - '@next/swc-linux-arm64-musl': 14.2.18 - '@next/swc-linux-x64-gnu': 14.2.18 - '@next/swc-linux-x64-musl': 14.2.18 - '@next/swc-win32-arm64-msvc': 14.2.18 - '@next/swc-win32-ia32-msvc': 14.2.18 - '@next/swc-win32-x64-msvc': 14.2.18 - sass: 1.81.0 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0): dependencies: '@next/env': 14.2.18 @@ -14629,13 +14412,6 @@ snapshots: strnum@1.0.5: {} - styled-jsx@5.1.1(@babel/core@7.25.2)(react@18.3.1): - dependencies: - client-only: 0.0.1 - react: 18.3.1 - optionalDependencies: - '@babel/core': 7.25.2 - styled-jsx@5.1.1(@babel/core@7.26.0)(react@18.3.1): dependencies: client-only: 0.0.1 @@ -15143,12 +14919,6 @@ snapshots: unraw@3.0.0: {} - update-browserslist-db@1.1.0(browserslist@4.23.3): - dependencies: - browserslist: 4.23.3 - escalade: 3.2.0 - picocolors: 1.1.0 - update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: browserslist: 4.24.2 From 37f961c8cc8f0db93d3a5a6adc48aca93ac3b03f Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 13:31:41 +0000 Subject: [PATCH 30/48] chore(deps): update vitest monorepo to ^2.1.6 (#1553) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 6 +-- pnpm-lock.yaml | 132 ++++++++++++++++++++++++------------------------- 2 files changed, 69 insertions(+), 69 deletions(-) diff --git a/package.json b/package.json index b4618f11a..78aa09dde 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,8 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@turbo/gen": "^2.3.2", "@vitejs/plugin-react": "^4.3.4", - "@vitest/coverage-v8": "^2.1.5", - "@vitest/ui": "^2.1.5", + "@vitest/coverage-v8": "^2.1.6", + "@vitest/ui": "^2.1.6", "cross-env": "^7.0.3", "jsdom": "^25.0.1", "prettier": "^3.4.0", @@ -40,7 +40,7 @@ "turbo": "^2.3.2", "typescript": "^5.7.2", "vite-tsconfig-paths": "^5.1.3", - "vitest": "^2.1.5" + "vitest": "^2.1.6" }, "packageManager": "pnpm@9.14.2", "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 40bd8ef22..b71363a5e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,11 +18,11 @@ importers: specifier: ^4.3.4 version: 4.3.4(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': - specifier: ^2.1.5 - version: 2.1.5(vitest@2.1.5) + specifier: ^2.1.6 + version: 2.1.6(vitest@2.1.6) '@vitest/ui': - specifier: ^2.1.5 - version: 2.1.5(vitest@2.1.5) + specifier: ^2.1.6 + version: 2.1.6(vitest@2.1.6) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -45,8 +45,8 @@ importers: specifier: ^5.1.3 version: 5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: - specifier: ^2.1.5 - version: 2.1.5(@types/node@22.10.0)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + specifier: ^2.1.6 + version: 2.1.6(@types/node@22.10.0)(@vitest/ui@2.1.6)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) apps/nextjs: dependencies: @@ -3927,48 +3927,48 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - '@vitest/coverage-v8@2.1.5': - resolution: {integrity: sha512-/RoopB7XGW7UEkUndRXF87A9CwkoZAJW01pj8/3pgmDVsjMH2IKy6H1A38po9tmUlwhSyYs0az82rbKd9Yaynw==} + '@vitest/coverage-v8@2.1.6': + resolution: {integrity: sha512-qItJVYDbG3MUFO68dOZUz+rWlqe9LMzotERXFXKg25s2A/kSVsyS9O0yNGrITfBd943GsnBeQZkBUu7Pc+zVeA==} peerDependencies: - '@vitest/browser': 2.1.5 - vitest: 2.1.5 + '@vitest/browser': 2.1.6 + vitest: 2.1.6 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@2.1.5': - resolution: {integrity: sha512-nZSBTW1XIdpZvEJyoP/Sy8fUg0b8od7ZpGDkTUcfJ7wz/VoZAFzFfLyxVxGFhUjJzhYqSbIpfMtl/+k/dpWa3Q==} + '@vitest/expect@2.1.6': + resolution: {integrity: sha512-9M1UR9CAmrhJOMoSwVnPh2rELPKhYo0m/CSgqw9PyStpxtkwhmdM6XYlXGKeYyERY1N6EIuzkQ7e3Lm1WKCoUg==} - '@vitest/mocker@2.1.5': - resolution: {integrity: sha512-XYW6l3UuBmitWqSUXTNXcVBUCRytDogBsWuNXQijc00dtnU/9OqpXWp4OJroVrad/gLIomAq9aW8yWDBtMthhQ==} + '@vitest/mocker@2.1.6': + resolution: {integrity: sha512-MHZp2Z+Q/A3am5oD4WSH04f9B0T7UvwEb+v5W0kCYMhtXGYbdyl2NUk1wdSMqGthmhpiThPDp/hEoVwu16+u1A==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 + vite: ^5.0.0 || ^6.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@2.1.5': - resolution: {integrity: sha512-4ZOwtk2bqG5Y6xRGHcveZVr+6txkH7M2e+nPFd6guSoN638v/1XQ0K06eOpi0ptVU/2tW/pIU4IoPotY/GZ9fw==} + '@vitest/pretty-format@2.1.6': + resolution: {integrity: sha512-exZyLcEnHgDMKc54TtHca4McV4sKT+NKAe9ix/yhd/qkYb/TP8HTyXRFDijV19qKqTZM0hPL4753zU/U8L/gAA==} - '@vitest/runner@2.1.5': - resolution: {integrity: sha512-pKHKy3uaUdh7X6p1pxOkgkVAFW7r2I818vHDthYLvUyjRfkKOU6P45PztOch4DZarWQne+VOaIMwA/erSSpB9g==} + '@vitest/runner@2.1.6': + resolution: {integrity: sha512-SjkRGSFyrA82m5nz7To4CkRSEVWn/rwQISHoia/DB8c6IHIhaE/UNAo+7UfeaeJRE979XceGl00LNkIz09RFsA==} - '@vitest/snapshot@2.1.5': - resolution: {integrity: sha512-zmYw47mhfdfnYbuhkQvkkzYroXUumrwWDGlMjpdUr4jBd3HZiV2w7CQHj+z7AAS4VOtWxI4Zt4bWt4/sKcoIjg==} + '@vitest/snapshot@2.1.6': + resolution: {integrity: sha512-5JTWHw8iS9l3v4/VSuthCndw1lN/hpPB+mlgn1BUhFbobeIUj1J1V/Bj2t2ovGEmkXLTckFjQddsxS5T6LuVWw==} - '@vitest/spy@2.1.5': - resolution: {integrity: sha512-aWZF3P0r3w6DiYTVskOYuhBc7EMc3jvn1TkBg8ttylFFRqNN2XGD7V5a4aQdk6QiUzZQ4klNBSpCLJgWNdIiNw==} + '@vitest/spy@2.1.6': + resolution: {integrity: sha512-oTFObV8bd4SDdRka5O+mSh5w9irgx5IetrD5i+OsUUsk/shsBoHifwCzy45SAORzAhtNiprUVaK3hSCCzZh1jQ==} - '@vitest/ui@2.1.5': - resolution: {integrity: sha512-ERgKkDMTfngrZip6VG5h8L9B5D0AH/4+bga4yR1UzGH7c2cxv3LWogw2Dvuwr9cP3/iKDHYys7kIFLDKpxORTg==} + '@vitest/ui@2.1.6': + resolution: {integrity: sha512-SrpLAM0/xpOjXBDv3mayFh5TDEYM59fmEmJXgp1AqtpUWHVw4Tonp6Z9dVBhChU/Q+BY57m74nrQZK8vxKDrMQ==} peerDependencies: - vitest: 2.1.5 + vitest: 2.1.6 - '@vitest/utils@2.1.5': - resolution: {integrity: sha512-yfj6Yrp0Vesw2cwJbP+cl04OC+IHFsuQsrsJBL9pyGeQXE56v1UAOQco+SR55Vf1nQzfV0QJg1Qum7AaWUwwYg==} + '@vitest/utils@2.1.6': + resolution: {integrity: sha512-ixNkFy3k4vokOUTU2blIUvOgKq/N2PW8vKIjZZYsGJCMX69MRa9J2sKqX5hY/k5O5Gty3YJChepkqZ3KM9LyIQ==} '@webassemblyjs/ast@1.12.1': resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} @@ -8010,9 +8010,9 @@ packages: videojs-vtt.js@0.15.5: resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} - vite-node@2.1.5: - resolution: {integrity: sha512-rd0QIgx74q4S1Rd56XIiL2cYEdyWn13cunYBIuqh9mpmQr7gGS0IxXoP8R6OaZtNQQLyXSWbd4rXKYUbhFpK5w==} - engines: {node: ^18.0.0 || >=20.0.0} + vite-node@2.1.6: + resolution: {integrity: sha512-DBfJY0n9JUwnyLxPSSUmEePT21j8JZp/sR9n+/gBwQU6DcQOioPdb8/pibWfXForbirSagZCilseYIwaL3f95A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true vite-tsconfig-paths@5.1.3: @@ -8054,15 +8054,15 @@ packages: terser: optional: true - vitest@2.1.5: - resolution: {integrity: sha512-P4ljsdpuzRTPI/kbND2sDZ4VmieerR2c9szEZpjc+98Z9ebvnXmM5+0tHEKqYZumXqlvnmfWsjeFOjXVriDG7A==} - engines: {node: ^18.0.0 || >=20.0.0} + vitest@2.1.6: + resolution: {integrity: sha512-isUCkvPL30J4c5O5hgONeFRsDmlw6kzFEdLQHLezmDdKQHy8Ke/B/dgdTMEgU0vm+iZ0TjW8GuK83DiahBoKWQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.5 - '@vitest/ui': 2.1.5 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 2.1.6 + '@vitest/ui': 2.1.6 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -10476,7 +10476,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@2.1.5(vitest@2.1.5)': + '@vitest/coverage-v8@2.1.6(vitest@2.1.6)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -10490,58 +10490,58 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.5(@types/node@22.10.0)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.6(@types/node@22.10.0)(@vitest/ui@2.1.6)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color - '@vitest/expect@2.1.5': + '@vitest/expect@2.1.6': dependencies: - '@vitest/spy': 2.1.5 - '@vitest/utils': 2.1.5 + '@vitest/spy': 2.1.6 + '@vitest/utils': 2.1.6 chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.5(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitest/mocker@2.1.6(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: - '@vitest/spy': 2.1.5 + '@vitest/spy': 2.1.6 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) - '@vitest/pretty-format@2.1.5': + '@vitest/pretty-format@2.1.6': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.5': + '@vitest/runner@2.1.6': dependencies: - '@vitest/utils': 2.1.5 + '@vitest/utils': 2.1.6 pathe: 1.1.2 - '@vitest/snapshot@2.1.5': + '@vitest/snapshot@2.1.6': dependencies: - '@vitest/pretty-format': 2.1.5 + '@vitest/pretty-format': 2.1.6 magic-string: 0.30.12 pathe: 1.1.2 - '@vitest/spy@2.1.5': + '@vitest/spy@2.1.6': dependencies: tinyspy: 3.0.2 - '@vitest/ui@2.1.5(vitest@2.1.5)': + '@vitest/ui@2.1.6(vitest@2.1.6)': dependencies: - '@vitest/utils': 2.1.5 + '@vitest/utils': 2.1.6 fflate: 0.8.2 flatted: 3.3.1 pathe: 1.1.2 sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.5(@types/node@22.10.0)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.6(@types/node@22.10.0)(@vitest/ui@2.1.6)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) - '@vitest/utils@2.1.5': + '@vitest/utils@2.1.6': dependencies: - '@vitest/pretty-format': 2.1.5 + '@vitest/pretty-format': 2.1.6 loupe: 3.1.2 tinyrainbow: 1.2.0 @@ -15052,7 +15052,7 @@ snapshots: dependencies: global: 4.4.0 - vite-node@2.1.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite-node@2.1.6(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.3.7 @@ -15093,15 +15093,15 @@ snapshots: sugarss: 4.0.1(postcss@8.4.47) terser: 5.32.0 - vitest@2.1.5(@types/node@22.10.0)(@vitest/ui@2.1.5)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vitest@2.1.6(@types/node@22.10.0)(@vitest/ui@2.1.6)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: - '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) - '@vitest/pretty-format': 2.1.5 - '@vitest/runner': 2.1.5 - '@vitest/snapshot': 2.1.5 - '@vitest/spy': 2.1.5 - '@vitest/utils': 2.1.5 + '@vitest/expect': 2.1.6 + '@vitest/mocker': 2.1.6(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + '@vitest/pretty-format': 2.1.6 + '@vitest/runner': 2.1.6 + '@vitest/snapshot': 2.1.6 + '@vitest/spy': 2.1.6 + '@vitest/utils': 2.1.6 chai: 5.1.2 debug: 4.3.7 expect-type: 1.1.0 @@ -15113,11 +15113,11 @@ snapshots: tinypool: 1.0.1 tinyrainbow: 1.2.0 vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) - vite-node: 2.1.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite-node: 2.1.6(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.10.0 - '@vitest/ui': 2.1.5(vitest@2.1.5) + '@vitest/ui': 2.1.6(vitest@2.1.6) jsdom: 25.0.1 transitivePeerDependencies: - less From 27b8f65238eca00e6f51f681c4689199cae22728 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 13:45:22 +0000 Subject: [PATCH 31/48] fix(deps): update dependency prettier to ^3.4.1 (#1554) 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 +- package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- packages/db/package.json | 2 +- pnpm-lock.yaml | 44 +++++++++++++++++------------------ tooling/prettier/package.json | 2 +- 9 files changed, 30 insertions(+), 30 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index c9fa9ac22..45b6c9c0f 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -88,7 +88,7 @@ "concurrently": "^9.1.0", "eslint": "^9.15.0", "node-loader": "^2.1.0", - "prettier": "^3.4.0", + "prettier": "^3.4.1", "typescript": "^5.7.2" } } diff --git a/apps/tasks/package.json b/apps/tasks/package.json index c4d252b72..9f77a9cae 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -47,7 +47,7 @@ "@types/node": "^22.10.0", "dotenv-cli": "^7.4.4", "eslint": "^9.15.0", - "prettier": "^3.4.0", + "prettier": "^3.4.1", "tsx": "4.19.2", "typescript": "^5.7.2" } diff --git a/apps/websocket/package.json b/apps/websocket/package.json index aab9e6667..89b3ca38c 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -35,7 +35,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/ws": "^8.5.13", "eslint": "^9.15.0", - "prettier": "^3.4.0", + "prettier": "^3.4.1", "typescript": "^5.7.2" } } diff --git a/package.json b/package.json index 78aa09dde..ef4f8247d 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@vitest/ui": "^2.1.6", "cross-env": "^7.0.3", "jsdom": "^25.0.1", - "prettier": "^3.4.0", + "prettier": "^3.4.1", "testcontainers": "^10.15.0", "turbo": "^2.3.2", "typescript": "^5.7.2", diff --git a/packages/api/package.json b/packages/api/package.json index 076d07e4e..c1ed99462 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -51,7 +51,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/dockerode": "^3.3.32", "eslint": "^9.15.0", - "prettier": "^3.4.0", + "prettier": "^3.4.1", "typescript": "^5.7.2" } } diff --git a/packages/auth/package.json b/packages/auth/package.json index 6ab83671a..df8f3050e 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -46,7 +46,7 @@ "@types/bcrypt": "5.0.2", "@types/cookies": "0.9.0", "eslint": "^9.15.0", - "prettier": "^3.4.0", + "prettier": "^3.4.1", "typescript": "^5.7.2" } } diff --git a/packages/db/package.json b/packages/db/package.json index 308b77668..75ce7e73b 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -57,7 +57,7 @@ "@types/better-sqlite3": "7.6.12", "dotenv-cli": "^7.4.4", "eslint": "^9.15.0", - "prettier": "^3.4.0", + "prettier": "^3.4.1", "tsx": "4.19.2", "typescript": "^5.7.2" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b71363a5e..8969ced60 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: ^25.0.1 version: 25.0.1 prettier: - specifier: ^3.4.0 - version: 3.4.0 + specifier: ^3.4.1 + version: 3.4.1 testcontainers: specifier: ^10.15.0 version: 10.15.0 @@ -265,8 +265,8 @@ importers: specifier: ^2.1.0 version: 2.1.0(webpack@5.94.0) prettier: - specifier: ^3.4.0 - version: 3.4.0 + specifier: ^3.4.1 + version: 3.4.1 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -350,8 +350,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 prettier: - specifier: ^3.4.0 - version: 3.4.0 + specifier: ^3.4.1 + version: 3.4.1 tsx: specifier: 4.19.2 version: 4.19.2 @@ -411,8 +411,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 prettier: - specifier: ^3.4.0 - version: 3.4.0 + specifier: ^3.4.1 + version: 3.4.1 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -542,8 +542,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 prettier: - specifier: ^3.4.0 - version: 3.4.0 + specifier: ^3.4.1 + version: 3.4.1 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -615,8 +615,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 prettier: - specifier: ^3.4.0 - version: 3.4.0 + specifier: ^3.4.1 + version: 3.4.1 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -898,8 +898,8 @@ importers: specifier: ^9.15.0 version: 9.15.0 prettier: - specifier: ^3.4.0 - version: 3.4.0 + specifier: ^3.4.1 + version: 3.4.1 tsx: specifier: 4.19.2 version: 4.19.2 @@ -1779,10 +1779,10 @@ importers: dependencies: '@ianvs/prettier-plugin-sort-imports': specifier: ^4.4.0 - version: 4.4.0(prettier@3.4.0) + version: 4.4.0(prettier@3.4.1) prettier: - specifier: ^3.4.0 - version: 3.4.0 + specifier: ^3.4.1 + version: 3.4.1 devDependencies: '@homarr/tsconfig': specifier: workspace:^0.1.0 @@ -6713,8 +6713,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.4.0: - resolution: {integrity: sha512-/OXNZcLyWkfo13ofOW5M7SLh+k5pnIs07owXK2teFpnfaOEcycnSy7HQxldaVX1ZP/7Q8oO1eDuQJNwbomQq5Q==} + prettier@3.4.1: + resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==} engines: {node: '>=14'} hasBin: true @@ -9058,13 +9058,13 @@ snapshots: '@humanwhocodes/retry@0.4.1': {} - '@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.4.0)': + '@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.4.1)': dependencies: '@babel/generator': 7.26.2 '@babel/parser': 7.26.2 '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 - prettier: 3.4.0 + prettier: 3.4.1 semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -13560,7 +13560,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier@3.4.0: {} + prettier@3.4.1: {} pretty-format@3.8.0: {} diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json index c1a637374..b0cd18034 100644 --- a/tooling/prettier/package.json +++ b/tooling/prettier/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@ianvs/prettier-plugin-sort-imports": "^4.4.0", - "prettier": "^3.4.0" + "prettier": "^3.4.1" }, "devDependencies": { "@homarr/tsconfig": "workspace:^0.1.0", From 91a199f7d6014c97425b55f2a419b252b766b4c3 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 13:52:34 +0000 Subject: [PATCH 32/48] fix(deps): update tanstack-query monorepo to ^5.61.4 (#1555) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 6 ++-- pnpm-lock.yaml | 70 ++++++++++++++++++++-------------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 45b6c9c0f..f33bf8593 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -45,9 +45,9 @@ "@million/lint": "1.0.12", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.22.0", - "@tanstack/react-query": "^5.61.3", - "@tanstack/react-query-devtools": "^5.61.3", - "@tanstack/react-query-next-experimental": "5.61.3", + "@tanstack/react-query": "^5.61.4", + "@tanstack/react-query-devtools": "^5.61.4", + "@tanstack/react-query-next-experimental": "5.61.4", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8969ced60..9b690bb29 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -141,23 +141,23 @@ importers: specifier: ^3.22.0 version: 3.22.0(react@18.3.1) '@tanstack/react-query': - specifier: ^5.61.3 - version: 5.61.3(react@18.3.1) + specifier: ^5.61.4 + version: 5.61.4(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.61.3 - version: 5.61.3(@tanstack/react-query@5.61.3(react@18.3.1))(react@18.3.1) + specifier: ^5.61.4 + version: 5.61.4(@tanstack/react-query@5.61.4(react@18.3.1))(react@18.3.1) '@tanstack/react-query-next-experimental': - specifier: 5.61.3 - version: 5.61.3(@tanstack/react-query@5.61.3(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) + specifier: 5.61.4 + version: 5.61.4(@tanstack/react-query@5.61.4(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) '@trpc/client': specifier: next version: 11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.645(typescript@5.7.2) @@ -506,7 +506,7 @@ importers: version: 11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.645(typescript@5.7.2) @@ -3362,27 +3362,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.60.6': - resolution: {integrity: sha512-tI+k0KyCo1EBJ54vxK1kY24LWj673ujTydCZmzEZKAew4NqZzTaVQJEuaG1qKj2M03kUHN46rchLRd+TxVq/zQ==} + '@tanstack/query-core@5.61.4': + resolution: {integrity: sha512-rsnemyhPvEG4ViZe0R2UQDM8NgQS/BNC5/Gf9RTs0TKN5thUhPUwnL2anWG4jxAGKFyDfvG7PXbx6MRq3hxi1w==} - '@tanstack/query-devtools@5.61.3': - resolution: {integrity: sha512-AoRco+DMw7Xy9fFs+5BxBop82YPKs1/tWpTPoO1iYVwPLmAU+znnLfWyZ8Qr5OiEqoS0dCyEe6F5V11/JkCK/A==} + '@tanstack/query-devtools@5.61.4': + resolution: {integrity: sha512-21Tw+u8E3IJJj4A/Bct4H0uBaDTEu7zBrR79FeSyY+mS2gx5/m316oDtJiKkILc819VSTYt+sFzODoJNcpPqZQ==} - '@tanstack/react-query-devtools@5.61.3': - resolution: {integrity: sha512-bR/TaiOSqTq0M5dmYY+pJeSnl5QAuCaRRmJg+Q5hEqt6uTHgKz5WO4jdi8BywRJiZhpXLirlUAIOXJsZ8ukqSA==} + '@tanstack/react-query-devtools@5.61.4': + resolution: {integrity: sha512-A4lqdK5cpskk+WPu17Nv7X3uEIsB4MQ5/Mdz12CQFuUVvmLHjBz1Ghc3QbQVwmHiXo4JM6Y00udTaEKtJSVAkA==} peerDependencies: - '@tanstack/react-query': ^5.61.3 + '@tanstack/react-query': ^5.61.4 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.61.3': - resolution: {integrity: sha512-VO3Xc0oZA8r493lx5AUU9UhrcZhAkiApjsliuHC2vurNSdbJnR4Khzl8lzLe84AgyTpnmIVbSHSf1+IlurluOg==} + '@tanstack/react-query-next-experimental@5.61.4': + resolution: {integrity: sha512-H5jUqQtW5IaPlMMAgbRr8rQLjvYfY/5hdpMis19clLNBSCDysqSxFgqZMWFb3g9U1FCrmIr+GYDBTc0zow9lLg==} peerDependencies: - '@tanstack/react-query': ^5.61.3 + '@tanstack/react-query': ^5.61.4 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.61.3': - resolution: {integrity: sha512-c3Oz9KaCBapGkRewu7AJLhxE9BVqpMcHsd3KtFxSd7FSCu2qGwqfIN37zbSGoyk6Ix9LGZBNHQDPI6GpWABnmA==} + '@tanstack/react-query@5.61.4': + resolution: {integrity: sha512-Nh5+0V4fRVShSeDHFTVvzJrvwTdafIvqxyZUrad71kJWL7J+J5Wrd/xcHTWfSL1mR/9eoufd2roXOpL3F16ECA==} peerDependencies: react: ^18 || ^19 @@ -9823,25 +9823,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.60.6': {} + '@tanstack/query-core@5.61.4': {} - '@tanstack/query-devtools@5.61.3': {} + '@tanstack/query-devtools@5.61.4': {} - '@tanstack/react-query-devtools@5.61.3(@tanstack/react-query@5.61.3(react@18.3.1))(react@18.3.1)': + '@tanstack/react-query-devtools@5.61.4(@tanstack/react-query@5.61.4(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/query-devtools': 5.61.3 - '@tanstack/react-query': 5.61.3(react@18.3.1) + '@tanstack/query-devtools': 5.61.4 + '@tanstack/react-query': 5.61.4(react@18.3.1) react: 18.3.1 - '@tanstack/react-query-next-experimental@5.61.3(@tanstack/react-query@5.61.3(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1)': + '@tanstack/react-query-next-experimental@5.61.4(@tanstack/react-query@5.61.4(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1)': dependencies: - '@tanstack/react-query': 5.61.3(react@18.3.1) + '@tanstack/react-query': 5.61.4(react@18.3.1) next: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 - '@tanstack/react-query@5.61.3(react@18.3.1)': + '@tanstack/react-query@5.61.4(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.60.6 + '@tanstack/query-core': 5.61.4 react: 18.3.1 '@tanstack/react-table@8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -10080,7 +10080,7 @@ snapshots: '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) @@ -10089,12 +10089,12 @@ snapshots: react-dom: 18.3.1(react@18.3.1) typescript: 5.7.2 optionalDependencies: - '@tanstack/react-query': 5.61.3(react@18.3.1) - '@trpc/react-query': 11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + '@tanstack/react-query': 5.61.4(react@18.3.1) + '@trpc/react-query': 11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.645(@tanstack/react-query@5.61.3(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: - '@tanstack/react-query': 5.61.3(react@18.3.1) + '@tanstack/react-query': 5.61.4(react@18.3.1) '@trpc/client': 11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) react: 18.3.1 From c1fe6551ce46c00304f1a9c1e6d2d7f301f47dcb Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 17:31:54 +0000 Subject: [PATCH 33/48] fix(deps): update tiptap monorepo to v2.10.3 (#1556) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/widgets/package.json | 30 +-- pnpm-lock.yaml | 454 +++++++++++++++++----------------- 2 files changed, 242 insertions(+), 242 deletions(-) diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 08ff3448d..36e6f3404 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -44,21 +44,21 @@ "@mantine/core": "^7.14.2", "@mantine/hooks": "^7.14.2", "@tabler/icons-react": "^3.22.0", - "@tiptap/extension-color": "2.10.2", - "@tiptap/extension-highlight": "2.10.2", - "@tiptap/extension-image": "2.10.2", - "@tiptap/extension-link": "^2.10.2", - "@tiptap/extension-table": "2.10.2", - "@tiptap/extension-table-cell": "2.10.2", - "@tiptap/extension-table-header": "2.10.2", - "@tiptap/extension-table-row": "2.10.2", - "@tiptap/extension-task-item": "2.10.2", - "@tiptap/extension-task-list": "2.10.2", - "@tiptap/extension-text-align": "2.10.2", - "@tiptap/extension-text-style": "2.10.2", - "@tiptap/extension-underline": "2.10.2", - "@tiptap/react": "^2.10.2", - "@tiptap/starter-kit": "^2.10.2", + "@tiptap/extension-color": "2.10.3", + "@tiptap/extension-highlight": "2.10.3", + "@tiptap/extension-image": "2.10.3", + "@tiptap/extension-link": "^2.10.3", + "@tiptap/extension-table": "2.10.3", + "@tiptap/extension-table-cell": "2.10.3", + "@tiptap/extension-table-header": "2.10.3", + "@tiptap/extension-table-row": "2.10.3", + "@tiptap/extension-task-item": "2.10.3", + "@tiptap/extension-task-list": "2.10.3", + "@tiptap/extension-text-align": "2.10.3", + "@tiptap/extension-text-style": "2.10.3", + "@tiptap/extension-underline": "2.10.3", + "@tiptap/react": "^2.10.3", + "@tiptap/starter-kit": "^2.10.3", "clsx": "^2.1.1", "dayjs": "^1.11.13", "mantine-react-table": "2.0.0-beta.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9b690bb29..4614b8c81 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -130,7 +130,7 @@ importers: version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/tiptap': specifier: ^7.14.2 - version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tiptap/extension-link@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2))(@tiptap/react@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tiptap/extension-link@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3))(@tiptap/react@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@million/lint': specifier: 1.0.12 version: 1.0.12(rollup@4.21.3)(webpack-sources@3.2.3) @@ -1651,50 +1651,50 @@ importers: specifier: ^3.22.0 version: 3.22.0(react@18.3.1) '@tiptap/extension-color': - specifier: 2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/extension-text-style@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))) + specifier: 2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/extension-text-style@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))) '@tiptap/extension-highlight': - specifier: 2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) + specifier: 2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) '@tiptap/extension-image': - specifier: 2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) + specifier: 2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) '@tiptap/extension-link': - specifier: ^2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2) + specifier: ^2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) '@tiptap/extension-table': - specifier: 2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2) + specifier: 2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) '@tiptap/extension-table-cell': - specifier: 2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) + specifier: 2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) '@tiptap/extension-table-header': - specifier: 2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) + specifier: 2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) '@tiptap/extension-table-row': - specifier: 2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) + specifier: 2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) '@tiptap/extension-task-item': - specifier: 2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2) + specifier: 2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) '@tiptap/extension-task-list': - specifier: 2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) + specifier: 2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) '@tiptap/extension-text-align': - specifier: 2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) + specifier: 2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) '@tiptap/extension-text-style': - specifier: 2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) + specifier: 2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) '@tiptap/extension-underline': - specifier: 2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) + specifier: 2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) '@tiptap/react': - specifier: ^2.10.2 - version: 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^2.10.3 + version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tiptap/starter-kit': - specifier: ^2.10.2 - version: 2.10.2 + specifier: ^2.10.3 + version: 2.10.3 clsx: specifier: ^2.1.1 version: 2.1.1 @@ -3409,200 +3409,200 @@ packages: '@testcontainers/mysql@10.15.0': resolution: {integrity: sha512-YxAPlsigvjq0EPKbQuaPyQVgEa8nNIw2TPbtq7MyZh1eG3ePHKvpqEmDAu7GsfgJqYZU3YvK5b8Ty9Wo0qJYNA==} - '@tiptap/core@2.10.2': - resolution: {integrity: sha512-jYLXbYHTi1stLla/74J8NJizDtcJ/uokhG+1gN4DMWHDujaZOrRZhW98o9gN5BYAp4zv//TVX8H+afLZwKGCKQ==} + '@tiptap/core@2.10.3': + resolution: {integrity: sha512-wAG/0/UsLeZLmshWb6rtWNXKJftcmnned91/HLccHVQAuQZ1UWH+wXeQKu/mtodxEO7JcU2mVPR9mLGQkK0McQ==} peerDependencies: '@tiptap/pm': ^2.7.0 - '@tiptap/extension-blockquote@2.10.2': - resolution: {integrity: sha512-whmep+v0VvBI9Kg5TJ4sKIj7Z+MOjBKAndP0qn1bMoqPNNVRxt92iIud72wfXwfBNcrYiGNlssvsAnPwXfbG9w==} + '@tiptap/extension-blockquote@2.10.3': + resolution: {integrity: sha512-u9Mq4r8KzoeGVT8ms6FQDIMN95dTh3TYcT7fZpwcVM96mIl2Oyt+Bk66mL8z4zuFptfRI57Cu9QdnHEeILd//w==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bold@2.10.2': - resolution: {integrity: sha512-1KNTXA8HDkhXblkfeRYDdqAu/Xz2fygyaSrvabrfzg5QVYyVYPNJwjrtfTQNyzWOejBVGE3mOyqnjlLUzPmyYA==} + '@tiptap/extension-bold@2.10.3': + resolution: {integrity: sha512-xnF1tS2BsORenr11qyybW120gHaeHKiKq+ZOP14cGA0MsriKvWDnaCSocXP/xMEYHy7+2uUhJ0MsKkHVj4bPzQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bubble-menu@2.10.2': - resolution: {integrity: sha512-KAh2bvYcixJ3RFv2P05kPNLAJ4uW6BDj1AfEMn0YguBWWTgZg8Kot1AzBRgTjBBFCInQS6b49db1ff4M07DGsg==} + '@tiptap/extension-bubble-menu@2.10.3': + resolution: {integrity: sha512-e9a4yMjQezuKy0rtyyzxbV2IAE1bm1PY3yoZEFrcaY0o47g1CMUn2Hwe+9As2HdntEjQpWR7NO1mZeKxHlBPYA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-bullet-list@2.10.2': - resolution: {integrity: sha512-jXtTQXZ3j2cyG2dNyVnGauIbsX8CmDY56MJfDg1p+1UZ3zW2GVbKHfvyuulsjobxEd0DNLxduGqbkDY7x3I+HA==} + '@tiptap/extension-bullet-list@2.10.3': + resolution: {integrity: sha512-PTkwJOVlHi4RR4Wrs044tKMceweXwNmWA6EoQ93hPUVtQcwQL990Es5Izp+i88twTPLuGD9dH+o9QDyH9SkWdA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-code-block@2.10.2': - resolution: {integrity: sha512-Y/wkK9Ni4ALGqiGezov62p6cpPcJauBfn2wF1lgJVr6XJ4na5KTCUEbiyBZNbo3aD52vZKgWt8LpLvJ2/5STSw==} + '@tiptap/extension-code-block@2.10.3': + resolution: {integrity: sha512-yiDVNg22fYkzsFk5kBlDSHcjwVJgajvO/M5fDXA+Hfxwo2oNcG6aJyyHXFe+UaXTVjdkPej0J6kcMKrTMCiFug==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-code@2.10.2': - resolution: {integrity: sha512-VV14oeOsJ3VqUEjuUl+lzSW/IBLhurmcj9IiN2sq/Voin04dwvtchqP5fNXgmM3+rFM88zNOsbX0e4uSG4R10w==} + '@tiptap/extension-code@2.10.3': + resolution: {integrity: sha512-JyLbfyY3cPctq9sVdpcRWTcoUOoq3/MnGE1eP6eBNyMTHyBPcM9TPhOkgj+xkD1zW/884jfelB+wa70RT/AMxQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-color@2.10.2': - resolution: {integrity: sha512-lIUrsk8XBG0h8ft5vU6u0ehPk0pcZK3xjhOLF/qxiGhZNBynX5/Nb7mez05J0/P6GKsD9Hj6UD7wm4ZkGmNT9A==} + '@tiptap/extension-color@2.10.3': + resolution: {integrity: sha512-FC2hPMSQ4w9UmO9kJCAdoU7gHpDbJ6MeJAmikB9EPp16dbGwFLrZm9TZ/4pv74fGfVm0lv720316ALOEgPEDjQ==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/extension-text-style': ^2.7.0 - '@tiptap/extension-document@2.10.2': - resolution: {integrity: sha512-Xodp6rMg6vtKZkyX3I6gVd6OZ9PNz9udhDLdCG6JscVJQPO8viV++39UOH416FCvRT46BdHWNCRu/xjUG1C0rA==} + '@tiptap/extension-document@2.10.3': + resolution: {integrity: sha512-6i8+xbS2zB6t8iFzli1O/QB01MmwyI5Hqiiv4m5lOxqavmJwLss2sRhoMC2hB3CyFg5UmeODy/f/RnI6q5Vixg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-dropcursor@2.10.2': - resolution: {integrity: sha512-pzkD6Y9r3x4Mb6KqpuPraGNNfxIkQD6dJNtZ9PpU9jVtJDjsGIGdyzCbVJq984UAPBamXiF/5DLwlON7buLd6A==} + '@tiptap/extension-dropcursor@2.10.3': + resolution: {integrity: sha512-wzWf82ixWzZQr0hxcf/A0ul8NNxgy1N63O+c56st6OomoLuKUJWOXF+cs9O7V+/5rZKWdbdYYoRB5QLvnDBAlQ==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-floating-menu@2.10.2': - resolution: {integrity: sha512-s/KfW5YQY13BwhSQRlgomYmHuBT0k6FBxn8mgJLHcA9sTqgy/BriOhmNkMrredNzd4UOd5JVpcT6b+eckG4nkQ==} + '@tiptap/extension-floating-menu@2.10.3': + resolution: {integrity: sha512-Prg8rYLxeyzHxfzVu1mDkkUWMnD9ZN3y370O/1qy55e+XKVw9jFkTSuz0y0+OhMJG6bulYpDUMtb+N3+2xOWlQ==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-gapcursor@2.10.2': - resolution: {integrity: sha512-Uj2hIYC5zRPGI9xBYFwtld8JrZ8YZXEqO7sN5VcOwt12cnSmvzga86jUKpj3WOMP/8KamLWW8m8UKHd7Qg1kMA==} + '@tiptap/extension-gapcursor@2.10.3': + resolution: {integrity: sha512-FskZi2DqDSTH1WkgLF2OLy0xU7qj3AgHsKhVsryeAtld4jAK5EsonneWgaipbz0e/MxuIvc1oyacfZKABpLaNg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-hard-break@2.10.2': - resolution: {integrity: sha512-jEVKEe8I+Ai/qYjVf6Idg2Gpp1Cxn4O4twJ0MnlEdzoaEHgt/OTU5NO0PBZMpoe/4BkOvkETZmqRbrcGsapeYQ==} + '@tiptap/extension-hard-break@2.10.3': + resolution: {integrity: sha512-2rFlimUKAgKDwT6nqAMtPBjkrknQY8S7oBNyIcDOUGyFkvbDUl3Jd0PiC929S5F3XStJRppnMqhpNDAlWmvBLA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-heading@2.10.2': - resolution: {integrity: sha512-OfvE+epZSyB0TbV5/4GdvRPMT1kd0fbgLUEaldWMZOLw/4eOGWZ8yXAtrWkoRMLZfOclgnDfwXvXJLnWXrDdDw==} + '@tiptap/extension-heading@2.10.3': + resolution: {integrity: sha512-AlxXXPCWIvw8hQUDFRskasj32iMNB8Sb19VgyFWqwvntGs2/UffNu8VdsVqxD2HpZ0g5rLYCYtSW4wigs9R3og==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-highlight@2.10.2': - resolution: {integrity: sha512-yJpqagUS672RPsGRc6JrNuqf3DbMiP+g4Al3cVpU3ff3yEORbCMsgvwkCOE9thSO9B4SOFQP4HzX2x1DLJtjew==} + '@tiptap/extension-highlight@2.10.3': + resolution: {integrity: sha512-srMOdpUTcp1yPGmUqgKOkbmTpCYOF6Q/8CnquDkhrvK7Gyphj+n8TocrKiloaRYZKcoQWtmb+kcVPaHhHMzsWQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-history@2.10.2': - resolution: {integrity: sha512-Hr5cvYgOAP7vaRD5vbMjirTATFe/zYqnzePhq1c9TQESOi2o0zKxWpZIcHbFFIXCjHLSnpXOZ4yFwHP4k12rgg==} + '@tiptap/extension-history@2.10.3': + resolution: {integrity: sha512-HaSiMdx9Im9Pb9qGlVud7W8bweRDRMez33Uzs5a2x0n1RWkelfH7TwYs41Y3wus8Ujs7kw6qh7jyhvPpQBKaSA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-horizontal-rule@2.10.2': - resolution: {integrity: sha512-DqaCUxjXnoVN/yylEjoGIlvKkT1KF8mwFJncJn8oSAukYEaSAK056ETvmyZk+/bzc3aRpfv0Kfn/zmLfHZ3wnA==} + '@tiptap/extension-horizontal-rule@2.10.3': + resolution: {integrity: sha512-1a2IWhD00tgUNg/91RLnBvfENL7DLCui5L245+smcaLu+OXOOEpoBHawx59/M4hEpsjqvRRM79TzO9YXfopsPw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-image@2.10.2': - resolution: {integrity: sha512-xaJOVeR/fWozJMVKjYhskecsbayUUm1tIbjE+SyG7IW3Jp+081/W9z2nyfXG6YNnuVjYq+uLejR2Bt0cnEZvmA==} + '@tiptap/extension-image@2.10.3': + resolution: {integrity: sha512-YIjAF5CwDkMe28OQ5pvnmdRgbJ9JcGMIHY1kyqNunSf2iwphK+6SWz9UEIkDFiT7AsRZySqxFSq93iK1XyTifw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-italic@2.10.2': - resolution: {integrity: sha512-6p1YkJEWHuMROzNrK+GFJamujBswpydfR3ZMpIjQTLr4hRhSGrde/B5WODRDS+3JiK1xcN16ZQVPFsRJaHMjfQ==} + '@tiptap/extension-italic@2.10.3': + resolution: {integrity: sha512-wAiO6ZxoHx2H90phnKttLWGPjPZXrfKxhOCsqYrK8BpRByhr48godOFRuGwYnKaiwoVjpxc63t+kDJDWvqmgMw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-link@2.10.2': - resolution: {integrity: sha512-bgsWdinDPGEiMD0NgphpKaxm4l9+PbPwdLDGDFyEX069VAyuSN4y63Sn32clpwlLcibVu3JxVFClJ+o6wKtmdg==} + '@tiptap/extension-link@2.10.3': + resolution: {integrity: sha512-8esKlkZBzEiNcpt7I8Cd6l1mWmCc/66pPbUq9LfnIniDXE3U+ahBf4m3TJltYFBGbiiTR/xqMtJyVHOpuLDtAw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-list-item@2.10.2': - resolution: {integrity: sha512-NE800m/QCk58MUcfeeCqmDjgOuiwHddaZvCCQIpErZdI2Y0io9RsSYU3HHEFPIfbKsv/ykVTYbwSweTPs1Tmxw==} + '@tiptap/extension-list-item@2.10.3': + resolution: {integrity: sha512-9sok81gvZfSta2K1Dwrq5/HSz1jk4zHBpFqCx0oydzodGslx6X1bNxdca+eXJpXZmQIWALK7zEr4X8kg3WZsgw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-ordered-list@2.10.2': - resolution: {integrity: sha512-1WYknf7/feouoBN7jW9Z6fvN9gzS1WRaOrDVkLZQ2ZLgT+Bs8H8/r1pv23q8Un6lg0mApwqnUxNhLOOrVyDkGQ==} + '@tiptap/extension-ordered-list@2.10.3': + resolution: {integrity: sha512-/SFuEDnbJxy3jvi72LeyiPHWkV+uFc0LUHTUHSh20vwyy+tLrzncJfXohGbTIv5YxYhzExQYZDRD4VbSghKdlw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-paragraph@2.10.2': - resolution: {integrity: sha512-EZG9W5rsU4uP585cIOrhbAPOUsgqrFbDrj1tZjTbvv0EWK03Un3FGYoGilkcUIxD9uB/XVHP+v2596Ifyi/dvQ==} + '@tiptap/extension-paragraph@2.10.3': + resolution: {integrity: sha512-sNkTX/iN+YoleDiTJsrWSBw9D7c4vsYwnW5y/G5ydfuJMIRQMF78pWSIWZFDRNOMkgK5UHkhu9anrbCFYgBfaA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-strike@2.10.2': - resolution: {integrity: sha512-TjrBbO6UbXCt55hV9wRE7h5R/jLTB+z2yn2blz1TfR7wKkX3tJOnb+ptvIHEVFGJOjkZP6Xaj+aAkGVg5dKZYA==} + '@tiptap/extension-strike@2.10.3': + resolution: {integrity: sha512-jYoPy6F6njYp3txF3u23bgdRy/S5ATcWDO9LPZLHSeikwQfJ47nqb+EUNo5M8jIOgFBTn4MEbhuZ6OGyhnxopA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-cell@2.10.2': - resolution: {integrity: sha512-FmppE53gmg/PTdtxAMsGP13SZc03dVKsH94l/Jj60gU5xPnjR6424+SETdotjAQdFCBRTYoci2BCP+22e/FTzw==} + '@tiptap/extension-table-cell@2.10.3': + resolution: {integrity: sha512-EYzBrnq7KUAcRhshIoTmC4ED8YoF4Ei5m8ZMPOctKX+QMAagKdcrw2UxuOf4tP2xgBYx+qDsKCautepZXQiL2g==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-header@2.10.2': - resolution: {integrity: sha512-1kmWgKrrHSC38sB+IWwYnBmRFot8u3PntneHIpQoo11wcVkEWUNZ9lmhEKMawnKan5h2yDVlUsPMR9QB/iarsQ==} + '@tiptap/extension-table-header@2.10.3': + resolution: {integrity: sha512-zJqzivz+VITYIFXNH09leBbkwAPuvp504rCAFL2PMa1uaME6+oiiRqZvXQrOiRkjNpOWEXH4dqvVLwkSMZoWaw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-row@2.10.2': - resolution: {integrity: sha512-htS8ld4HD0zl7g0C/V9szdAX8Cjz9+ckr8qGrJy6yJS9ByS2x0VnV5fT73WUCx0zlNOrr1hcedlvDUTEPvzSuQ==} + '@tiptap/extension-table-row@2.10.3': + resolution: {integrity: sha512-l6P6BAE4SuIFdPmsRd+zGP2Ks9AhLAua7nfDlHFMWDnfOeaJu7g/t4oG++9xTojDcVDHhcIe8TJYUXfhOt2anw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table@2.10.2': - resolution: {integrity: sha512-T7hzHEB090KsAy0VS4wogcjwauKHlYorQKrBxxZHzE6n6w6Zi0Cz00qJnAb6oYgKrMCTredcxnWUH8PmWlehYg==} + '@tiptap/extension-table@2.10.3': + resolution: {integrity: sha512-XAvq0ptpHfuN7lQhTeew4Sqo8aKYHTqroa7cHL8I+gWJqYqKJSTGb4FAqdGIFEzHvnSsMCFbTL//kAHXvTdsHg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-task-item@2.10.2': - resolution: {integrity: sha512-FArCQ+j3QYwF6CbexkRJUPTgfMsFJ3uYCFHtJFQbMp8KqGHh19R3Rvc+Z4PFHX3SD6dbBcSQFoiL2mUTKFj8XA==} + '@tiptap/extension-task-item@2.10.3': + resolution: {integrity: sha512-vE4qxGrZTdwynHq6l5xN0jI0ahDZpmKeoD6yuCMNyN831dgHXEjNrV8oBtZUvvqChFRc/LiSmUbrTInUn5xeNg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-task-list@2.10.2': - resolution: {integrity: sha512-q4FJGjYL2n34XyjC/k9C1Fyx0M4DavyNLq0v3Gqa9/exZD6d4uUYHUHcFvZXOBYrkpVh+4fxIOQvcyz54WVKYw==} + '@tiptap/extension-task-list@2.10.3': + resolution: {integrity: sha512-Zj1pj+6VrL8VXlFYWdcLlCMykzARsvdqdU8cGVnBuC0H0vrSSfLGl+GxGnQwxTnqiNtxR4t70DLi/UjFBvzlqw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text-align@2.10.2': - resolution: {integrity: sha512-eDvks4fUZuOuAhWD8/HJ070g2OQlEnBpak2+huvzPhGdYP81vhx5OWk/rfF6WzLzxLwnDND2zvk3YL+RBqERZQ==} + '@tiptap/extension-text-align@2.10.3': + resolution: {integrity: sha512-g75sNl73gtgjP3XIcl06kvv1qw3c0rGEUD848rUU1bvlBpU3IxjkcQLgYvHmv3vpuUp9cKUkA2wa7Sv6R3fjvw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text-style@2.10.2': - resolution: {integrity: sha512-dWx5Ean7Rb6rdqO6C/i0qIIABKHFsABZj0mTDr0/ZXsw3V2O4d1cP13evvcc7HMLNAXziRTtWCVU6M06vwM/Pw==} + '@tiptap/extension-text-style@2.10.3': + resolution: {integrity: sha512-TalYIdlF7vBA4afFhmido7AORdBbu3sV+HCByda0FiNbM6cjng3Nr9oxHOCVJy+ChqrcgF4m54zDfLmamdyu5Q==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text@2.10.2': - resolution: {integrity: sha512-7WaJCmHAnf24gZc+Bl64vZgjAFt0CSEc5Jr+f3GII6XeCkZpTCJX85po2MFUhBRZMJheyctyL+UfsRauo/iP0Q==} + '@tiptap/extension-text@2.10.3': + resolution: {integrity: sha512-7p9XiRprsRZm8y9jvF/sS929FCELJ5N9FQnbzikOiyGNUx5mdI+exVZlfvBr9xOD5s7fBLg6jj9Vs0fXPNRkPg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-underline@2.10.2': - resolution: {integrity: sha512-jDWGqqUYkrLgqRQDyqh+LpbkiqPfaWOoo5bydYL0u80GPEavovxZPoCJ/HDlOfdwm+FIPy55OP/29tELJRptmg==} + '@tiptap/extension-underline@2.10.3': + resolution: {integrity: sha512-VeGs0jeNiTnXddHHJEgOc/sKljZiyTEgSSuqMmsBACrr9aGFXbLTgKTvNjkZ9WzSnu7LwgJuBrwEhg8yYixUyQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/pm@2.10.2': - resolution: {integrity: sha512-jEgC79uvuEl51XxulutUJPSlhkoY0xQc9R/G4MQltAi+JxJ+KE/pOxgqziWNxBpgUzQqloupjod0kLhLUL4Cig==} + '@tiptap/pm@2.10.3': + resolution: {integrity: sha512-771p53aU0KFvujvKpngvq2uAxThlEsjYaXcVVmwrhf0vxSSg+psKQEvqvWvHv/3BwkPVCGwmEKNVJZjaXFKu4g==} - '@tiptap/react@2.10.2': - resolution: {integrity: sha512-xBg0uA/ON9LbC8ojwjgFQgZA1xmaEotXZnZcM3tfGjCboqk0toi59v+2CIN9icDfW+UT/hsget3SBQtRw+SBEw==} + '@tiptap/react@2.10.3': + resolution: {integrity: sha512-5GBL3arWai8WZuCl1MMA7bT5aWwqDi5AOQhX+hovKjwHvttpKDogRoUBL5k6Eds/eQMBMGTpsfmZlGNiFxSv1g==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tiptap/starter-kit@2.10.2': - resolution: {integrity: sha512-YbS9P3zvLhfEWnCPMcvCwK/+3XjMgZX73D1qMu9jVRHtQGI2DMk9u42KWAMLQAMBUESMcIeGxJ9G5IWJO0PsyA==} + '@tiptap/starter-kit@2.10.3': + resolution: {integrity: sha512-oq8xdVIMqohSs91ofHSr7i5dCp2F56Lb9aYIAI25lZmwNwQJL2geGOYjMSfL0IC4cQHPylIuSKYCg7vRFdZmAA==} '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -6808,8 +6808,8 @@ packages: prosemirror-transform@1.10.2: resolution: {integrity: sha512-2iUq0wv2iRoJO/zj5mv8uDUriOHWzXRnOTVgCzSXnktS/2iQRa3UUQwVlkBlYZFtygw6Nh1+X4mGqoYBINn5KQ==} - prosemirror-view@1.36.0: - resolution: {integrity: sha512-U0GQd5yFvV5qUtT41X1zCQfbw14vkbbKwLlQXhdylEmgpYVHkefXYcC4HHwWOfZa3x6Y8wxDLUBv7dxN5XQ3nA==} + prosemirror-view@1.37.0: + resolution: {integrity: sha512-z2nkKI1sJzyi7T47Ji/ewBPuIma1RNvQCCYVdV+MqWBV7o4Sa1n94UJCJJ1aQRF/xRkFfyqLGlGFWitIcCOtbg==} proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -9189,12 +9189,12 @@ snapshots: dependencies: react: 18.3.1 - '@mantine/tiptap@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tiptap/extension-link@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2))(@tiptap/react@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/tiptap@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tiptap/extension-link@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3))(@tiptap/react@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': 7.14.2(react@18.3.1) - '@tiptap/extension-link': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2) - '@tiptap/react': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tiptap/extension-link': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) + '@tiptap/react': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -9866,157 +9866,157 @@ snapshots: transitivePeerDependencies: - supports-color - '@tiptap/core@2.10.2(@tiptap/pm@2.10.2)': + '@tiptap/core@2.10.3(@tiptap/pm@2.10.3)': dependencies: - '@tiptap/pm': 2.10.2 + '@tiptap/pm': 2.10.3 - '@tiptap/extension-blockquote@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-blockquote@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-bold@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-bold@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-bubble-menu@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)': + '@tiptap/extension-bubble-menu@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/pm': 2.10.2 + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/pm': 2.10.3 tippy.js: 6.3.7 - '@tiptap/extension-bullet-list@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-bullet-list@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-code-block@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)': + '@tiptap/extension-code-block@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/pm': 2.10.2 + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/pm': 2.10.3 - '@tiptap/extension-code@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-code@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-color@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/extension-text-style@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)))': + '@tiptap/extension-color@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/extension-text-style@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/extension-text-style': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/extension-text-style': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) - '@tiptap/extension-document@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-document@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-dropcursor@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)': + '@tiptap/extension-dropcursor@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/pm': 2.10.2 + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/pm': 2.10.3 - '@tiptap/extension-floating-menu@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)': + '@tiptap/extension-floating-menu@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/pm': 2.10.2 + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/pm': 2.10.3 tippy.js: 6.3.7 - '@tiptap/extension-gapcursor@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)': + '@tiptap/extension-gapcursor@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/pm': 2.10.2 + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/pm': 2.10.3 - '@tiptap/extension-hard-break@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-hard-break@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-heading@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-heading@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-highlight@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-highlight@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-history@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)': + '@tiptap/extension-history@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/pm': 2.10.2 + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/pm': 2.10.3 - '@tiptap/extension-horizontal-rule@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)': + '@tiptap/extension-horizontal-rule@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/pm': 2.10.2 + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/pm': 2.10.3 - '@tiptap/extension-image@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-image@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-italic@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-italic@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-link@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)': + '@tiptap/extension-link@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/pm': 2.10.2 + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/pm': 2.10.3 linkifyjs: 4.1.3 - '@tiptap/extension-list-item@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-list-item@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-ordered-list@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-ordered-list@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-paragraph@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-paragraph@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-strike@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-strike@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-table-cell@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-table-cell@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-table-header@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-table-header@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-table-row@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-table-row@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-table@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)': + '@tiptap/extension-table@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/pm': 2.10.2 + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/pm': 2.10.3 - '@tiptap/extension-task-item@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)': + '@tiptap/extension-task-item@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/pm': 2.10.2 + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/pm': 2.10.3 - '@tiptap/extension-task-list@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-task-list@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-text-align@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-text-align@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-text-style@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-text-style@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-text@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-text@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/extension-underline@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))': + '@tiptap/extension-underline@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) - '@tiptap/pm@2.10.2': + '@tiptap/pm@2.10.3': dependencies: prosemirror-changeset: 2.2.1 prosemirror-collab: 1.3.1 @@ -10033,45 +10033,45 @@ snapshots: prosemirror-schema-list: 1.4.1 prosemirror-state: 1.4.3 prosemirror-tables: 1.6.1 - prosemirror-trailing-node: 3.0.0(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.36.0) + prosemirror-trailing-node: 3.0.0(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0) prosemirror-transform: 1.10.2 - prosemirror-view: 1.36.0 + prosemirror-view: 1.37.0 - '@tiptap/react@2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tiptap/react@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/extension-bubble-menu': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2) - '@tiptap/extension-floating-menu': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2) - '@tiptap/pm': 2.10.2 + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/extension-bubble-menu': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) + '@tiptap/extension-floating-menu': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) + '@tiptap/pm': 2.10.3 '@types/use-sync-external-store': 0.0.6 fast-deep-equal: 3.1.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) use-sync-external-store: 1.2.2(react@18.3.1) - '@tiptap/starter-kit@2.10.2': + '@tiptap/starter-kit@2.10.3': dependencies: - '@tiptap/core': 2.10.2(@tiptap/pm@2.10.2) - '@tiptap/extension-blockquote': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-bold': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-bullet-list': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-code': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-code-block': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2) - '@tiptap/extension-document': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-dropcursor': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2) - '@tiptap/extension-gapcursor': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2) - '@tiptap/extension-hard-break': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-heading': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-history': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2) - '@tiptap/extension-horizontal-rule': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2))(@tiptap/pm@2.10.2) - '@tiptap/extension-italic': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-list-item': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-ordered-list': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-paragraph': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-strike': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-text': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/extension-text-style': 2.10.2(@tiptap/core@2.10.2(@tiptap/pm@2.10.2)) - '@tiptap/pm': 2.10.2 + '@tiptap/core': 2.10.3(@tiptap/pm@2.10.3) + '@tiptap/extension-blockquote': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-bold': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-bullet-list': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-code': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-code-block': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) + '@tiptap/extension-document': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-dropcursor': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) + '@tiptap/extension-gapcursor': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) + '@tiptap/extension-hard-break': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-heading': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-history': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) + '@tiptap/extension-horizontal-rule': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) + '@tiptap/extension-italic': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-list-item': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-ordered-list': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-paragraph': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-strike': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-text': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/extension-text-style': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3)) + '@tiptap/pm': 2.10.3 '@tootallnate/quickjs-emscripten@0.23.0': {} @@ -13614,20 +13614,20 @@ snapshots: dependencies: prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 - prosemirror-view: 1.36.0 + prosemirror-view: 1.37.0 prosemirror-gapcursor@1.3.2: dependencies: prosemirror-keymap: 1.2.2 prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 - prosemirror-view: 1.36.0 + prosemirror-view: 1.37.0 prosemirror-history@1.4.1: dependencies: prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 - prosemirror-view: 1.36.0 + prosemirror-view: 1.37.0 rope-sequence: 1.3.4 prosemirror-inputrules@1.4.0: @@ -13671,7 +13671,7 @@ snapshots: dependencies: prosemirror-model: 1.23.0 prosemirror-transform: 1.10.2 - prosemirror-view: 1.36.0 + prosemirror-view: 1.37.0 prosemirror-tables@1.6.1: dependencies: @@ -13679,21 +13679,21 @@ snapshots: prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 - prosemirror-view: 1.36.0 + prosemirror-view: 1.37.0 - prosemirror-trailing-node@3.0.0(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.36.0): + prosemirror-trailing-node@3.0.0(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.37.0): dependencies: '@remirror/core-constants': 3.0.0 escape-string-regexp: 4.0.0 prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 - prosemirror-view: 1.36.0 + prosemirror-view: 1.37.0 prosemirror-transform@1.10.2: dependencies: prosemirror-model: 1.23.0 - prosemirror-view@1.36.0: + prosemirror-view@1.37.0: dependencies: prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 From f2268c8041955c39206b1b8373278f170f76eae0 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 23:28:05 +0000 Subject: [PATCH 34/48] fix(deps): update dependency @million/lint to v1.0.13 (#1557) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 258 ++++++++++++++++++++++++++++++--------- 2 files changed, 199 insertions(+), 61 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index f33bf8593..ae821de3b 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -42,7 +42,7 @@ "@mantine/hooks": "^7.14.2", "@mantine/modals": "^7.14.2", "@mantine/tiptap": "^7.14.2", - "@million/lint": "1.0.12", + "@million/lint": "1.0.13", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.22.0", "@tanstack/react-query": "^5.61.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4614b8c81..ac45f818c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -132,8 +132,8 @@ importers: specifier: ^7.14.2 version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tiptap/extension-link@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3))(@tiptap/react@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@million/lint': - specifier: 1.0.12 - version: 1.0.12(rollup@4.21.3)(webpack-sources@3.2.3) + specifier: 1.0.13 + version: 1.0.13(rollup@4.21.3)(webpack-sources@3.2.3) '@t3-oss/env-nextjs': specifier: ^0.11.1 version: 0.11.1(typescript@5.7.2)(zod@3.23.8) @@ -151,16 +151,16 @@ importers: version: 5.61.4(@tanstack/react-query@5.61.4(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) '@trpc/client': specifier: next - version: 11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2) + version: 11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next - version: 11.0.0-rc.645(typescript@5.7.2) + version: 11.0.0-rc.648(typescript@5.7.2) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -503,13 +503,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2) + version: 11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next - version: 11.0.0-rc.645(typescript@5.7.2) + version: 11.0.0-rc.648(typescript@5.7.2) dockerode: specifier: ^4.0.2 version: 4.0.2 @@ -524,7 +524,7 @@ importers: version: 2.2.1 trpc-to-openapi: specifier: ^2.0.2 - version: 2.0.2(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.10.0)(zod@3.23.8) + version: 2.0.2(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.10.0)(zod@3.23.8) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1923,10 +1923,6 @@ packages: resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.2': - resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} - engines: {node: '>=6.9.0'} - '@babel/types@7.26.0': resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} @@ -1943,11 +1939,17 @@ packages: '@clack/core@0.3.4': resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} + '@clack/core@0.3.5': + resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==} + '@clack/prompts@0.7.0': resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} bundledDependencies: - is-unicode-supported + '@clack/prompts@0.8.2': + resolution: {integrity: sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ==} + '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} @@ -2950,12 +2952,12 @@ packages: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true - '@million/install@1.0.12': - resolution: {integrity: sha512-1TeXcdGCjrcCG/VcKayZ6NC646cf/gKTkscn2YbfwYbE4gLJbJHCrXxQ3zsWHznqiw61t1oTjFgIafM1JBcLzA==} + '@million/install@1.0.13': + resolution: {integrity: sha512-gFslYuzCem83FHMo4ZIWXmRWmyABXmTBQxodwnP4AeWtLjdvymOp8JB5+b/A4eZX79heFZuw9eqBpERo9zgvtg==} hasBin: true - '@million/lint@1.0.12': - resolution: {integrity: sha512-aicK2WWdCGxxoRzQTrfBPUsumvKblnHvQ//OtIsutqiFqareMI1vcG8v4X1y+kliJB81j7oLDi4zZqvYBQHVvQ==} + '@million/lint@1.0.13': + resolution: {integrity: sha512-jYQMz0GK5FzfwsQZDxs58V2GeUPqma9af7vkLVrdKHzXTpV1cVXxIjSL8+rvDM8iuzVA2BEtunZ0k3bIYAmvIA==} hasBin: true '@next/env@14.2.18': @@ -3607,19 +3609,19 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trpc/client@11.0.0-rc.645': - resolution: {integrity: sha512-mL3frD59uwPdH4g4uWJhs3KAVv840SOlsWwmSZ8/FirBiPYhnduMtrNr48C1/e71feIoxDdsIdQiHJqpLvoPrQ==} + '@trpc/client@11.0.0-rc.648': + resolution: {integrity: sha512-k4FfLKvJwbosUH8KYyZkC50RJHYtIyJECi5WhRXsvaf9a6lgrTlcA+osq815zYcAHo7wEgR9E9UdSTrpLdAQFQ==} peerDependencies: - '@trpc/server': 11.0.0-rc.645+b25f4f627 + '@trpc/server': 11.0.0-rc.648+77b4d8920 typescript: '>=5.6.2' - '@trpc/next@11.0.0-rc.645': - resolution: {integrity: sha512-OvST2nNxPZC9iLsGEBtlNZ8gmeYxCUSnFZ0dCSQxCrx82i2KnnRR1KOBF92mdHPMc04cRuummQmrEpIZKQnayw==} + '@trpc/next@11.0.0-rc.648': + resolution: {integrity: sha512-RgsiznMCc1xpMAVhp8WtgkFO7KyvRWqlqqb2qADCgLuAIjENjGoSEL9BZWiqCKLVrmQYsC42plUUj5QbwMPFuQ==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.645+b25f4f627 - '@trpc/react-query': 11.0.0-rc.645+b25f4f627 - '@trpc/server': 11.0.0-rc.645+b25f4f627 + '@trpc/client': 11.0.0-rc.648+77b4d8920 + '@trpc/react-query': 11.0.0-rc.648+77b4d8920 + '@trpc/server': 11.0.0-rc.648+77b4d8920 next: 15.0.3 react: '>=16.8.0' react-dom: '>=16.8.0' @@ -3630,18 +3632,18 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.0.0-rc.645': - resolution: {integrity: sha512-y3FQGCwzbTKFmdH9GuhhZ32XXmebtJVrRaa2Qd7DTrIyxZKMWkKktWDSsvD679Gy4M6rpDlPdFBllxDXUjs84w==} + '@trpc/react-query@11.0.0-rc.648': + resolution: {integrity: sha512-U3H6o/aN3umEA2QNDGRsaJb6M7zrffor2NQl2UaHOiLBHuXZ3ISI2fJXay7e32s1l6z5F5PGMGwTQtUedzWI2w==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.645+b25f4f627 - '@trpc/server': 11.0.0-rc.645+b25f4f627 + '@trpc/client': 11.0.0-rc.648+77b4d8920 + '@trpc/server': 11.0.0-rc.648+77b4d8920 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.6.2' - '@trpc/server@11.0.0-rc.645': - resolution: {integrity: sha512-DbAp3kzYceem6getORJh55a6ZRt6gIy69xJV3cxYyZ9Xx1MV3PwL27qXGNrprPO0c+kPnnIIu/iGB0d90LSZOA==} + '@trpc/server@11.0.0-rc.648': + resolution: {integrity: sha512-nKW7FNM+QZrY/CVGlX3hFNIdUvbw6pwSJ+HzEF8GIeSJDKLHK7Ke1QJGI2mRW6oF9dCKMBXfuLaYY2dXfjfn7Q==} peerDependencies: typescript: '>=5.6.2' @@ -3698,12 +3700,18 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@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==} + '@types/cors@2.8.17': + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + '@types/css-font-loading-module@0.0.7': resolution: {integrity: sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==} @@ -4273,6 +4281,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + basic-ftp@5.0.5: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} @@ -4592,6 +4604,10 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + cpu-features@0.0.10: resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==} engines: {node: '>=10.0.0'} @@ -4984,6 +5000,10 @@ packages: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} + engine.io@6.6.2: + resolution: {integrity: sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==} + engines: {node: '>=10.2.0'} + enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} @@ -5363,6 +5383,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -5988,6 +6013,10 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} @@ -6254,6 +6283,10 @@ packages: resolution: {integrity: sha512-1FuyEWI5k2HcmhS1HkKnUAQV7yFPfXPht2DnRRGtoiiAAW+ESTbtEXIDpRkwdU+XyrQuwrIym7UkoPKsZ0SyFw==} hasBin: true + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} @@ -6643,6 +6676,16 @@ packages: resolution: {integrity: sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==} hasBin: true + playwright-core@1.49.0: + resolution: {integrity: sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.49.0: + resolution: {integrity: sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==} + engines: {node: '>=18'} + hasBin: true + possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -6962,6 +7005,10 @@ packages: '@types/react': optional: true + react-scan@0.0.31: + resolution: {integrity: sha512-reHgQnASWVXwHe0Ibk/EbsEPZhKrmNRf8EUNDmjMi1lzXec+Cj9litKxD0TG2ghAwg5V4sT0wzhiOgZSIefeVg==} + hasBin: true + react-simple-code-editor@0.14.1: resolution: {integrity: sha512-BR5DtNRy+AswWJECyA17qhUDvrrCZ6zXOCfkQY5zSmb96BVUbpVAv03WpcjcwtCwiLbIANx3gebHOcXYn1EHow==} peerDependencies: @@ -7312,6 +7359,9 @@ packages: snake-case@2.1.0: resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} + socket.io-adapter@2.5.5: + resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + socket.io-client@4.7.5: resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} engines: {node: '>=10.0.0'} @@ -7320,6 +7370,10 @@ packages: resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} engines: {node: '>=10.0.0'} + socket.io@4.8.1: + resolution: {integrity: sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==} + engines: {node: '>=10.2.0'} + socks-proxy-agent@8.0.4: resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} engines: {node: '>= 14'} @@ -7624,10 +7678,6 @@ packages: resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} engines: {node: '>=14.14'} - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -7995,6 +8045,10 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + video.js@8.19.1: resolution: {integrity: sha512-MVuayhXpzTBv5Jk3nYEU2akawPhuBBlizEbpQGx2i+6FiBmqxGjkrkLdDLOzG54ut7xapjp26IfWQLGSpeLmcQ==} @@ -8473,12 +8527,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.25.2': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - to-fast-properties: 2.0.0 - '@babel/types@7.26.0': dependencies: '@babel/helper-string-parser': 7.25.9 @@ -8495,12 +8543,23 @@ snapshots: picocolors: 1.1.0 sisteransi: 1.0.5 + '@clack/core@0.3.5': + dependencies: + picocolors: 1.1.0 + sisteransi: 1.0.5 + '@clack/prompts@0.7.0': dependencies: '@clack/core': 0.3.4 picocolors: 1.1.0 sisteransi: 1.0.5 + '@clack/prompts@0.8.2': + dependencies: + '@clack/core': 0.3.5 + picocolors: 1.1.0 + sisteransi: 1.0.5 + '@colors/colors@1.6.0': {} '@cspotcode/source-map-support@0.8.1': @@ -9213,12 +9272,12 @@ snapshots: - encoding - supports-color - '@million/install@1.0.12': + '@million/install@1.0.13': dependencies: '@antfu/ni': 0.21.12 '@axiomhq/js': 1.0.0-rc.3 '@babel/parser': 7.26.2 - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 '@clack/prompts': 0.7.0 ast-types: 0.14.2 cli-high: 0.4.2 @@ -9228,13 +9287,13 @@ snapshots: recast: 0.23.9 xycolors: 0.1.2 - '@million/lint@1.0.12(rollup@4.21.3)(webpack-sources@3.2.3)': + '@million/lint@1.0.13(rollup@4.21.3)(webpack-sources@3.2.3)': dependencies: '@axiomhq/js': 1.0.0-rc.3 '@babel/core': 7.26.0 '@babel/types': 7.26.0 '@hono/node-server': 1.13.0(hono@4.6.1) - '@million/install': 1.0.12 + '@million/install': 1.0.13 '@rollup/pluginutils': 5.1.0(rollup@4.21.3) '@rrweb/types': 2.0.0-alpha.16 babel-plugin-syntax-hermes-parser: 0.21.1 @@ -9244,13 +9303,16 @@ snapshots: hono: 4.6.1 isomorphic-fetch: 3.0.0 nanoid: 5.0.7 + ohash: 1.1.4 pako: 2.1.0 pathe: 1.1.2 piscina: 4.6.1 pretty-ms: 8.0.0 + react-scan: 0.0.31 rrweb: 2.0.0-alpha.4 rrweb-player: 1.0.0-alpha.4 semver: 7.6.3 + socket.io: 4.8.1 socket.io-client: 4.7.5 tmp: 0.2.3 unplugin: 1.14.1(webpack-sources@3.2.3) @@ -10075,33 +10137,33 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2)': + '@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2)': dependencies: - '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.648(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: - '@trpc/client': 11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2) - '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) + '@trpc/client': 11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.648(typescript@5.7.2) next: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) typescript: 5.7.2 optionalDependencies: '@tanstack/react-query': 5.61.4(react@18.3.1) - '@trpc/react-query': 11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + '@trpc/react-query': 11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.645(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: '@tanstack/react-query': 5.61.4(react@18.3.1) - '@trpc/client': 11.0.0-rc.645(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(typescript@5.7.2) - '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) + '@trpc/client': 11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.648(typescript@5.7.2) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) typescript: 5.7.2 - '@trpc/server@11.0.0-rc.645(typescript@5.7.2)': + '@trpc/server@11.0.0-rc.648(typescript@5.7.2)': dependencies: typescript: 5.7.2 @@ -10193,6 +10255,8 @@ snapshots: dependencies: '@types/node': 22.10.0 + '@types/cookie@0.4.1': {} + '@types/cookie@0.6.0': {} '@types/cookies@0.9.0': @@ -10202,6 +10266,10 @@ snapshots: '@types/keygrip': 1.0.6 '@types/node': 22.10.0 + '@types/cors@2.8.17': + dependencies: + '@types/node': 22.10.0 + '@types/css-font-loading-module@0.0.7': {} '@types/css-modules@1.0.5': {} @@ -10911,6 +10979,8 @@ snapshots: base64-js@1.5.1: {} + base64id@2.0.0: {} + basic-ftp@5.0.5: {} bcrypt-pbkdf@1.0.2: @@ -11250,6 +11320,11 @@ snapshots: core-util-is@1.0.3: {} + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + cpu-features@0.0.10: dependencies: buildcheck: 0.0.6 @@ -11555,6 +11630,23 @@ snapshots: engine.io-parser@5.2.3: {} + engine.io@6.6.2: + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.17 + '@types/node': 22.10.0 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.7.2 + cors: 2.8.5 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 @@ -12139,6 +12231,9 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -12826,6 +12921,8 @@ snapshots: dependencies: json-buffer: 3.0.1 + kleur@4.1.5: {} + klona@2.0.6: {} kuler@2.0.0: {} @@ -13077,6 +13174,8 @@ snapshots: '@xmldom/xmldom': 0.8.10 global: 4.4.0 + mri@1.2.0: {} + mrmime@2.0.0: {} ms@2.1.3: {} @@ -13483,6 +13582,14 @@ snapshots: dependencies: '@babel/runtime': 7.25.6 + playwright-core@1.49.0: {} + + playwright@1.49.0: + dependencies: + playwright-core: 1.49.0 + optionalDependencies: + fsevents: 2.3.2 + possible-typed-array-names@1.0.0: {} postcss-js@4.0.1(postcss@8.4.47): @@ -13847,6 +13954,14 @@ snapshots: optionalDependencies: '@types/react': 18.3.12 + react-scan@0.0.31: + dependencies: + '@clack/core': 0.3.5 + '@clack/prompts': 0.8.2 + kleur: 4.1.5 + mri: 1.2.0 + playwright: 1.49.0 + react-simple-code-editor@0.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 @@ -14244,6 +14359,15 @@ snapshots: dependencies: no-case: 2.3.2 + socket.io-adapter@2.5.5: + dependencies: + debug: 4.3.7 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + socket.io-client@4.7.5: dependencies: '@socket.io/component-emitter': 3.1.2 @@ -14262,6 +14386,20 @@ snapshots: transitivePeerDependencies: - supports-color + socket.io@4.8.1: + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.7 + engine.io: 6.6.2 + socket.io-adapter: 2.5.5 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + socks-proxy-agent@8.0.4: dependencies: agent-base: 7.1.1 @@ -14659,8 +14797,6 @@ snapshots: tmp@0.2.3: {} - to-fast-properties@2.0.0: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -14701,9 +14837,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.0.2(@trpc/server@11.0.0-rc.645(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.10.0)(zod@3.23.8): + trpc-to-openapi@2.0.2(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.10.0)(zod@3.23.8): dependencies: - '@trpc/server': 11.0.0-rc.645(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.648(typescript@5.7.2) co-body: 6.2.0 h3: 1.13.0 lodash.clonedeep: 4.5.0 @@ -15026,6 +15162,8 @@ snapshots: validate-npm-package-name@5.0.1: {} + vary@1.1.2: {} + video.js@8.19.1: dependencies: '@babel/runtime': 7.25.6 From 9f982906f25b042443ac57e8a46ccf98aca5731d Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 17:31:08 +0000 Subject: [PATCH 35/48] fix(deps): update dependency video.js to ^8.20.0 (#1561) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 48 ++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 36e6f3404..fb38e8a5e 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -64,7 +64,7 @@ "mantine-react-table": "2.0.0-beta.7", "next": "^14.2.18", "react": "^18.3.1", - "video.js": "^8.19.1" + "video.js": "^8.20.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac45f818c..e3cf57323 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1711,8 +1711,8 @@ importers: specifier: ^18.3.1 version: 18.3.1 video.js: - specifier: ^8.19.1 - version: 8.19.1 + specifier: ^8.20.0 + version: 8.20.0 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1936,9 +1936,6 @@ packages: '@braintree/sanitize-url@7.0.4': resolution: {integrity: sha512-hPYRrKFoI+nuckPgDJfyYAkybFvheo4usS0Vw0HNAe+fmGBQA5Az37b/yStO284atBoqqdOUhKJ3d9Zw3PQkcQ==} - '@clack/core@0.3.4': - resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} - '@clack/core@0.3.5': resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==} @@ -3912,8 +3909,8 @@ packages: '@umami/node@0.4.0': resolution: {integrity: sha512-pyphprbiF7KiDSc+SWZ4/rVM8B5vU27zIiFfEPj2lEqczpI4xAKSp+dM3tlzyRAWJL32fcbCfAaLGhJZQV13Rg==} - '@videojs/http-streaming@3.15.0': - resolution: {integrity: sha512-6rjaqEa87gVFqDFsHaLKXGrDqL3NhNZRNi6wkMw+uyt1lrLD2OFY0SfRQRNl7Vmmx0pt5FRJoRJYlnKsowyElA==} + '@videojs/http-streaming@3.16.1': + resolution: {integrity: sha512-+5FXE0q8sRD6lPVdGsDL0N8q4+IiQEjMtoCSu0js1oftdCchP9bbhR9ac8XUGJUCZ53KoeY02izkjyGYK2hpGw==} engines: {node: '>=8', npm: '>=5'} peerDependencies: video.js: ^8.19.0 @@ -6302,6 +6299,11 @@ packages: engines: {node: '>=8', npm: '>=5'} hasBin: true + mux.js@7.1.0: + resolution: {integrity: sha512-NTxawK/BBELJrYsZThEulyUMDVlLizKdxyAsMuzoCD1eFj97BVaA8D/CvKsKu6FOLYkFojN5CbM9h++ZTZtknA==} + engines: {node: '>=8', npm: '>=5'} + hasBin: true + mysql2@3.11.4: resolution: {integrity: sha512-Z2o3tY4Z8EvSRDwknaC40MdZ3+m0sKbpnXrShQLdxPrAvcNli7jLrD2Zd2IzsRMw4eK9Yle500FDmlkIqp+krg==} engines: {node: '>= 8.0'} @@ -8049,8 +8051,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - video.js@8.19.1: - resolution: {integrity: sha512-MVuayhXpzTBv5Jk3nYEU2akawPhuBBlizEbpQGx2i+6FiBmqxGjkrkLdDLOzG54ut7xapjp26IfWQLGSpeLmcQ==} + video.js@8.20.0: + resolution: {integrity: sha512-VyXY/DbtfaI22gpWJdo8bmTcpPRfKg0SeQJBusRdIJF1RMI+er1BHpRreg67s5Qfd9ZeSbfKShUOwaxRft/tBw==} videojs-contrib-quality-levels@4.1.0: resolution: {integrity: sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==} @@ -8538,11 +8540,6 @@ snapshots: '@braintree/sanitize-url@7.0.4': {} - '@clack/core@0.3.4': - dependencies: - picocolors: 1.1.0 - sisteransi: 1.0.5 - '@clack/core@0.3.5': dependencies: picocolors: 1.1.0 @@ -8550,7 +8547,7 @@ snapshots: '@clack/prompts@0.7.0': dependencies: - '@clack/core': 0.3.4 + '@clack/core': 0.3.5 picocolors: 1.1.0 sisteransi: 1.0.5 @@ -10505,7 +10502,7 @@ snapshots: '@umami/node@0.4.0': {} - '@videojs/http-streaming@3.15.0(video.js@8.19.1)': + '@videojs/http-streaming@3.16.1(video.js@8.20.0)': dependencies: '@babel/runtime': 7.25.6 '@videojs/vhs-utils': 4.1.1 @@ -10513,8 +10510,8 @@ snapshots: global: 4.4.0 m3u8-parser: 7.2.0 mpd-parser: 1.3.1 - mux.js: 7.0.3 - video.js: 8.19.1 + mux.js: 7.1.0 + video.js: 8.20.0 '@videojs/vhs-utils@4.0.0': dependencies: @@ -13187,6 +13184,11 @@ snapshots: '@babel/runtime': 7.25.6 global: 4.4.0 + mux.js@7.1.0: + dependencies: + '@babel/runtime': 7.25.6 + global: 4.4.0 + mysql2@3.11.4: dependencies: aws-ssl-profiles: 1.1.2 @@ -15164,10 +15166,10 @@ snapshots: vary@1.1.2: {} - video.js@8.19.1: + video.js@8.20.0: dependencies: '@babel/runtime': 7.25.6 - '@videojs/http-streaming': 3.15.0(video.js@8.19.1) + '@videojs/http-streaming': 3.16.1(video.js@8.20.0) '@videojs/vhs-utils': 4.1.1 '@videojs/xhr': 2.7.0 aes-decrypter: 4.0.2 @@ -15175,14 +15177,14 @@ snapshots: m3u8-parser: 7.2.0 mpd-parser: 1.3.1 mux.js: 7.0.3 - videojs-contrib-quality-levels: 4.1.0(video.js@8.19.1) + videojs-contrib-quality-levels: 4.1.0(video.js@8.20.0) videojs-font: 4.2.0 videojs-vtt.js: 0.15.5 - videojs-contrib-quality-levels@4.1.0(video.js@8.19.1): + videojs-contrib-quality-levels@4.1.0(video.js@8.20.0): dependencies: global: 4.4.0 - video.js: 8.19.1 + video.js: 8.20.0 videojs-font@4.2.0: {} From fc734e5931fd697fffa2df6939e80098898e1454 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 17:42:19 +0000 Subject: [PATCH 36/48] chore(deps): update turbo monorepo to ^2.3.3 (#1558) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 4 +- pnpm-lock.yaml | 94 ++++++++++++++++++------------------- tooling/eslint/package.json | 2 +- 3 files changed, 50 insertions(+), 50 deletions(-) diff --git a/package.json b/package.json index ef4f8247d..e349d8f6c 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "prettier": "@homarr/prettier-config", "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", - "@turbo/gen": "^2.3.2", + "@turbo/gen": "^2.3.3", "@vitejs/plugin-react": "^4.3.4", "@vitest/coverage-v8": "^2.1.6", "@vitest/ui": "^2.1.6", @@ -37,7 +37,7 @@ "jsdom": "^25.0.1", "prettier": "^3.4.1", "testcontainers": "^10.15.0", - "turbo": "^2.3.2", + "turbo": "^2.3.3", "typescript": "^5.7.2", "vite-tsconfig-paths": "^5.1.3", "vitest": "^2.1.6" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e3cf57323..fb0d28f2d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: workspace:^0.1.0 version: link:tooling/prettier '@turbo/gen': - specifier: ^2.3.2 - version: 2.3.2(@types/node@22.10.0)(typescript@5.7.2) + specifier: ^2.3.3 + version: 2.3.3(@types/node@22.10.0)(typescript@5.7.2) '@vitejs/plugin-react': specifier: ^4.3.4 version: 4.3.4(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) @@ -36,8 +36,8 @@ importers: specifier: ^10.15.0 version: 10.15.0 turbo: - specifier: ^2.3.2 - version: 2.3.2 + specifier: ^2.3.3 + version: 2.3.3 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1742,8 +1742,8 @@ importers: specifier: ^9.1.0 version: 9.1.0(eslint@9.15.0) eslint-config-turbo: - specifier: ^2.3.2 - version: 2.3.2(eslint@9.15.0) + specifier: ^2.3.3 + version: 2.3.3(eslint@9.15.0) eslint-plugin-import: specifier: ^2.31.0 version: 2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0) @@ -3659,12 +3659,12 @@ packages: '@tsconfig/svelte@1.0.13': resolution: {integrity: sha512-5lYJP45Xllo4yE/RUBccBT32eBlRDbqN8r1/MIvQbKxW3aFqaYPCNgm8D5V20X4ShHcwvYWNlKg3liDh1MlBoA==} - '@turbo/gen@2.3.2': - resolution: {integrity: sha512-QnuMeLnNr4C+TE/Ac4kYH0zreRQRg5qyRqMW1kkZBaaLa2txDlhA3lwBh0dilc+fIqww9luYTmuQS9JgntM/aA==} + '@turbo/gen@2.3.3': + resolution: {integrity: sha512-MIXXX0sVRvfTWOrLhjDT1KJ15dqzRlNlHIvNeWoS5ZtTMQ9XuBl9D5ek/5vMj77n+84mFRS/VKAoEuScOIWwaw==} hasBin: true - '@turbo/workspaces@2.3.2': - resolution: {integrity: sha512-PwRg3+YZP7AaCk4JBdrKfc8bvyZ7KqP+Pc4lJ00uswlxycf9kU8HXRAxNg8HD6GGbTXYCvNGY7VUELf9rIU+6g==} + '@turbo/workspaces@2.3.3': + resolution: {integrity: sha512-PSys7Hy5NuX76HBleOkd8wlRtI4GCzLHS2XUpKeGIj0vpzH4fqE+tpi7fBb5t9U7UiyM6E6pyabSKjoD2zUsoQ==} hasBin: true '@types/asn1@0.2.4': @@ -5100,8 +5100,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-config-turbo@2.3.2: - resolution: {integrity: sha512-gIH/BQdbfWNa9uw/Obo7PZa/NNilZNP8STD0ppVKd8ekSVFONm2GebvOxNiSr5zHregRzokfynnHjZfB5ngJig==} + eslint-config-turbo@2.3.3: + resolution: {integrity: sha512-cM9wSBYowQIrjx2MPCzFE6jTnG4vpTPJKZ/O+Ps3CqrmGK/wtNOsY6WHGMwLtKY/nNbgRahAJH6jGVF6k2coOg==} peerDependencies: eslint: '>6.6.0' @@ -5157,8 +5157,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-turbo@2.3.2: - resolution: {integrity: sha512-NoGxnaFi/8KotvKdbwR+VJOB3nVvIOjS193qCjHz2eBKhnO+Wr3cFgw9IZvk1rBIqg3a6VtJQmxkwNIYo2yWOw==} + eslint-plugin-turbo@2.3.3: + resolution: {integrity: sha512-j8UEA0Z+NNCsjZep9G5u5soDQHcXq/x4amrwulk6eHF1U91H2qAjp5I4jQcvJewmccCJbVp734PkHHTRnosjpg==} peerDependencies: eslint: '>6.6.0' @@ -7786,38 +7786,38 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - turbo-darwin-64@2.3.2: - resolution: {integrity: sha512-B1lS/UqjXNsG+kx1uzJNwXMuw2i5wavcyNy8opvSLjfuECdsqQU9B1wPqkSTU+mZjFTJcEfiGKyJ/I2EVk8vdw==} + turbo-darwin-64@2.3.3: + resolution: {integrity: sha512-bxX82xe6du/3rPmm4aCC5RdEilIN99VUld4HkFQuw+mvFg6darNBuQxyWSHZTtc25XgYjQrjsV05888w1grpaA==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.3.2: - resolution: {integrity: sha512-XHeuEdk9tHaw2Bsr3rTzFtZyldeSyagDZkOSPIJ1zioavMjWEFPA75vdgy4j8ns96EBpZMaPXVEnODuEHfiZfQ==} + turbo-darwin-arm64@2.3.3: + resolution: {integrity: sha512-DYbQwa3NsAuWkCUYVzfOUBbSUBVQzH5HWUFy2Kgi3fGjIWVZOFk86ss+xsWu//rlEAfYwEmopigsPYSmW4X15A==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.3.2: - resolution: {integrity: sha512-oKDsO5+flqpPx5tNLFGVUYpJ/sBc3KvaGpyNzXl2u3epzyafgblFKWMG5YsSiU1ruouPpcC6YG5SN5chA7Abfg==} + turbo-linux-64@2.3.3: + resolution: {integrity: sha512-eHj9OIB0dFaP6BxB88jSuaCLsOQSYWBgmhy2ErCu6D2GG6xW3b6e2UWHl/1Ho9FsTg4uVgo4DB9wGsKa5erjUA==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.3.2: - resolution: {integrity: sha512-luyvTl3wQ1hF+ljK7ljH4TL7rg4pmx5pQ2mzvfMvPo5eaLuKr/tImmbdH6/vr56iffUIISkIsLVhVxgZeAsUOw==} + turbo-linux-arm64@2.3.3: + resolution: {integrity: sha512-NmDE/NjZoDj1UWBhMtOPmqFLEBKhzGS61KObfrDEbXvU3lekwHeoPvAMfcovzswzch+kN2DrtbNIlz+/rp8OCg==} cpu: [arm64] os: [linux] - turbo-windows-64@2.3.2: - resolution: {integrity: sha512-yw7BnTU5cE7GdUnZEW3jIAI98hh4dcWk+Jwza8X7CXpxpill2zteq7VPf+a/B3o/xm+oVXzLmP83YP91Bm0SaA==} + turbo-windows-64@2.3.3: + resolution: {integrity: sha512-O2+BS4QqjK3dOERscXqv7N2GXNcqHr9hXumkMxDj/oGx9oCatIwnnwx34UmzodloSnJpgSqjl8iRWiY65SmYoQ==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.3.2: - resolution: {integrity: sha512-Hgp6V7jaIYlDcy5xpKN+XXyYCf5afT690GmXcEsMoUawd5dStvZe0QHWcGxuqho497BAlx0XGAWftm0KelNePA==} + turbo-windows-arm64@2.3.3: + resolution: {integrity: sha512-dW4ZK1r6XLPNYLIKjC4o87HxYidtRRcBeo/hZ9Wng2XM/MqqYkAyzJXJGgRMsc0MMEN9z4+ZIfnSNBrA0b08ag==} cpu: [arm64] os: [win32] - turbo@2.3.2: - resolution: {integrity: sha512-vCJPoy8/3KkqY3W0cX2nrwhmtBQSZhEyrVgeJ4NlEXwGxu5vNRQDyV6se5VVAQMwfBsBJswlo87B7ai7Dr1MpQ==} + turbo@2.3.3: + resolution: {integrity: sha512-DUHWQAcC8BTiUZDRzAYGvpSpGLiaOQPfYXlCieQbwUvmml/LRGIe3raKdrOPOoiX0DYlzxs2nH6BoWJoZrj8hA==} hasBin: true tweetnacl@0.14.5: @@ -10174,9 +10174,9 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.3.2(@types/node@22.10.0)(typescript@5.7.2)': + '@turbo/gen@2.3.3(@types/node@22.10.0)(typescript@5.7.2)': dependencies: - '@turbo/workspaces': 2.3.2 + '@turbo/workspaces': 2.3.3 commander: 10.0.1 fs-extra: 10.1.0 inquirer: 8.2.6 @@ -10194,7 +10194,7 @@ snapshots: - supports-color - typescript - '@turbo/workspaces@2.3.2': + '@turbo/workspaces@2.3.3': dependencies: commander: 10.0.1 execa: 5.1.1 @@ -11902,10 +11902,10 @@ snapshots: dependencies: eslint: 9.15.0 - eslint-config-turbo@2.3.2(eslint@9.15.0): + eslint-config-turbo@2.3.3(eslint@9.15.0): dependencies: eslint: 9.15.0 - eslint-plugin-turbo: 2.3.2(eslint@9.15.0) + eslint-plugin-turbo: 2.3.3(eslint@9.15.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -11999,7 +11999,7 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.3.2(eslint@9.15.0): + eslint-plugin-turbo@2.3.3(eslint@9.15.0): dependencies: dotenv: 16.0.3 eslint: 9.15.0 @@ -14907,32 +14907,32 @@ snapshots: dependencies: safe-buffer: 5.2.1 - turbo-darwin-64@2.3.2: + turbo-darwin-64@2.3.3: optional: true - turbo-darwin-arm64@2.3.2: + turbo-darwin-arm64@2.3.3: optional: true - turbo-linux-64@2.3.2: + turbo-linux-64@2.3.3: optional: true - turbo-linux-arm64@2.3.2: + turbo-linux-arm64@2.3.3: optional: true - turbo-windows-64@2.3.2: + turbo-windows-64@2.3.3: optional: true - turbo-windows-arm64@2.3.2: + turbo-windows-arm64@2.3.3: optional: true - turbo@2.3.2: + turbo@2.3.3: optionalDependencies: - turbo-darwin-64: 2.3.2 - turbo-darwin-arm64: 2.3.2 - turbo-linux-64: 2.3.2 - turbo-linux-arm64: 2.3.2 - turbo-windows-64: 2.3.2 - turbo-windows-arm64: 2.3.2 + turbo-darwin-64: 2.3.3 + turbo-darwin-arm64: 2.3.3 + turbo-linux-64: 2.3.3 + turbo-linux-arm64: 2.3.3 + turbo-windows-64: 2.3.3 + turbo-windows-arm64: 2.3.3 tweetnacl@0.14.5: {} diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 9246b4b54..04bbc5bd5 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -18,7 +18,7 @@ "dependencies": { "@next/eslint-plugin-next": "^14.2.18", "eslint-config-prettier": "^9.1.0", - "eslint-config-turbo": "^2.3.2", + "eslint-config-turbo": "^2.3.3", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.2", From f2e7349cbdfc065b52951d3a54a22344dca6807b Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 17:48:58 +0000 Subject: [PATCH 37/48] fix(deps): update tanstack-query monorepo to ^5.61.5 (#1559) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 6 ++-- pnpm-lock.yaml | 62 ++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index ae821de3b..eb186afea 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -45,9 +45,9 @@ "@million/lint": "1.0.13", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.22.0", - "@tanstack/react-query": "^5.61.4", - "@tanstack/react-query-devtools": "^5.61.4", - "@tanstack/react-query-next-experimental": "5.61.4", + "@tanstack/react-query": "^5.61.5", + "@tanstack/react-query-devtools": "^5.61.5", + "@tanstack/react-query-next-experimental": "5.61.5", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fb0d28f2d..f2be23e4b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -141,23 +141,23 @@ importers: specifier: ^3.22.0 version: 3.22.0(react@18.3.1) '@tanstack/react-query': - specifier: ^5.61.4 - version: 5.61.4(react@18.3.1) + specifier: ^5.61.5 + version: 5.61.5(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.61.4 - version: 5.61.4(@tanstack/react-query@5.61.4(react@18.3.1))(react@18.3.1) + specifier: ^5.61.5 + version: 5.61.5(@tanstack/react-query@5.61.5(react@18.3.1))(react@18.3.1) '@tanstack/react-query-next-experimental': - specifier: 5.61.4 - version: 5.61.4(@tanstack/react-query@5.61.4(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) + specifier: 5.61.5 + version: 5.61.5(@tanstack/react-query@5.61.5(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) '@trpc/client': specifier: next version: 11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.648(typescript@5.7.2) @@ -506,7 +506,7 @@ importers: version: 11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.648(typescript@5.7.2) @@ -3361,27 +3361,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.61.4': - resolution: {integrity: sha512-rsnemyhPvEG4ViZe0R2UQDM8NgQS/BNC5/Gf9RTs0TKN5thUhPUwnL2anWG4jxAGKFyDfvG7PXbx6MRq3hxi1w==} + '@tanstack/query-core@5.61.5': + resolution: {integrity: sha512-iG5vqurEOEbv+paP6kW3zPENa99kSIrd1THISJMaTwVlJ+N5yjVDNOUwp9McK2DWqWCXM3v13ubBbAyhxT78UQ==} '@tanstack/query-devtools@5.61.4': resolution: {integrity: sha512-21Tw+u8E3IJJj4A/Bct4H0uBaDTEu7zBrR79FeSyY+mS2gx5/m316oDtJiKkILc819VSTYt+sFzODoJNcpPqZQ==} - '@tanstack/react-query-devtools@5.61.4': - resolution: {integrity: sha512-A4lqdK5cpskk+WPu17Nv7X3uEIsB4MQ5/Mdz12CQFuUVvmLHjBz1Ghc3QbQVwmHiXo4JM6Y00udTaEKtJSVAkA==} + '@tanstack/react-query-devtools@5.61.5': + resolution: {integrity: sha512-P2DwlKyoGar6FX2XL324gM7AX8fuXm6DecLvfUoGpWbxtbuAtfzglRiCDLKkc5tJ7pekuaZsFFas/cyfTymoCQ==} peerDependencies: - '@tanstack/react-query': ^5.61.4 + '@tanstack/react-query': ^5.61.5 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.61.4': - resolution: {integrity: sha512-H5jUqQtW5IaPlMMAgbRr8rQLjvYfY/5hdpMis19clLNBSCDysqSxFgqZMWFb3g9U1FCrmIr+GYDBTc0zow9lLg==} + '@tanstack/react-query-next-experimental@5.61.5': + resolution: {integrity: sha512-gV/B41wjPXVOZcN7fjFza+Jx/QjZvVcbQRo/GGwMwAwgtRmpjEZxdvPch9hzYQu+aBSzlL7zflyA3SeVyVd8LQ==} peerDependencies: - '@tanstack/react-query': ^5.61.4 + '@tanstack/react-query': ^5.61.5 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.61.4': - resolution: {integrity: sha512-Nh5+0V4fRVShSeDHFTVvzJrvwTdafIvqxyZUrad71kJWL7J+J5Wrd/xcHTWfSL1mR/9eoufd2roXOpL3F16ECA==} + '@tanstack/react-query@5.61.5': + resolution: {integrity: sha512-rjy8aqPgBBEz/rjJnpnuhi8TVkVTorMUsJlM3lMvrRb5wK6yzfk34Er0fnJ7w/4qyF01SnXsLB/QsTBsLF5PaQ==} peerDependencies: react: ^18 || ^19 @@ -9882,25 +9882,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.61.4': {} + '@tanstack/query-core@5.61.5': {} '@tanstack/query-devtools@5.61.4': {} - '@tanstack/react-query-devtools@5.61.4(@tanstack/react-query@5.61.4(react@18.3.1))(react@18.3.1)': + '@tanstack/react-query-devtools@5.61.5(@tanstack/react-query@5.61.5(react@18.3.1))(react@18.3.1)': dependencies: '@tanstack/query-devtools': 5.61.4 - '@tanstack/react-query': 5.61.4(react@18.3.1) + '@tanstack/react-query': 5.61.5(react@18.3.1) react: 18.3.1 - '@tanstack/react-query-next-experimental@5.61.4(@tanstack/react-query@5.61.4(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1)': + '@tanstack/react-query-next-experimental@5.61.5(@tanstack/react-query@5.61.5(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1)': dependencies: - '@tanstack/react-query': 5.61.4(react@18.3.1) + '@tanstack/react-query': 5.61.5(react@18.3.1) next: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 - '@tanstack/react-query@5.61.4(react@18.3.1)': + '@tanstack/react-query@5.61.5(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.61.4 + '@tanstack/query-core': 5.61.5 react: 18.3.1 '@tanstack/react-table@8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -10139,7 +10139,7 @@ snapshots: '@trpc/server': 11.0.0-rc.648(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.648(typescript@5.7.2) @@ -10148,12 +10148,12 @@ snapshots: react-dom: 18.3.1(react@18.3.1) typescript: 5.7.2 optionalDependencies: - '@tanstack/react-query': 5.61.4(react@18.3.1) - '@trpc/react-query': 11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + '@tanstack/react-query': 5.61.5(react@18.3.1) + '@trpc/react-query': 11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.61.4(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: - '@tanstack/react-query': 5.61.4(react@18.3.1) + '@tanstack/react-query': 5.61.5(react@18.3.1) '@trpc/client': 11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.648(typescript@5.7.2) react: 18.3.1 From 52d2a88b61a6ef8513560e8810bce6fa0867f0a6 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Wed, 27 Nov 2024 21:00:10 +0100 Subject: [PATCH 38/48] fix: moving categories up and down is not working (#1542) --- .../category/actions/move-category.ts | 54 +++++++++++++ .../actions/test/move-category.spec.ts | 76 +++++++++++++++++++ .../sections/category/category-actions.ts | 55 +------------- 3 files changed, 134 insertions(+), 51 deletions(-) create mode 100644 apps/nextjs/src/components/board/sections/category/actions/move-category.ts create mode 100644 apps/nextjs/src/components/board/sections/category/actions/test/move-category.spec.ts diff --git a/apps/nextjs/src/components/board/sections/category/actions/move-category.ts b/apps/nextjs/src/components/board/sections/category/actions/move-category.ts new file mode 100644 index 000000000..f0cdb1d46 --- /dev/null +++ b/apps/nextjs/src/components/board/sections/category/actions/move-category.ts @@ -0,0 +1,54 @@ +import type { RouterOutputs } from "@homarr/api"; + +import type { CategorySection } from "~/app/[locale]/boards/_types"; + +export interface MoveCategoryInput { + id: string; + direction: "up" | "down"; +} + +export const moveCategoryCallback = + (input: MoveCategoryInput) => + (previous: RouterOutputs["board"]["getHomeBoard"]): RouterOutputs["board"]["getHomeBoard"] => { + const currentCategory = previous.sections.find( + (section): section is CategorySection => section.kind === "category" && section.id === input.id, + ); + if (!currentCategory) { + return previous; + } + if (currentCategory.yOffset === 1 && input.direction === "up") { + return previous; + } + if (currentCategory.yOffset === previous.sections.length - 2 && input.direction === "down") { + return previous; + } + + return { + ...previous, + sections: previous.sections.map((section) => { + if (section.kind !== "category" && section.kind !== "empty") { + return section; + } + const offset = input.direction === "up" ? -2 : 2; + // Move category and empty section + if (section.yOffset === currentCategory.yOffset || section.yOffset === currentCategory.yOffset + 1) { + return { + ...section, + yOffset: section.yOffset + offset, + }; + } + + if ( + section.yOffset === currentCategory.yOffset + offset || + section.yOffset === currentCategory.yOffset + offset + 1 + ) { + return { + ...section, + yOffset: section.yOffset - offset, + }; + } + + return section; + }), + }; + }; diff --git a/apps/nextjs/src/components/board/sections/category/actions/test/move-category.spec.ts b/apps/nextjs/src/components/board/sections/category/actions/test/move-category.spec.ts new file mode 100644 index 000000000..bc843065f --- /dev/null +++ b/apps/nextjs/src/components/board/sections/category/actions/test/move-category.spec.ts @@ -0,0 +1,76 @@ +import { describe, expect, test } from "vitest"; + +import type { Section } from "~/app/[locale]/boards/_types"; +import { moveCategoryCallback } from "../move-category"; + +describe("Move Category", () => { + test.each([ + [3, [0, 3, 4, 1, 2, 5, 6]], + [5, [0, 1, 2, 5, 6, 3, 4]], + ])("should move category up", (moveId, expectedOrder) => { + const sections = createSections(3); + + const input = { + id: moveId.toString(), + direction: "up" as const, + }; + + const result = moveCategoryCallback(input)({ sections } as never); + + expect(sortSections(result.sections).map((section) => parseInt(section.id, 10))).toEqual(expectedOrder); + }); + test.each([ + [1, [0, 3, 4, 1, 2, 5, 6]], + [3, [0, 1, 2, 5, 6, 3, 4]], + ])("should move category down", (moveId, expectedOrder) => { + const sections = createSections(3); + + const input = { + id: moveId.toString(), + direction: "down" as const, + }; + + const result = moveCategoryCallback(input)({ sections } as never); + + expect(sortSections(result.sections).map((section) => parseInt(section.id, 10))).toEqual(expectedOrder); + }); + test("should not move category up if it is at the top", () => { + const sections = createSections(3); + + const input = { + id: "1", + direction: "up" as const, + }; + + const result = moveCategoryCallback(input)({ sections } as never); + + expect(sortSections(result.sections).map((section) => parseInt(section.id, 10))).toEqual([0, 1, 2, 3, 4, 5, 6]); + }); + test("should not move category down if it is at the bottom", () => { + const sections = createSections(3); + + const input = { + id: "5", + direction: "down" as const, + }; + + const result = moveCategoryCallback(input)({ sections } as never); + + expect(sortSections(result.sections).map((section) => parseInt(section.id, 10))).toEqual([0, 1, 2, 3, 4, 5, 6]); + }); +}); + +const createSections = (categoryCount: number) => { + return Array.from({ length: categoryCount * 2 + 1 }, (_, index) => ({ + id: index.toString(), + kind: index % 2 === 1 ? ("category" as const) : ("empty" as const), + name: `Category ${index}`, + yOffset: index, + xOffset: 0, + items: [], + })) satisfies Section[]; +}; + +const sortSections = (sections: Section[]) => { + return sections.sort((sectionA, sectionB) => sectionA.yOffset - sectionB.yOffset); +}; diff --git a/apps/nextjs/src/components/board/sections/category/category-actions.ts b/apps/nextjs/src/components/board/sections/category/category-actions.ts index a31d8306e..01e54a2b8 100644 --- a/apps/nextjs/src/components/board/sections/category/category-actions.ts +++ b/apps/nextjs/src/components/board/sections/category/category-actions.ts @@ -4,6 +4,8 @@ import { createId } from "@homarr/db/client"; import type { CategorySection, EmptySection, Section } from "~/app/[locale]/boards/_types"; import { useUpdateBoard } from "~/app/[locale]/boards/(content)/_client"; +import type { MoveCategoryInput } from "./actions/move-category"; +import { moveCategoryCallback } from "./actions/move-category"; interface AddCategory { name: string; @@ -15,11 +17,6 @@ interface RenameCategory { name: string; } -interface MoveCategory { - id: string; - direction: "up" | "down"; -} - interface RemoveCategory { id: string; } @@ -128,52 +125,8 @@ export const useCategoryActions = () => { ); const moveCategory = useCallback( - ({ id, direction }: MoveCategory) => { - updateBoard((previous) => { - const currentCategory = previous.sections.find( - (section): section is CategorySection => section.kind === "category" && section.id === id, - ); - if (!currentCategory) return previous; - if (currentCategory.yOffset === 1 && direction === "up") return previous; - if (currentCategory.yOffset === previous.sections.length - 2 && direction === "down") return previous; - - return { - ...previous, - sections: previous.sections.map((section) => { - if (section.kind !== "category" && section.kind !== "empty") return section; - const offset = direction === "up" ? -2 : 2; - // Move category and empty section - if (section.yOffset === currentCategory.yOffset || section.yOffset - 1 === currentCategory.yOffset) { - return { - ...section, - yOffset: section.yOffset + offset, - }; - } - - if ( - direction === "up" && - (section.yOffset === currentCategory.yOffset - 2 || section.yOffset === currentCategory.yOffset - 1) - ) { - return { - ...section, - position: section.yOffset + 2, - }; - } - - if ( - direction === "down" && - (section.yOffset === currentCategory.yOffset + 2 || section.yOffset === currentCategory.yOffset + 3) - ) { - return { - ...section, - position: section.yOffset - 2, - }; - } - - return section; - }), - }; - }); + (input: MoveCategoryInput) => { + updateBoard(moveCategoryCallback(input)); }, [updateBoard], ); From 09dae45ae8c33cf9212b72b7b048bbb3866880eb Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 13:01:56 +0000 Subject: [PATCH 39/48] fix(deps): update mantine monorepo to ^7.14.3 (#1563) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 10 +- packages/form/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/modals/package.json | 4 +- packages/notifications/package.json | 2 +- packages/spotlight/package.json | 6 +- packages/ui/package.json | 6 +- packages/widgets/package.json | 4 +- pnpm-lock.yaml | 196 ++++++++++++------------ 9 files changed, 116 insertions(+), 116 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index eb186afea..c1956feb4 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -37,11 +37,11 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0", - "@mantine/colors-generator": "^7.14.2", - "@mantine/core": "^7.14.2", - "@mantine/hooks": "^7.14.2", - "@mantine/modals": "^7.14.2", - "@mantine/tiptap": "^7.14.2", + "@mantine/colors-generator": "^7.14.3", + "@mantine/core": "^7.14.3", + "@mantine/hooks": "^7.14.3", + "@mantine/modals": "^7.14.3", + "@mantine/tiptap": "^7.14.3", "@million/lint": "1.0.13", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.22.0", diff --git a/packages/form/package.json b/packages/form/package.json index 60be15dad..3cd87ab83 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -24,7 +24,7 @@ "dependencies": { "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/form": "^7.14.2" + "@mantine/form": "^7.14.3" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 521214a87..b2b9bfa67 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -30,7 +30,7 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.14.2", + "@mantine/core": "^7.14.3", "@tabler/icons-react": "^3.22.0", "dayjs": "^1.11.13", "next": "^14.2.18", diff --git a/packages/modals/package.json b/packages/modals/package.json index 0078cccc9..fb3c72554 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.14.2", - "@mantine/hooks": "^7.14.2", + "@mantine/core": "^7.14.3", + "@mantine/hooks": "^7.14.3", "react": "^18.3.1" }, "devDependencies": { diff --git a/packages/notifications/package.json b/packages/notifications/package.json index dd1c506da..f737917b5 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.14.2", + "@mantine/notifications": "^7.14.3", "@tabler/icons-react": "^3.22.0" }, "devDependencies": { diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index a7b7b54e5..0a79c0531 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -31,9 +31,9 @@ "@homarr/modals-collection": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^7.14.2", - "@mantine/hooks": "^7.14.2", - "@mantine/spotlight": "^7.14.2", + "@mantine/core": "^7.14.3", + "@mantine/hooks": "^7.14.3", + "@mantine/spotlight": "^7.14.3", "@tabler/icons-react": "^3.22.0", "jotai": "^2.10.3", "next": "^14.2.18", diff --git a/packages/ui/package.json b/packages/ui/package.json index 2d417d2f0..acb4aa68f 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -28,9 +28,9 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.14.2", - "@mantine/dates": "^7.14.2", - "@mantine/hooks": "^7.14.2", + "@mantine/core": "^7.14.3", + "@mantine/dates": "^7.14.3", + "@mantine/hooks": "^7.14.3", "@tabler/icons-react": "^3.22.0", "mantine-react-table": "2.0.0-beta.7", "next": "^14.2.18", diff --git a/packages/widgets/package.json b/packages/widgets/package.json index fb38e8a5e..317562beb 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -41,8 +41,8 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.14.2", - "@mantine/hooks": "^7.14.2", + "@mantine/core": "^7.14.3", + "@mantine/hooks": "^7.14.3", "@tabler/icons-react": "^3.22.0", "@tiptap/extension-color": "2.10.3", "@tiptap/extension-highlight": "2.10.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f2be23e4b..3662b9987 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -117,20 +117,20 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/widgets '@mantine/colors-generator': - specifier: ^7.14.2 - version: 7.14.2(chroma-js@3.1.2) + specifier: ^7.14.3 + version: 7.14.3(chroma-js@3.1.2) '@mantine/core': - specifier: ^7.14.2 - version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': - specifier: ^7.14.2 - version: 7.14.2(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(react@18.3.1) '@mantine/modals': - specifier: ^7.14.2 - version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/tiptap': - specifier: ^7.14.2 - version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tiptap/extension-link@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3))(@tiptap/react@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tiptap/extension-link@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3))(@tiptap/react@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@million/lint': specifier: 1.0.13 version: 1.0.13(rollup@4.21.3)(webpack-sources@3.2.3) @@ -193,7 +193,7 @@ importers: version: 2.10.3(@types/react@18.3.12)(react@18.3.1) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) @@ -938,8 +938,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/form': - specifier: ^7.14.2 - version: 7.14.2(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(react@18.3.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1077,11 +1077,11 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.14.2 - version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': - specifier: ^7.14.2 - version: 7.14.2(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -1132,8 +1132,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.14.2 - version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tabler/icons-react': specifier: ^3.22.0 version: 3.22.0(react@18.3.1) @@ -1169,8 +1169,8 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/notifications': - specifier: ^7.14.2 - version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tabler/icons-react': specifier: ^3.22.0 version: 3.22.0(react@18.3.1) @@ -1413,14 +1413,14 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.14.2 - version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': - specifier: ^7.14.2 - version: 7.14.2(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(react@18.3.1) '@mantine/spotlight': - specifier: ^7.14.2 - version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tabler/icons-react': specifier: ^3.22.0 version: 3.22.0(react@18.3.1) @@ -1469,7 +1469,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) @@ -1514,20 +1514,20 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.14.2 - version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/dates': - specifier: ^7.14.2 - version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': - specifier: ^7.14.2 - version: 7.14.2(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(react@18.3.1) '@tabler/icons-react': specifier: ^3.22.0 version: 3.22.0(react@18.3.1) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) @@ -1642,11 +1642,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.14.2 - version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': - specifier: ^7.14.2 - version: 7.14.2(react@18.3.1) + specifier: ^7.14.3 + version: 7.14.3(react@18.3.1) '@tabler/icons-react': specifier: ^3.22.0 version: 3.22.0(react@18.3.1) @@ -1703,7 +1703,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) @@ -2875,71 +2875,71 @@ packages: '@libsql/core@0.14.0': resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} - '@mantine/colors-generator@7.14.2': - resolution: {integrity: sha512-ny4txQkXm02IQikgf7yFXBvXUXqD/5mof/RSFiRcmzzSAGL7v4apDYrFyJfsTvyvPKUaGUqPwKbFqkWIaTBLew==} + '@mantine/colors-generator@7.14.3': + resolution: {integrity: sha512-4A37xzSpsa0IC1Mz7g0W4iGJOu6ooSnckOmsiGHf4zTKh4gT6MBR5VOfRH8f3XmmojCGKm9tbIQRLXQTq9rmzQ==} peerDependencies: chroma-js: '>=2.4.2' - '@mantine/core@7.14.2': - resolution: {integrity: sha512-lq5l8T6TRkaCbs3HeaRDvUG80JbrwCxQPF5pwNP4yRrdln99hWpGtyNm0DSfcN5u1eOQRudOtAc+R8TfU+2GXw==} + '@mantine/core@7.14.3': + resolution: {integrity: sha512-niAi+ZYBr4KrG+X2Mx+muvEzUOOHc/Rx0vsbIGYeNe7urwHSm/xNEGsaapmCqeRC0CSL4KI6TJOq8QhnSuQZcw==} peerDependencies: - '@mantine/hooks': 7.14.2 + '@mantine/hooks': 7.14.3 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dates@7.14.2': - resolution: {integrity: sha512-tyEA/HuG5yXJNV0PKRfJEwER5+uQoxd9bmM3O90F5yC652H4Kxlt//yN2bf67yt/WFx7SQGid1ESFbj4od7w3A==} + '@mantine/dates@7.14.3': + resolution: {integrity: sha512-vE+eCbGkas4h1DP6og9nnatL/cBJUvDu0v5+ZH4YdI8mBpjuxmabvbGrpLoWuKocQOFdyCzrlYFQF8ai0jXABg==} peerDependencies: - '@mantine/core': 7.14.2 - '@mantine/hooks': 7.14.2 + '@mantine/core': 7.14.3 + '@mantine/hooks': 7.14.3 dayjs: '>=1.0.0' react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/form@7.14.2': - resolution: {integrity: sha512-IXgvEjIivXBNU4+sRinXGCSziRpx+pVeazuZixU3BxiSBap36gLxCbcWiyG3PkI4NkfI70YTTWFFeX39C06lzg==} + '@mantine/form@7.14.3': + resolution: {integrity: sha512-NquXVQz3IRCT5WTWCEdQjQzThMj7FpX/u0PDD+8XydiMPB7zJGPM9IdV88mWDI2ghT9vS6rBn22XWjTYsKa8+A==} peerDependencies: react: ^18.x || ^19.x - '@mantine/hooks@7.14.2': - resolution: {integrity: sha512-WN0bEJHw2Lh/2PLqik8rqITJRZAu6A1FK6f+H0SNTrQuWYBPSHdNTqM8hntDnhpM/2mZ52t3VWYgvNVGczLxIw==} + '@mantine/hooks@7.14.3': + resolution: {integrity: sha512-cU3R9b8GLs6aCvpsVC56ZOOJCUIoDqX3RcLWkcfpA5a47LjWa/rzegP4YWfNW6/E9vodPJT4AEbYXVffYlyNwA==} peerDependencies: react: ^18.x || ^19.x - '@mantine/modals@7.14.2': - resolution: {integrity: sha512-Sr8JRS5waZGnUZwKK9tB2m/Z78l3lkg4TZsrtJiTivaM6+xSyANSiGuVLtiCpsZ/CdtrG9KVcm7wzZilLhpWTA==} + '@mantine/modals@7.14.3': + resolution: {integrity: sha512-wn2eMSROG7bPbeSH2OnTp8iVv1wH9L9tLeBt88mTEXLg3vIPfQtWD9g/kFrjhoCjygYYtyJeqMQFYPUkHQMXDw==} peerDependencies: - '@mantine/core': 7.14.2 - '@mantine/hooks': 7.14.2 + '@mantine/core': 7.14.3 + '@mantine/hooks': 7.14.3 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/notifications@7.14.2': - resolution: {integrity: sha512-BXafA7YeDNwziFkZ0BnK5iEN0Cw3CRk/pnZ6E6u9eGCve5iMkaCTk0LaKnT2DPmPaAqEgmnnRduy6Akaalzjhw==} + '@mantine/notifications@7.14.3': + resolution: {integrity: sha512-7N9u4upi1On8TL94UvrUNhpDGxp1sAkbcgiNcu6zhvy4j29TPFapoXB5CRE9zzjAf3CYq3AigE96bXlCDm9xuQ==} peerDependencies: - '@mantine/core': 7.14.2 - '@mantine/hooks': 7.14.2 + '@mantine/core': 7.14.3 + '@mantine/hooks': 7.14.3 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/spotlight@7.14.2': - resolution: {integrity: sha512-wGr5d8W8/OiquNilBGv6sBD2Sl5RlsGiySEGDzeF6N2eFzkyIuKQzUM8zKlmJTRsoEmojIvvVfXSubB78KlBzw==} + '@mantine/spotlight@7.14.3': + resolution: {integrity: sha512-+WIJJr/KP0tSEyYNkS0x71gnuwSUquuj0GtPvKNH4OY4mLnMnfYDlkdpLVfakXM2P3qKRUMsbM475SVIEXaqJw==} peerDependencies: - '@mantine/core': 7.14.2 - '@mantine/hooks': 7.14.2 + '@mantine/core': 7.14.3 + '@mantine/hooks': 7.14.3 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/store@7.14.2': - resolution: {integrity: sha512-OCur2rymfOw+tEFDQjUvVoAGl9DRnyIZ6gJyGaj73hrxSMUyrdsekdYwN5HpbI6qXqW0h7u1aV0tNf0vvIUQDA==} + '@mantine/store@7.14.3': + resolution: {integrity: sha512-o15vbTUNlLqD/yLOtEClnc4fY2ONDaCZiaL9REUy0xhCDbVTeeqnu9BV604yuym50ZH5mhMHix1TX3K9vGsWvA==} peerDependencies: react: ^18.x || ^19.x - '@mantine/tiptap@7.14.2': - resolution: {integrity: sha512-taONFBdyk+YKVTp0dfLXKtZNp1wuPYhVUqoFkTztUCX9snD+92jJTtLflqLGcaP4KhitEgj2rRzJF8gX61cxIA==} + '@mantine/tiptap@7.14.3': + resolution: {integrity: sha512-3bWMtohuW1/8EpU2cWlayWL2TUFJwTww8N21mBS7TO17aO34B9enpFZ1qoyeINQBka+PMMaofFeKjdvNIpCb0g==} peerDependencies: - '@mantine/core': 7.14.2 - '@mantine/hooks': 7.14.2 + '@mantine/core': 7.14.3 + '@mantine/hooks': 7.14.3 '@tiptap/extension-link': '>=2.1.12' '@tiptap/react': '>=2.1.12' react: ^18.x || ^19.x @@ -9180,14 +9180,14 @@ snapshots: js-base64: 3.7.7 optional: true - '@mantine/colors-generator@7.14.2(chroma-js@3.1.2)': + '@mantine/colors-generator@7.14.3(chroma-js@3.1.2)': dependencies: chroma-js: 3.1.2 - '@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.2(react@18.3.1) + '@mantine/hooks': 7.14.3(react@18.3.1) clsx: 2.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -9198,57 +9198,57 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.2(react@18.3.1) + '@mantine/core': 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.3(react@18.3.1) clsx: 2.1.1 dayjs: 1.11.13 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@mantine/form@7.14.2(react@18.3.1)': + '@mantine/form@7.14.3(react@18.3.1)': dependencies: fast-deep-equal: 3.1.3 klona: 2.0.6 react: 18.3.1 - '@mantine/hooks@7.14.2(react@18.3.1)': + '@mantine/hooks@7.14.3(react@18.3.1)': dependencies: react: 18.3.1 - '@mantine/modals@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/modals@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.2(react@18.3.1) + '@mantine/core': 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.3(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@mantine/notifications@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/notifications@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.2(react@18.3.1) - '@mantine/store': 7.14.2(react@18.3.1) + '@mantine/core': 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.3(react@18.3.1) + '@mantine/store': 7.14.3(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/spotlight@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/spotlight@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.2(react@18.3.1) - '@mantine/store': 7.14.2(react@18.3.1) + '@mantine/core': 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.3(react@18.3.1) + '@mantine/store': 7.14.3(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@mantine/store@7.14.2(react@18.3.1)': + '@mantine/store@7.14.3(react@18.3.1)': dependencies: react: 18.3.1 - '@mantine/tiptap@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tiptap/extension-link@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3))(@tiptap/react@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mantine/tiptap@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tiptap/extension-link@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3))(@tiptap/react@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.2(react@18.3.1) + '@mantine/core': 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.3(react@18.3.1) '@tiptap/extension-link': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3) '@tiptap/react': 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/pm@2.10.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 @@ -13057,11 +13057,11 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.7(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + mantine-react-table@2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/dates': 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.14.2(react@18.3.1) + '@mantine/core': 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/dates': 7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mantine/hooks': 7.14.3(react@18.3.1) '@tabler/icons-react': 3.22.0(react@18.3.1) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) From 85a7b7df553e13421b6a51dab87cc4e1273eab9a Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 13:36:53 +0000 Subject: [PATCH 40/48] chore(deps): update dependency @types/node to ^22.10.1 (#1562) 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 | 114 +++++++++++++++++++-------------------- 3 files changed, 59 insertions(+), 59 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index c1956feb4..8f36115b8 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -80,7 +80,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "2.4.4", - "@types/node": "^22.10.0", + "@types/node": "^22.10.1", "@types/prismjs": "^1.26.5", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 9f77a9cae..8d3b5221e 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.10.0", + "@types/node": "^22.10.1", "dotenv-cli": "^7.4.4", "eslint": "^9.15.0", "prettier": "^3.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3662b9987..612a9c8f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,10 +13,10 @@ importers: version: link:tooling/prettier '@turbo/gen': specifier: ^2.3.3 - version: 2.3.3(@types/node@22.10.0)(typescript@5.7.2) + version: 2.3.3(@types/node@22.10.1)(typescript@5.7.2) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 4.3.4(vite@5.4.5(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': specifier: ^2.1.6 version: 2.1.6(vitest@2.1.6) @@ -43,10 +43,10 @@ importers: version: 5.7.2 vite-tsconfig-paths: specifier: ^5.1.3 - version: 5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: specifier: ^2.1.6 - version: 2.1.6(@types/node@22.10.0)(@vitest/ui@2.1.6)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + version: 2.1.6(@types/node@22.10.1)(@vitest/ui@2.1.6)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) apps/nextjs: dependencies: @@ -241,8 +241,8 @@ importers: specifier: 2.4.4 version: 2.4.4 '@types/node': - specifier: ^22.10.0 - version: 22.10.0 + specifier: ^22.10.1 + version: 22.10.1 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 @@ -341,8 +341,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^22.10.0 - version: 22.10.0 + specifier: ^22.10.1 + version: 22.10.1 dotenv-cli: specifier: ^7.4.4 version: 7.4.4 @@ -524,7 +524,7 @@ importers: version: 2.2.1 trpc-to-openapi: specifier: ^2.0.2 - version: 2.0.2(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.10.0)(zod@3.23.8) + version: 2.0.2(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.10.1)(zod@3.23.8) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -3775,8 +3775,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.10.0': - resolution: {integrity: sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA==} + '@types/node@22.10.1': + resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==} '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -10174,7 +10174,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.3.3(@types/node@22.10.0)(typescript@5.7.2)': + '@turbo/gen@2.3.3(@types/node@22.10.1)(typescript@5.7.2)': dependencies: '@turbo/workspaces': 2.3.3 commander: 10.0.1 @@ -10184,7 +10184,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.4.0 - ts-node: 10.9.2(@types/node@22.10.0)(typescript@5.7.2) + ts-node: 10.9.2(@types/node@22.10.1)(typescript@5.7.2) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -10210,7 +10210,7 @@ snapshots: '@types/asn1@0.2.4': dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/babel__core@7.20.5': dependencies: @@ -10235,22 +10235,22 @@ snapshots: '@types/bcrypt@5.0.2': dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/better-sqlite3@7.6.12': dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/chroma-js@2.4.4': {} '@types/connect@3.4.38': dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/cookie@0.4.1': {} @@ -10261,11 +10261,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/cors@2.8.17': dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/css-font-loading-module@0.0.7': {} @@ -10273,13 +10273,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.32': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/ssh2': 1.15.1 '@types/estree@1.0.5': {} @@ -10288,7 +10288,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -10303,7 +10303,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/hast@2.3.10': dependencies: @@ -10341,7 +10341,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@22.10.0': + '@types/node@22.10.1': dependencies: undici-types: 6.20.0 @@ -10369,21 +10369,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/ssh2@0.5.52': dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -10396,7 +10396,7 @@ snapshots: '@types/through@0.0.33': dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/tinycolor2@1.4.6': {} @@ -10412,11 +10412,11 @@ snapshots: '@types/ws@8.5.13': dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@typescript-eslint/eslint-plugin@8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2)': dependencies: @@ -10530,14 +10530,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -10555,7 +10555,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.6(@types/node@22.10.0)(@vitest/ui@2.1.6)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.6(@types/node@22.10.1)(@vitest/ui@2.1.6)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -10566,13 +10566,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.6(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitest/mocker@2.1.6(vite@5.4.5(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@vitest/spy': 2.1.6 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/pretty-format@2.1.6': dependencies: @@ -10602,7 +10602,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.6(@types/node@22.10.0)(@vitest/ui@2.1.6)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.6(@types/node@22.10.1)(@vitest/ui@2.1.6)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/utils@2.1.6': dependencies: @@ -11631,7 +11631,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.10.0 + '@types/node': 22.10.1 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -12827,7 +12827,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -13315,7 +13315,7 @@ snapshots: loader-utils: 2.0.4 webpack: 5.94.0 - node-mocks-http@1.16.1(@types/express@4.17.21)(@types/node@22.10.0): + node-mocks-http@1.16.1(@types/express@4.17.21)(@types/node@22.10.1): dependencies: accepts: 1.3.8 content-disposition: 0.5.4 @@ -13329,7 +13329,7 @@ snapshots: type-is: 1.6.18 optionalDependencies: '@types/express': 4.17.21 - '@types/node': 22.10.0 + '@types/node': 22.10.1 node-plop@0.26.3: dependencies: @@ -14839,13 +14839,13 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.0.2(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.10.0)(zod@3.23.8): + trpc-to-openapi@2.0.2(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(@types/express@4.17.21)(@types/node@22.10.1)(zod@3.23.8): dependencies: '@trpc/server': 11.0.0-rc.648(typescript@5.7.2) co-body: 6.2.0 h3: 1.13.0 lodash.clonedeep: 4.5.0 - node-mocks-http: 1.16.1(@types/express@4.17.21)(@types/node@22.10.0) + node-mocks-http: 1.16.1(@types/express@4.17.21)(@types/node@22.10.1) openapi3-ts: 4.3.3 zod: 3.23.8 zod-openapi: 2.19.0(zod@3.23.8) @@ -14859,14 +14859,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.10.0)(typescript@5.7.2): + ts-node@10.9.2(@types/node@22.10.1)(typescript@5.7.2): 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.10.0 + '@types/node': 22.10.1 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -15192,13 +15192,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@2.1.6(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite-node@2.1.6(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.3.7 es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -15210,33 +15210,33 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): + vite-tsconfig-paths@5.1.3(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.7.2) optionalDependencies: - vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite@5.4.5(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.3 optionalDependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 fsevents: 2.3.3 sass: 1.81.0 sugarss: 4.0.1(postcss@8.4.47) terser: 5.32.0 - vitest@2.1.6(@types/node@22.10.0)(@vitest/ui@2.1.6)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vitest@2.1.6(@types/node@22.10.1)(@vitest/ui@2.1.6)(jsdom@25.0.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: '@vitest/expect': 2.1.6 - '@vitest/mocker': 2.1.6(vite@5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + '@vitest/mocker': 2.1.6(vite@5.4.5(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/pretty-format': 2.1.6 '@vitest/runner': 2.1.6 '@vitest/snapshot': 2.1.6 @@ -15252,11 +15252,11 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.5(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) - vite-node: 2.1.6(@types/node@22.10.0)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite-node: 2.1.6(@types/node@22.10.1)(sass@1.81.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.0 + '@types/node': 22.10.1 '@vitest/ui': 2.1.6(vitest@2.1.6) jsdom: 25.0.1 transitivePeerDependencies: From c1f2ede834a9a9cfa90496bf9575f1985cf1b794 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 16:54:39 +0000 Subject: [PATCH 41/48] chore(deps): update pnpm to v9.14.3 (#1564) 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 e349d8f6c..8dd2b1d4a 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "vite-tsconfig-paths": "^5.1.3", "vitest": "^2.1.6" }, - "packageManager": "pnpm@9.14.2", + "packageManager": "pnpm@9.14.3", "engines": { "node": ">=22.11.0" } From 4df6006f0e487028fffc3f65d4fa20b2f252e612 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 18:00:41 +0100 Subject: [PATCH 42/48] fix(deps): update dependency typescript-eslint to ^8.16.0 (#1544) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> Co-authored-by: Meier Lukas --- packages/api/src/middlewares/integration.ts | 2 +- pnpm-lock.yaml | 114 ++++++++++---------- tooling/eslint/package.json | 2 +- 3 files changed, 59 insertions(+), 59 deletions(-) diff --git a/packages/api/src/middlewares/integration.ts b/packages/api/src/middlewares/integration.ts index 62343ac87..b6d715a56 100644 --- a/packages/api/src/middlewares/integration.ts +++ b/packages/api/src/middlewares/integration.ts @@ -127,7 +127,7 @@ export const createManyIntegrationMiddleware = ( if (offset !== 0) { throw new TRPCError({ code: "NOT_FOUND", - message: `${offset} of the specified integrations not found or not of kinds ${kinds.join(",")}: ([${input.integrationIds.join(",")}] compared to [${dbIntegrations.join(",")}])`, + message: `${offset} of the specified integrations not found or not of kinds ${kinds.join(",")}: ([${input.integrationIds.join(",")}] compared to [${dbIntegrations.map(({ id, kind }) => `${kind}:${id}`).join(",")}])`, }); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 612a9c8f0..239e6d69b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1746,7 +1746,7 @@ importers: version: 2.3.3(eslint@9.15.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0) + version: 2.31.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.15.0) @@ -1757,8 +1757,8 @@ importers: specifier: ^5.0.0 version: 5.0.0(eslint@9.15.0) typescript-eslint: - specifier: ^8.15.0 - version: 8.15.0(eslint@9.15.0)(typescript@5.7.2) + specifier: ^8.16.0 + version: 8.16.0(eslint@9.15.0)(typescript@5.7.2) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -3844,8 +3844,8 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.15.0': - resolution: {integrity: sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==} + '@typescript-eslint/eslint-plugin@8.16.0': + resolution: {integrity: sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -3855,8 +3855,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.15.0': - resolution: {integrity: sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A==} + '@typescript-eslint/parser@8.16.0': + resolution: {integrity: sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3865,12 +3865,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@8.15.0': - resolution: {integrity: sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==} + '@typescript-eslint/scope-manager@8.16.0': + resolution: {integrity: sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.15.0': - resolution: {integrity: sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==} + '@typescript-eslint/type-utils@8.16.0': + resolution: {integrity: sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3879,12 +3879,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@8.15.0': - resolution: {integrity: sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==} + '@typescript-eslint/types@8.16.0': + resolution: {integrity: sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.15.0': - resolution: {integrity: sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg==} + '@typescript-eslint/typescript-estree@8.16.0': + resolution: {integrity: sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -3892,8 +3892,8 @@ packages: typescript: optional: true - '@typescript-eslint/utils@8.15.0': - resolution: {integrity: sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==} + '@typescript-eslint/utils@8.16.0': + resolution: {integrity: sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3902,8 +3902,8 @@ packages: typescript: optional: true - '@typescript-eslint/visitor-keys@8.15.0': - resolution: {integrity: sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==} + '@typescript-eslint/visitor-keys@8.16.0': + resolution: {integrity: sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -7865,8 +7865,8 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.15.0: - resolution: {integrity: sha512-wY4FRGl0ZI+ZU4Jo/yjdBu0lVTSML58pu6PgGtJmCufvzfV565pUF6iACQt092uFOd49iLOTX/sEVmHtbSrS+w==} + typescript-eslint@8.16.0: + resolution: {integrity: sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -10418,14 +10418,14 @@ snapshots: dependencies: '@types/node': 22.10.1 - '@typescript-eslint/eslint-plugin@8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.15.0(eslint@9.15.0)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.15.0 - '@typescript-eslint/type-utils': 8.15.0(eslint@9.15.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.15.0(eslint@9.15.0)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.15.0 + '@typescript-eslint/parser': 8.16.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.16.0 + '@typescript-eslint/type-utils': 8.16.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.16.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.16.0 eslint: 9.15.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -10436,12 +10436,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2)': + '@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.15.0 - '@typescript-eslint/types': 8.15.0 - '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.15.0 + '@typescript-eslint/scope-manager': 8.16.0 + '@typescript-eslint/types': 8.16.0 + '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.16.0 debug: 4.3.7 eslint: 9.15.0 optionalDependencies: @@ -10449,15 +10449,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.15.0': + '@typescript-eslint/scope-manager@8.16.0': dependencies: - '@typescript-eslint/types': 8.15.0 - '@typescript-eslint/visitor-keys': 8.15.0 + '@typescript-eslint/types': 8.16.0 + '@typescript-eslint/visitor-keys': 8.16.0 - '@typescript-eslint/type-utils@8.15.0(eslint@9.15.0)(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.16.0(eslint@9.15.0)(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.15.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.16.0(eslint@9.15.0)(typescript@5.7.2) debug: 4.3.7 eslint: 9.15.0 ts-api-utils: 1.3.0(typescript@5.7.2) @@ -10466,12 +10466,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.15.0': {} + '@typescript-eslint/types@8.16.0': {} - '@typescript-eslint/typescript-estree@8.15.0(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.16.0(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.15.0 - '@typescript-eslint/visitor-keys': 8.15.0 + '@typescript-eslint/types': 8.16.0 + '@typescript-eslint/visitor-keys': 8.16.0 debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -10483,21 +10483,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.15.0(eslint@9.15.0)(typescript@5.7.2)': + '@typescript-eslint/utils@8.16.0(eslint@9.15.0)(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.15.0) - '@typescript-eslint/scope-manager': 8.15.0 - '@typescript-eslint/types': 8.15.0 - '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.16.0 + '@typescript-eslint/types': 8.16.0 + '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.7.2) eslint: 9.15.0 optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.15.0': + '@typescript-eslint/visitor-keys@8.16.0': dependencies: - '@typescript-eslint/types': 8.15.0 + '@typescript-eslint/types': 8.16.0 eslint-visitor-keys: 4.2.0 '@umami/node@0.4.0': {} @@ -11915,17 +11915,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.15.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.15.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.15.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.16.0(eslint@9.15.0)(typescript@5.7.2) eslint: 9.15.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -11936,7 +11936,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.15.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.15.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.15.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -11948,7 +11948,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.15.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.16.0(eslint@9.15.0)(typescript@5.7.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14991,11 +14991,11 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.15.0(eslint@9.15.0)(typescript@5.7.2): + typescript-eslint@8.16.0(eslint@9.15.0)(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2) - '@typescript-eslint/parser': 8.15.0(eslint@9.15.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.15.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.16.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.16.0(eslint@9.15.0)(typescript@5.7.2) eslint: 9.15.0 optionalDependencies: typescript: 5.7.2 diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 04bbc5bd5..d6f5a067b 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -23,7 +23,7 @@ "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.0.0", - "typescript-eslint": "^8.15.0" + "typescript-eslint": "^8.16.0" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", From 44e2105a8c9d7cc746f0424bf1f718f426dbea93 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 18:10:29 +0100 Subject: [PATCH 43/48] fix(deps): update dependency undici to v7 (#1560) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> Co-authored-by: Meier Lukas --- apps/tasks/package.json | 2 +- .../tasks/src/test/undici-log-agent-override.spec.ts | 2 +- apps/tasks/src/undici-log-agent-override.ts | 2 +- pnpm-lock.yaml | 12 ++++++------ 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 8d3b5221e..9712424f1 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -38,7 +38,7 @@ "dayjs": "^1.11.13", "dotenv": "^16.4.5", "superjson": "2.2.1", - "undici": "6.21.0" + "undici": "7.0.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/apps/tasks/src/test/undici-log-agent-override.spec.ts b/apps/tasks/src/test/undici-log-agent-override.spec.ts index d5d2af1f6..f237c22e7 100644 --- a/apps/tasks/src/test/undici-log-agent-override.spec.ts +++ b/apps/tasks/src/test/undici-log-agent-override.spec.ts @@ -8,7 +8,7 @@ import { LoggingAgent } from "~/undici-log-agent-override"; vi.mock("undici", () => { return { Agent: class Agent { - dispatch(_options: Dispatcher.DispatchOptions, _handler: Dispatcher.DispatchHandlers): boolean { + dispatch(_options: Dispatcher.DispatchOptions, _handler: Dispatcher.DispatchHandler): boolean { return true; } }, diff --git a/apps/tasks/src/undici-log-agent-override.ts b/apps/tasks/src/undici-log-agent-override.ts index 6f02985c0..8f0e49f00 100644 --- a/apps/tasks/src/undici-log-agent-override.ts +++ b/apps/tasks/src/undici-log-agent-override.ts @@ -8,7 +8,7 @@ export class LoggingAgent extends Agent { super(...props); } - dispatch(options: Dispatcher.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean { + dispatch(options: Dispatcher.DispatchOptions, handler: Dispatcher.DispatchHandler): boolean { const url = new URL(`${options.origin as string}${options.path}`); // The below code should prevent sensitive data from being logged as diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 239e6d69b..472b9ca64 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -328,8 +328,8 @@ importers: specifier: 2.2.1 version: 2.2.1 undici: - specifier: 6.21.0 - version: 6.21.0 + specifier: 7.0.0 + version: 7.0.0 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -7911,9 +7911,9 @@ packages: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} - undici@6.21.0: - resolution: {integrity: sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==} - engines: {node: '>=18.17'} + undici@7.0.0: + resolution: {integrity: sha512-c4xi3kWnQJrb7h2q8aJYKvUzmz7boCgz1cUCC6OwdeM5Tr2P0hDuthr2iut4ggqsz+Cnh20U/LoTzbKIdDS/Nw==} + engines: {node: '>=20.18.1'} unenv@1.10.0: resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} @@ -15030,7 +15030,7 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - undici@6.21.0: {} + undici@7.0.0: {} unenv@1.10.0: dependencies: From 2d7efc3ffacb16c27219c26f20fd0682304927e0 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Thu, 28 Nov 2024 20:21:29 +0100 Subject: [PATCH 44/48] fix: open-api doc generation failing, post patch and delete not exported (#1565) --- apps/nextjs/src/app/api/[...trpc]/route.ts | 13 ++++- packages/api/src/router/user.ts | 2 +- packages/api/src/test/open-api.spec.ts | 16 ++++++ packages/validation/src/user.ts | 57 +++++++++++----------- 4 files changed, 58 insertions(+), 30 deletions(-) create mode 100644 packages/api/src/test/open-api.spec.ts diff --git a/apps/nextjs/src/app/api/[...trpc]/route.ts b/apps/nextjs/src/app/api/[...trpc]/route.ts index 6cf0e899a..ffd59c784 100644 --- a/apps/nextjs/src/app/api/[...trpc]/route.ts +++ b/apps/nextjs/src/app/api/[...trpc]/route.ts @@ -17,6 +17,11 @@ const handlerAsync = async (req: NextRequest) => { const { ua } = userAgent(req); const session: Session | null = await getSessionOrDefaultFromHeadersAsync(apiKeyHeaderValue, ipAddress, ua); + // Fallback to JSON if no content type is set + if (!req.headers.has("Content-Type")) { + req.headers.set("Content-Type", "application/json"); + } + return createOpenApiFetchHandler({ req, endpoint: "/", @@ -82,4 +87,10 @@ const getSessionOrDefaultFromHeadersAsync = async ( return await createSessionAsync(db, apiKeyFromDb.user); }; -export { handlerAsync as GET, handlerAsync as POST }; +export { + handlerAsync as GET, + handlerAsync as POST, + handlerAsync as PUT, + handlerAsync as DELETE, + handlerAsync as PATCH, +}; diff --git a/packages/api/src/router/user.ts b/packages/api/src/router/user.ts index 3939343c2..ae3b8cd88 100644 --- a/packages/api/src/router/user.ts +++ b/packages/api/src/router/user.ts @@ -503,7 +503,7 @@ export const userRouter = createTRPCRouter({ }), }); -const createUserAsync = async (db: Database, input: z.infer) => { +const createUserAsync = async (db: Database, input: Omit, "groupIds">) => { const salt = await createSaltAsync(); const hashedPassword = await hashPasswordAsync(input.password, salt); diff --git a/packages/api/src/test/open-api.spec.ts b/packages/api/src/test/open-api.spec.ts new file mode 100644 index 000000000..e7d240564 --- /dev/null +++ b/packages/api/src/test/open-api.spec.ts @@ -0,0 +1,16 @@ +import { expect, test, vi } from "vitest"; + +import { openApiDocument } from "../open-api"; + +vi.mock("@homarr/auth", () => ({})); + +test("OpenAPI documentation should be generated", () => { + // Arrange + const base = "https://homarr.dev"; + + // Act + const act = () => openApiDocument(base); + + // Assert + expect(act).not.toThrow(); +}); diff --git a/packages/validation/src/user.ts b/packages/validation/src/user.ts index 629f15ec4..f06fb67ec 100644 --- a/packages/validation/src/user.ts +++ b/packages/validation/src/user.ts @@ -37,43 +37,43 @@ const passwordSchema = z }, ); -const confirmPasswordRefine = [ - (data: { password: string; confirmPassword: string }) => data.password === data.confirmPassword, - { +const addConfirmPasswordRefinement = ( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + schema: z.ZodObject, +) => { + return schema.refine((data) => data.password === data.confirmPassword, { path: ["confirmPassword"], params: createCustomErrorParams({ key: "passwordsDoNotMatch", params: {}, }), - }, - // eslint-disable-next-line @typescript-eslint/no-explicit-any -] satisfies [(args: any) => boolean, unknown]; + }); +}; -const baseCreateUserSchema = z - .object({ - username: usernameSchema, - password: passwordSchema, - confirmPassword: z.string(), - email: z.string().email().or(z.string().length(0).optional()), - }) - .refine(confirmPasswordRefine[0], confirmPasswordRefine[1]); +const baseCreateUserSchema = z.object({ + username: usernameSchema, + password: passwordSchema, + confirmPassword: z.string(), + email: z.string().email().or(z.string().length(0).optional()), + groupIds: z.array(z.string()), +}); -const createUserSchema = baseCreateUserSchema.and(z.object({ groupIds: z.array(z.string()) })); +const createUserSchema = addConfirmPasswordRefinement(baseCreateUserSchema); -const initUserSchema = baseCreateUserSchema; +const initUserSchema = addConfirmPasswordRefinement(baseCreateUserSchema.omit({ groupIds: true })); const signInSchema = z.object({ name: z.string().min(1), password: z.string().min(1), }); -const registrationSchema = z - .object({ +const registrationSchema = addConfirmPasswordRefinement( + z.object({ username: usernameSchema, password: passwordSchema, confirmPassword: z.string(), - }) - .refine(confirmPasswordRefine[0], confirmPasswordRefine[1]); + }), +); const registrationSchemaApi = registrationSchema.and( z.object({ @@ -94,15 +94,16 @@ const editProfileSchema = z.object({ .nullable(), }); -const changePasswordSchema = z - .object({ - previousPassword: z.string().min(1), - password: passwordSchema, - confirmPassword: z.string(), - }) - .refine(confirmPasswordRefine[0], confirmPasswordRefine[1]); +const baseChangePasswordSchema = z.object({ + previousPassword: z.string().min(1), + password: passwordSchema, + confirmPassword: z.string(), + userId: z.string(), +}); -const changePasswordApiSchema = changePasswordSchema.and(z.object({ userId: z.string() })); +const changePasswordSchema = addConfirmPasswordRefinement(baseChangePasswordSchema.omit({ userId: true })); + +const changePasswordApiSchema = addConfirmPasswordRefinement(baseChangePasswordSchema); const changeHomeBoardSchema = z.object({ homeBoardId: z.string().min(1), From fd42bde76ddf46f51f787cab832636f33187b006 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 20:12:47 +0000 Subject: [PATCH 45/48] fix(deps): update dependency @tabler/icons-react to ^3.23.0 (#1566) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/notifications/package.json | 2 +- packages/spotlight/package.json | 2 +- packages/ui/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 50 ++++++++++++------------- 7 files changed, 31 insertions(+), 31 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 8f36115b8..c647ebf55 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -44,7 +44,7 @@ "@mantine/tiptap": "^7.14.3", "@million/lint": "1.0.13", "@t3-oss/env-nextjs": "^0.11.1", - "@tabler/icons-react": "^3.22.0", + "@tabler/icons-react": "^3.23.0", "@tanstack/react-query": "^5.61.5", "@tanstack/react-query-devtools": "^5.61.5", "@tanstack/react-query-next-experimental": "5.61.5", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index b2b9bfa67..346a3090e 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -31,7 +31,7 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@mantine/core": "^7.14.3", - "@tabler/icons-react": "^3.22.0", + "@tabler/icons-react": "^3.23.0", "dayjs": "^1.11.13", "next": "^14.2.18", "react": "^18.3.1" diff --git a/packages/notifications/package.json b/packages/notifications/package.json index f737917b5..24133008b 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -25,7 +25,7 @@ "dependencies": { "@homarr/ui": "workspace:^0.1.0", "@mantine/notifications": "^7.14.3", - "@tabler/icons-react": "^3.22.0" + "@tabler/icons-react": "^3.23.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 0a79c0531..f8223cc8f 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -34,7 +34,7 @@ "@mantine/core": "^7.14.3", "@mantine/hooks": "^7.14.3", "@mantine/spotlight": "^7.14.3", - "@tabler/icons-react": "^3.22.0", + "@tabler/icons-react": "^3.23.0", "jotai": "^2.10.3", "next": "^14.2.18", "react": "^18.3.1", diff --git a/packages/ui/package.json b/packages/ui/package.json index acb4aa68f..90b2fbb59 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -31,7 +31,7 @@ "@mantine/core": "^7.14.3", "@mantine/dates": "^7.14.3", "@mantine/hooks": "^7.14.3", - "@tabler/icons-react": "^3.22.0", + "@tabler/icons-react": "^3.23.0", "mantine-react-table": "2.0.0-beta.7", "next": "^14.2.18", "react": "^18.3.1" diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 317562beb..cf9c921b4 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -43,7 +43,7 @@ "@homarr/validation": "workspace:^0.1.0", "@mantine/core": "^7.14.3", "@mantine/hooks": "^7.14.3", - "@tabler/icons-react": "^3.22.0", + "@tabler/icons-react": "^3.23.0", "@tiptap/extension-color": "2.10.3", "@tiptap/extension-highlight": "2.10.3", "@tiptap/extension-image": "2.10.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 472b9ca64..ccabd51f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -138,8 +138,8 @@ importers: specifier: ^0.11.1 version: 0.11.1(typescript@5.7.2)(zod@3.23.8) '@tabler/icons-react': - specifier: ^3.22.0 - version: 3.22.0(react@18.3.1) + specifier: ^3.23.0 + version: 3.23.0(react@18.3.1) '@tanstack/react-query': specifier: ^5.61.5 version: 5.61.5(react@18.3.1) @@ -193,7 +193,7 @@ importers: version: 2.10.3(@types/react@18.3.12)(react@18.3.1) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.23.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) @@ -1135,8 +1135,8 @@ importers: specifier: ^7.14.3 version: 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tabler/icons-react': - specifier: ^3.22.0 - version: 3.22.0(react@18.3.1) + specifier: ^3.23.0 + version: 3.23.0(react@18.3.1) dayjs: specifier: ^1.11.13 version: 1.11.13 @@ -1172,8 +1172,8 @@ importers: specifier: ^7.14.3 version: 7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tabler/icons-react': - specifier: ^3.22.0 - version: 3.22.0(react@18.3.1) + specifier: ^3.23.0 + version: 3.23.0(react@18.3.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1422,8 +1422,8 @@ importers: specifier: ^7.14.3 version: 7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tabler/icons-react': - specifier: ^3.22.0 - version: 3.22.0(react@18.3.1) + specifier: ^3.23.0 + version: 3.23.0(react@18.3.1) jotai: specifier: ^2.10.3 version: 2.10.3(@types/react@18.3.12)(react@18.3.1) @@ -1469,7 +1469,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.23.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) @@ -1523,11 +1523,11 @@ importers: specifier: ^7.14.3 version: 7.14.3(react@18.3.1) '@tabler/icons-react': - specifier: ^3.22.0 - version: 3.22.0(react@18.3.1) + specifier: ^3.23.0 + version: 3.23.0(react@18.3.1) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.23.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) @@ -1648,8 +1648,8 @@ importers: specifier: ^7.14.3 version: 7.14.3(react@18.3.1) '@tabler/icons-react': - specifier: ^3.22.0 - version: 3.22.0(react@18.3.1) + specifier: ^3.23.0 + version: 3.23.0(react@18.3.1) '@tiptap/extension-color': specifier: 2.10.3 version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/extension-text-style@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))) @@ -1703,7 +1703,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.23.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: ^14.2.18 version: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) @@ -3349,13 +3349,13 @@ packages: typescript: optional: true - '@tabler/icons-react@3.22.0': - resolution: {integrity: sha512-pOnn+IqZpnkYsEKRvbXXLXwXhYwg4cy1fEVr5SRrgAYJXkobpDjFTdVHlab0HEBXY5AE1NjsMlVeK6H/8Vv2uQ==} + '@tabler/icons-react@3.23.0': + resolution: {integrity: sha512-uSJfu1Tnhk6AAkerNCOBL3KL3aPpb/bnB4UjTbV3jItTJKitEgr4a98ted67qu5FHB3/tG1bxs32pqy5OL7NGw==} peerDependencies: react: '>= 16' - '@tabler/icons@3.22.0': - resolution: {integrity: sha512-IfgGzhFph5OBr2wTieWL/hyAs0FThnq9O155a6kfGYxqx7h5LQw91wnRswhEaGhXCcfmR7ZVDUr9H+x4b9Pb8g==} + '@tabler/icons@3.23.0': + resolution: {integrity: sha512-Cz+X58jfRm0g/KcupXXuPw5knj671lNR054AnmLXvCjudiQBWI0wZulDDSsqDoGezvBzMTNPQtNcjLkZs82ZxQ==} '@tanstack/match-sorter-utils@8.19.4': resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} @@ -9871,12 +9871,12 @@ snapshots: optionalDependencies: typescript: 5.7.2 - '@tabler/icons-react@3.22.0(react@18.3.1)': + '@tabler/icons-react@3.23.0(react@18.3.1)': dependencies: - '@tabler/icons': 3.22.0 + '@tabler/icons': 3.23.0 react: 18.3.1 - '@tabler/icons@3.22.0': {} + '@tabler/icons@3.23.0': {} '@tanstack/match-sorter-utils@8.19.4': dependencies: @@ -13057,12 +13057,12 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.22.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + mantine-react-table@2.0.0-beta.7(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(@tabler/icons-react@3.23.0(react@18.3.1))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@mantine/core': 7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/dates': 7.14.3(@mantine/core@7.14.3(@mantine/hooks@7.14.3(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.3(react@18.3.1))(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/hooks': 7.14.3(react@18.3.1) - '@tabler/icons-react': 3.22.0(react@18.3.1) + '@tabler/icons-react': 3.23.0(react@18.3.1) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-virtual': 3.10.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) From cebc925b879d22a662be326c6b8b5048907dd92c Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 21:27:13 +0000 Subject: [PATCH 46/48] fix(deps): update dependency mysql2 to v3.11.5 (#1567) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/db/package.json | 2 +- pnpm-lock.yaml | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/db/package.json b/packages/db/package.json index 75ce7e73b..71d72b4c0 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -48,7 +48,7 @@ "drizzle-kit": "^0.28.1", "drizzle-orm": "^0.36.4", "drizzle-zod": "^0.5.1", - "mysql2": "3.11.4" + "mysql2": "3.11.5" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ccabd51f0..f7120c506 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -871,13 +871,13 @@ importers: version: 0.28.1 drizzle-orm: specifier: ^0.36.4 - version: 0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.4)(react@18.3.1) + version: 0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.5)(react@18.3.1) drizzle-zod: specifier: ^0.5.1 - version: 0.5.1(drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.4)(react@18.3.1))(zod@3.23.8) + version: 0.5.1(drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.5)(react@18.3.1))(zod@3.23.8) mysql2: - specifier: 3.11.4 - version: 3.11.4 + specifier: 3.11.5 + version: 3.11.5 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -6304,8 +6304,8 @@ packages: engines: {node: '>=8', npm: '>=5'} hasBin: true - mysql2@3.11.4: - resolution: {integrity: sha512-Z2o3tY4Z8EvSRDwknaC40MdZ3+m0sKbpnXrShQLdxPrAvcNli7jLrD2Zd2IzsRMw4eK9Yle500FDmlkIqp+krg==} + mysql2@3.11.5: + resolution: {integrity: sha512-0XFu8rUmFN9vC0ME36iBvCUObftiMHItrYFhlCRvFWbLgpNqtC4Br/NmZX1HNCszxT0GGy5QtP+k3Q3eCJPaYA==} engines: {node: '>= 8.0'} named-placeholders@1.1.3: @@ -11581,18 +11581,18 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.4)(react@18.3.1): + drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.5)(react@18.3.1): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.12 '@types/react': 18.3.12 better-sqlite3: 11.6.0 - mysql2: 3.11.4 + mysql2: 3.11.5 react: 18.3.1 - drizzle-zod@0.5.1(drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.4)(react@18.3.1))(zod@3.23.8): + drizzle-zod@0.5.1(drizzle-orm@0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.5)(react@18.3.1))(zod@3.23.8): dependencies: - drizzle-orm: 0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.4)(react@18.3.1) + drizzle-orm: 0.36.4(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@18.3.12)(better-sqlite3@11.6.0)(mysql2@3.11.5)(react@18.3.1) zod: 3.23.8 eastasianwidth@0.2.0: {} @@ -13189,7 +13189,7 @@ snapshots: '@babel/runtime': 7.25.6 global: 4.4.0 - mysql2@3.11.4: + mysql2@3.11.5: dependencies: aws-ssl-profiles: 1.1.2 denque: 2.1.0 From 9b6eafc5fa9364da14ae6d0e8f5e9b9de7e74170 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 29 Nov 2024 11:25:53 +0000 Subject: [PATCH 47/48] chore(deps): update pnpm to v9.14.4 (#1568) 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 8dd2b1d4a..197919000 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "vite-tsconfig-paths": "^5.1.3", "vitest": "^2.1.6" }, - "packageManager": "pnpm@9.14.3", + "packageManager": "pnpm@9.14.4", "engines": { "node": ">=22.11.0" } From 6ad5fd55295622429035aa7f59e478ada19ec36a Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 29 Nov 2024 13:44:12 +0000 Subject: [PATCH 48/48] fix(deps): update tanstack-query monorepo to ^5.62.0 (#1569) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 6 ++-- pnpm-lock.yaml | 62 ++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index c647ebf55..a30956ecf 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -45,9 +45,9 @@ "@million/lint": "1.0.13", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.23.0", - "@tanstack/react-query": "^5.61.5", - "@tanstack/react-query-devtools": "^5.61.5", - "@tanstack/react-query-next-experimental": "5.61.5", + "@tanstack/react-query": "^5.62.0", + "@tanstack/react-query-devtools": "^5.62.0", + "@tanstack/react-query-next-experimental": "5.62.0", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f7120c506..4c1194bb1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -141,23 +141,23 @@ importers: specifier: ^3.23.0 version: 3.23.0(react@18.3.1) '@tanstack/react-query': - specifier: ^5.61.5 - version: 5.61.5(react@18.3.1) + specifier: ^5.62.0 + version: 5.62.0(react@18.3.1) '@tanstack/react-query-devtools': - specifier: ^5.61.5 - version: 5.61.5(@tanstack/react-query@5.61.5(react@18.3.1))(react@18.3.1) + specifier: ^5.62.0 + version: 5.62.0(@tanstack/react-query@5.62.0(react@18.3.1))(react@18.3.1) '@tanstack/react-query-next-experimental': - specifier: 5.61.5 - version: 5.61.5(@tanstack/react-query@5.61.5(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) + specifier: 5.62.0 + version: 5.62.0(@tanstack/react-query@5.62.0(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1) '@trpc/client': specifier: next version: 11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.648(@tanstack/react-query@5.62.0(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.62.0(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.648(@tanstack/react-query@5.62.0(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.648(typescript@5.7.2) @@ -506,7 +506,7 @@ importers: version: 11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + version: 11.0.0-rc.648(@tanstack/react-query@5.62.0(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.648(typescript@5.7.2) @@ -3361,27 +3361,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.61.5': - resolution: {integrity: sha512-iG5vqurEOEbv+paP6kW3zPENa99kSIrd1THISJMaTwVlJ+N5yjVDNOUwp9McK2DWqWCXM3v13ubBbAyhxT78UQ==} + '@tanstack/query-core@5.62.0': + resolution: {integrity: sha512-sx38bGrqF9bop92AXOvzDr0L9fWDas5zXdPglxa9cuqeVSWS7lY6OnVyl/oodfXjgOGRk79IfCpgVmxrbHuFHg==} '@tanstack/query-devtools@5.61.4': resolution: {integrity: sha512-21Tw+u8E3IJJj4A/Bct4H0uBaDTEu7zBrR79FeSyY+mS2gx5/m316oDtJiKkILc819VSTYt+sFzODoJNcpPqZQ==} - '@tanstack/react-query-devtools@5.61.5': - resolution: {integrity: sha512-P2DwlKyoGar6FX2XL324gM7AX8fuXm6DecLvfUoGpWbxtbuAtfzglRiCDLKkc5tJ7pekuaZsFFas/cyfTymoCQ==} + '@tanstack/react-query-devtools@5.62.0': + resolution: {integrity: sha512-9NWUgpfRPiUpsPdYopddbQLjWXbMBNaxM7K5VXPZIPfcfJJ4mG6VqrEJysL/79zgl7hC9kJlP+zXA0r5niomdg==} peerDependencies: - '@tanstack/react-query': ^5.61.5 + '@tanstack/react-query': ^5.62.0 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.61.5': - resolution: {integrity: sha512-gV/B41wjPXVOZcN7fjFza+Jx/QjZvVcbQRo/GGwMwAwgtRmpjEZxdvPch9hzYQu+aBSzlL7zflyA3SeVyVd8LQ==} + '@tanstack/react-query-next-experimental@5.62.0': + resolution: {integrity: sha512-Fml6J0LduC/xxYIDVTn/QYr66nzfob03O1mylgn9X6dfUwnhH9584hKOl+4UKGxCGjkEugp+FvI2T02FqhW/3g==} peerDependencies: - '@tanstack/react-query': ^5.61.5 + '@tanstack/react-query': ^5.62.0 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.61.5': - resolution: {integrity: sha512-rjy8aqPgBBEz/rjJnpnuhi8TVkVTorMUsJlM3lMvrRb5wK6yzfk34Er0fnJ7w/4qyF01SnXsLB/QsTBsLF5PaQ==} + '@tanstack/react-query@5.62.0': + resolution: {integrity: sha512-tj2ltjAn2a3fs+Dqonlvs6GyLQ/LKVJE2DVSYW+8pJ3P6/VCVGrfqv5UEchmlP7tLOvvtZcOuSyI2ooVlR5Yqw==} peerDependencies: react: ^18 || ^19 @@ -9882,25 +9882,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.61.5': {} + '@tanstack/query-core@5.62.0': {} '@tanstack/query-devtools@5.61.4': {} - '@tanstack/react-query-devtools@5.61.5(@tanstack/react-query@5.61.5(react@18.3.1))(react@18.3.1)': + '@tanstack/react-query-devtools@5.62.0(@tanstack/react-query@5.62.0(react@18.3.1))(react@18.3.1)': dependencies: '@tanstack/query-devtools': 5.61.4 - '@tanstack/react-query': 5.61.5(react@18.3.1) + '@tanstack/react-query': 5.62.0(react@18.3.1) react: 18.3.1 - '@tanstack/react-query-next-experimental@5.61.5(@tanstack/react-query@5.61.5(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1)': + '@tanstack/react-query-next-experimental@5.62.0(@tanstack/react-query@5.62.0(react@18.3.1))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react@18.3.1)': dependencies: - '@tanstack/react-query': 5.61.5(react@18.3.1) + '@tanstack/react-query': 5.62.0(react@18.3.1) next: 14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0) react: 18.3.1 - '@tanstack/react-query@5.61.5(react@18.3.1)': + '@tanstack/react-query@5.62.0(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.61.5 + '@tanstack/query-core': 5.62.0 react: 18.3.1 '@tanstack/react-table@8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -10139,7 +10139,7 @@ snapshots: '@trpc/server': 11.0.0-rc.648(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.648(@tanstack/react-query@5.62.0(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.62.0(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(next@14.2.18(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.81.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.648(typescript@5.7.2) @@ -10148,12 +10148,12 @@ snapshots: react-dom: 18.3.1(react@18.3.1) typescript: 5.7.2 optionalDependencies: - '@tanstack/react-query': 5.61.5(react@18.3.1) - '@trpc/react-query': 11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + '@tanstack/react-query': 5.62.0(react@18.3.1) + '@trpc/react-query': 11.0.0-rc.648(@tanstack/react-query@5.62.0(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.61.5(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.648(@tanstack/react-query@5.62.0(react@18.3.1))(@trpc/client@11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.2)': dependencies: - '@tanstack/react-query': 5.61.5(react@18.3.1) + '@tanstack/react-query': 5.62.0(react@18.3.1) '@trpc/client': 11.0.0-rc.648(@trpc/server@11.0.0-rc.648(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.648(typescript@5.7.2) react: 18.3.1