diff --git a/.dockerignore b/.dockerignore index 6f0d55aee..4a3a71c06 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,6 +5,7 @@ node_modules npm-debug.log README.md .next +.turbo .git dev .build diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 326582ddc..c6d6e5fdf 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -33,6 +33,15 @@ body: options: # The below comment is used to insert a new version with on-release.yml #NEXT_VERSION# + - 1.56.0 + - 1.55.0 + - 1.54.0 + - 1.53.0 + - 1.52.0 + - 1.51.0 + - 1.50.1 + - 1.50.0 + - 1.49.1 - 1.49.0 - 1.48.0 - 1.47.0 diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index 2e1be7e0e..b13b1d378 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -65,7 +65,7 @@ jobs: - uses: actions/setup-node@v6 if: env.SKIP_RELEASE == 'false' with: - node-version: 24.13.0 + node-version: 24.14.0 cache: "pnpm" - run: npm i -g pnpm if: env.SKIP_RELEASE == 'false' @@ -128,7 +128,7 @@ jobs: images: "${{ env.GHCR_REPO }}" - name: Log in to the Container registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -167,7 +167,7 @@ jobs: images: "${{ env.GHCR_REPO }}" - name: Log in to the Container registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -228,8 +228,17 @@ jobs: DEPLOY_LATEST: ${{ github.ref_name == 'main' }} DEPLOY_BETA: ${{ github.ref_name == 'beta' }} steps: + - name: Obtain token + if: needs.release.outputs.skipped == 'false' + id: obtainToken + uses: actions/create-github-app-token@v2 + with: + private-key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }} + app-id: ${{ secrets.RENOVATE_MERGE_APP_ID }} + permission-contents: write # required to publish the release + - name: Log in to the Container registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -258,7 +267,7 @@ jobs: - name: Publish release if: needs.release.outputs.skipped == 'false' env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }} run: | gh release edit --repo ${{ github.repository }} ${{ needs.release.outputs.version }} --draft=false diff --git a/.github/workflows/on-release.yml b/.github/workflows/on-release.yml index c1f3739ef..f5042d42f 100644 --- a/.github/workflows/on-release.yml +++ b/.github/workflows/on-release.yml @@ -2,7 +2,7 @@ permissions: {} on: release: - types: [published] + types: [released] jobs: trigger-docs-release: @@ -37,6 +37,7 @@ jobs: } } EOF + update-bug-report-template: name: Update Bug Report Template runs-on: ubuntu-latest @@ -54,23 +55,20 @@ jobs: uses: actions/checkout@v6 with: token: ${{ steps.obtainToken.outputs.token }} + ref: dev - name: Setup uses: ./tooling/github/setup - run: pnpm run scripts:update-bug-report-template env: NEXT_VERSION: ${{ github.event.release.tag_name }} - - name: Commit changes - run: | - git config --global user.email "175486441+homarr-releases[bot]@users.noreply.github.com" - git config --global user.name "Releases Homarr" - git checkout -b update-bug-report-template - git add . - git commit -m "chore: update bug report template" - name: Create Pull Request id: create-pull-request uses: peter-evans/create-pull-request@v8 with: + add-paths: .github/ISSUE_TEMPLATE/bug_report.yml + commit-message: "chore: update bug report template" + author: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com> token: ${{ steps.obtainToken.outputs.token }} branch: update-bug-report-template base: dev diff --git a/.nvmrc b/.nvmrc index 3fe3b1570..d845d9d88 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -24.13.0 +24.14.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 30d674aa4..fe0c7ad47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,186 @@ +## [1.56.0](https://github.com/homarr-labs/homarr/compare/v1.55.0...v1.56.0) (2026-03-13) + +### Features + +* add immich integration and widget ([#5165](https://github.com/homarr-labs/homarr/issues/5165)) ([cdd90b8](https://github.com/homarr-labs/homarr/commit/cdd90b8aa091e4d05a40af35ea87486b83bf4182)) +* **boards:** show supported integrations in widget selection ([#5187](https://github.com/homarr-labs/homarr/issues/5187)) ([dabe96b](https://github.com/homarr-labs/homarr/commit/dabe96bd5ea52110812934b1ec9c8dc9ecd77603)) +* expand cli ([#5159](https://github.com/homarr-labs/homarr/issues/5159)) ([aa36ce3](https://github.com/homarr-labs/homarr/commit/aa36ce3c4784c91024c4e8001c236e28f02396e7)) +* Tracearr integration ([#5060](https://github.com/homarr-labs/homarr/issues/5060)) ([f686001](https://github.com/homarr-labs/homarr/commit/f68600150ab1985d56f1bed45d8ac158a74ec443)) + +### Bug Fixes + +* **boards:** duplication of boards fails with postgresql / mysql ([#5228](https://github.com/homarr-labs/homarr/issues/5228)) ([ba9c3f3](https://github.com/homarr-labs/homarr/commit/ba9c3f3e27659a5c06604d06192ccb8316658937)) +* **deps:** update dependency @tabler/icons-react to ^3.38.0 ([#5182](https://github.com/homarr-labs/homarr/issues/5182)) ([6aaaf31](https://github.com/homarr-labs/homarr/commit/6aaaf31d8b5495090081f8795844db00a7b0a2ed)) +* **deps:** update dependency @tabler/icons-react to ^3.39.0 ([#5209](https://github.com/homarr-labs/homarr/issues/5209)) ([22fd8e9](https://github.com/homarr-labs/homarr/commit/22fd8e9b95bcddd9a9a1fa599f1a42f4d502f205)) +* **deps:** update dependency @tabler/icons-react to ^3.40.0 ([#5220](https://github.com/homarr-labs/homarr/issues/5220)) ([12ad241](https://github.com/homarr-labs/homarr/commit/12ad241406d581c98826ed270d71faf50779c601)) +* **deps:** update dependency fast-xml-parser to ^5.4.2 ([#5190](https://github.com/homarr-labs/homarr/issues/5190)) ([5159d9f](https://github.com/homarr-labs/homarr/commit/5159d9f0e7263166f26ec770c55dd4e2944dfd72)) +* **deps:** update dependency fastify to ^5.8.1 ([#5202](https://github.com/homarr-labs/homarr/issues/5202)) ([b02e8cc](https://github.com/homarr-labs/homarr/commit/b02e8cc875df20ff4d007c527bb5682db960fae6)) +* **deps:** update dependency fastify to ^5.8.2 ([#5221](https://github.com/homarr-labs/homarr/issues/5221)) ([5c4f394](https://github.com/homarr-labs/homarr/commit/5c4f39450148fd91e2cecf70c20c8ec78ecebfd6)) +* **deps:** update dependency mysql2 to v3.19.0 ([#5206](https://github.com/homarr-labs/homarr/issues/5206)) ([324bfd9](https://github.com/homarr-labs/homarr/commit/324bfd90d1a2c6ca80610c549b84d93f4a695cab)) +* **deps:** update dependency pg to ^8.20.0 ([#5198](https://github.com/homarr-labs/homarr/issues/5198)) ([1c6e23a](https://github.com/homarr-labs/homarr/commit/1c6e23a4b6509e83667396a392b23655f8b614dd)) +* **deps:** update mantine monorepo to ^8.3.16 ([#5201](https://github.com/homarr-labs/homarr/issues/5201)) ([c7fa5cd](https://github.com/homarr-labs/homarr/commit/c7fa5cdbb3ffdf90dbc9c9dbef0551e2b0edfb4c)) +* **deps:** update tiptap monorepo to v3.20.1 ([#5215](https://github.com/homarr-labs/homarr/issues/5215)) ([d941ed5](https://github.com/homarr-labs/homarr/commit/d941ed58fa482f2e41d27b6b5088146a608b236e)) +* **deps:** update trpc monorepo to ^11.12.0 ([#5213](https://github.com/homarr-labs/homarr/issues/5213)) ([00dd32b](https://github.com/homarr-labs/homarr/commit/00dd32bbe124f02ad7ae5ecb4e298a6d3fb4f0b8)) +* **deps:** update turbo monorepo to ^2.8.14 ([#5113](https://github.com/homarr-labs/homarr/issues/5113)) ([8ee05e0](https://github.com/homarr-labs/homarr/commit/8ee05e0d491bfec9f768a3a915ad1c8abf433b5b)) +* **glances:** unable to parse uptime of 1 day ([#5226](https://github.com/homarr-labs/homarr/issues/5226)) ([3091ed6](https://github.com/homarr-labs/homarr/commit/3091ed6358d83249a94827f55a812323c1e80497)) +* **image-proxy:** hash full URL and headers deterministically ([#5184](https://github.com/homarr-labs/homarr/issues/5184)) ([9a878af](https://github.com/homarr-labs/homarr/commit/9a878af414e12691420edb945ed6f9f6255c7eae)) +* language changes when searching for some icons ([#5224](https://github.com/homarr-labs/homarr/issues/5224)) ([21225c9](https://github.com/homarr-labs/homarr/commit/21225c979edb9a2c9cc00c4649363c0aab8058f1)) +* **releases:** allow any icon url for repositories ([#5229](https://github.com/homarr-labs/homarr/issues/5229)) ([d3c2ad1](https://github.com/homarr-labs/homarr/commit/d3c2ad134f7a9972118abcfff5482ca6d6105406)) +* **security:** harden hashing in image-proxy ([#5188](https://github.com/homarr-labs/homarr/issues/5188)) ([5723da2](https://github.com/homarr-labs/homarr/commit/5723da21aae8b69642a39e4b5a05ad84fa8dd8ef)) +* **stock-price:** align sparkline color with displayed price change ([#5181](https://github.com/homarr-labs/homarr/issues/5181)) ([bbf0adf](https://github.com/homarr-labs/homarr/commit/bbf0adf31a1f08f3ca09b709efd1daa15cb8498c)) +* **system-disks:** format absolute denominator with human-readable size ([#5183](https://github.com/homarr-labs/homarr/issues/5183)) ([85c4601](https://github.com/homarr-labs/homarr/commit/85c460190ceedad83c40af81d5efa270bc464b94)) +* **true-nas:** ignore offline/exported pools ([#5225](https://github.com/homarr-labs/homarr/issues/5225)) ([451602d](https://github.com/homarr-labs/homarr/commit/451602d1e61256696f6bcb0cd76f09748345a940)) + +## [1.55.0](https://github.com/homarr-labs/homarr/compare/v1.54.0...v1.55.0) (2026-03-06) + +### Features + +* add seerr integration ([#5139](https://github.com/homarr-labs/homarr/issues/5139)) ([0e29a2f](https://github.com/homarr-labs/homarr/commit/0e29a2fce172cbfda083b899c01b92bd8b6210b7)) + +### Bug Fixes + +* **deps:** update dependency fast-xml-parser to ^5.4.1 ([#5150](https://github.com/homarr-labs/homarr/issues/5150)) ([eb2f85f](https://github.com/homarr-labs/homarr/commit/eb2f85f6f8c9d7d90c1aeec079225678dfef4dd0)) +* **deps:** update dependency ioredis to v5.10.0 ([#5169](https://github.com/homarr-labs/homarr/issues/5169)) ([1c06e56](https://github.com/homarr-labs/homarr/commit/1c06e562c33bd9f1387cb05a3dece7beedfe43c2)) +* **deps:** update dependency ldapts to v8.1.7 ([#5168](https://github.com/homarr-labs/homarr/issues/5168)) ([ec45aac](https://github.com/homarr-labs/homarr/commit/ec45aacc63766c51a99ead6130bade442124e70d)) +* **deps:** update dependency mysql2 to v3.17.5 ([#5140](https://github.com/homarr-labs/homarr/issues/5140)) ([66ad67e](https://github.com/homarr-labs/homarr/commit/66ad67eced587fd49a470395298477dc09cdd225)) +* **deps:** update dependency mysql2 to v3.18.0 ([#5141](https://github.com/homarr-labs/homarr/issues/5141)) ([52792af](https://github.com/homarr-labs/homarr/commit/52792af186a6eb3519aafdee5a7c0dd03a86a461)) +* **deps:** update dependency mysql2 to v3.18.1 ([#5152](https://github.com/homarr-labs/homarr/issues/5152)) ([8bf2a43](https://github.com/homarr-labs/homarr/commit/8bf2a43e065671c7c119ef1da5aa09d284db0ede)) +* **deps:** update dependency mysql2 to v3.18.2 ([#5164](https://github.com/homarr-labs/homarr/issues/5164)) ([4717a57](https://github.com/homarr-labs/homarr/commit/4717a5724d4a6286c0f2bb92cf1e1fe17903a13a)) +* **deps:** update dependency pg to ^8.19.0 ([#5153](https://github.com/homarr-labs/homarr/issues/5153)) ([0b0fb1c](https://github.com/homarr-labs/homarr/commit/0b0fb1c5798357d7bc847dfe577b26529be8aa5c)) +* **deps:** update dependency swagger-ui-react to ^5.32.0 ([#5167](https://github.com/homarr-labs/homarr/issues/5167)) ([ff11599](https://github.com/homarr-labs/homarr/commit/ff1159943c967b6fea44894765c2210c3cdd44cc)) +* **deps:** update dependency typescript-eslint to ^8.56.1 ([#5142](https://github.com/homarr-labs/homarr/issues/5142)) ([ac3b4e7](https://github.com/homarr-labs/homarr/commit/ac3b4e7de0460cab7723dcc1a5a8e14072a37d25)) +* **deps:** update trpc monorepo to ^11.11.0 ([#5174](https://github.com/homarr-labs/homarr/issues/5174)) ([bc2a532](https://github.com/homarr-labs/homarr/commit/bc2a532a03d8cb76270f52b766f1a7f46d704096)) + +## [1.54.0](https://github.com/homarr-labs/homarr/compare/v1.53.2...v1.54.0) (2026-02-27) + +### Features + +* add glances integration ([#5102](https://github.com/homarr-labs/homarr/issues/5102)) ([91846bc](https://github.com/homarr-labs/homarr/commit/91846bc000b419b03925acc4b447efcc696ff009)) +* add slskd integration ([#5088](https://github.com/homarr-labs/homarr/issues/5088)) ([d999f37](https://github.com/homarr-labs/homarr/commit/d999f3797562a4c1d07a08b10ef4821c12390d2f)) + +### Bug Fixes + +* **deps:** update dependency @ctrl/deluge to ^7.5.1 ([#5098](https://github.com/homarr-labs/homarr/issues/5098)) ([53d4625](https://github.com/homarr-labs/homarr/commit/53d46257ce2c257f2e083d0645178823afd45227)) +* **deps:** update dependency @ctrl/deluge to ^7.5.2 ([#5105](https://github.com/homarr-labs/homarr/issues/5105)) ([dacbcce](https://github.com/homarr-labs/homarr/commit/dacbcce179c21f8858f61633c4a72b248ec437b7)) +* **deps:** update dependency @ctrl/qbittorrent to ^9.11.1 ([#5097](https://github.com/homarr-labs/homarr/issues/5097)) ([193d4d2](https://github.com/homarr-labs/homarr/commit/193d4d2e2aabaffb019108c3150de3f92d84efe8)) +* **deps:** update dependency @ctrl/qbittorrent to ^9.11.2 ([#5106](https://github.com/homarr-labs/homarr/issues/5106)) ([ee62667](https://github.com/homarr-labs/homarr/commit/ee6266707f779e7a080b40b4ed3e0a8679bb2910)) +* **deps:** update dependency @tabler/icons-react to ^3.37.0 ([#5119](https://github.com/homarr-labs/homarr/issues/5119)) ([ba86019](https://github.com/homarr-labs/homarr/commit/ba860193d78f84fa9326a006caba4b3cc7c195c2)) +* **deps:** update dependency @tabler/icons-react to ^3.37.1 ([#5121](https://github.com/homarr-labs/homarr/issues/5121)) ([c3a4051](https://github.com/homarr-labs/homarr/commit/c3a40510075f56d7f156c877e1041b7bf36677b5)) +* **deps:** update dependency fast-xml-parser to ^5.3.7 ([#5122](https://github.com/homarr-labs/homarr/issues/5122)) ([6861839](https://github.com/homarr-labs/homarr/commit/6861839b65fffb0c8030ae7a6fd24105fdad6b95)) +* **deps:** update dependency glob to ^13.0.4 ([#5107](https://github.com/homarr-labs/homarr/issues/5107)) ([ea0a411](https://github.com/homarr-labs/homarr/commit/ea0a411c813c8dfcb17493e6a41d2ab96077adb6)) +* **deps:** update dependency glob to ^13.0.5 ([#5109](https://github.com/homarr-labs/homarr/issues/5109)) ([02ec089](https://github.com/homarr-labs/homarr/commit/02ec0898ef32f8b6ac540a9c005130f3e7312e65)) +* **deps:** update dependency glob to ^13.0.6 ([#5117](https://github.com/homarr-labs/homarr/issues/5117)) ([908bced](https://github.com/homarr-labs/homarr/commit/908bced0dfb158a9da155c97dbf982c2d544fc20)) +* **deps:** update dependency isomorphic-dompurify to v3 ([#5130](https://github.com/homarr-labs/homarr/issues/5130)) ([cfaf82c](https://github.com/homarr-labs/homarr/commit/cfaf82cd04e4659db50e6074fce4cc739ee2aaf8)) +* **deps:** update dependency jotai to ^2.18.0 ([#5115](https://github.com/homarr-labs/homarr/issues/5115)) ([4aad087](https://github.com/homarr-labs/homarr/commit/4aad0873baec97167460bad1c69c770aecb38bd0)) +* **deps:** update dependency mysql2 to v3.17.2 ([#5104](https://github.com/homarr-labs/homarr/issues/5104)) ([15c7fc5](https://github.com/homarr-labs/homarr/commit/15c7fc5ae809b671c8d774d39b7a7fdf893db611)) +* **deps:** update dependency mysql2 to v3.17.3 ([#5116](https://github.com/homarr-labs/homarr/issues/5116)) ([42e5326](https://github.com/homarr-labs/homarr/commit/42e53261ef956a0f5ad60ac45c623d3acd3d9530)) +* **deps:** update dependency mysql2 to v3.17.4 ([#5123](https://github.com/homarr-labs/homarr/issues/5123)) ([7ca38c3](https://github.com/homarr-labs/homarr/commit/7ca38c3a781d54f91d01844e077528345a9b190b)) +* **deps:** update dependency next-intl to v4.8.3 ([#5100](https://github.com/homarr-labs/homarr/issues/5100)) ([d67c2db](https://github.com/homarr-labs/homarr/commit/d67c2db886b92e7d0973bf17ff5059b8328acdf6)) +* **deps:** update dependency swagger-ui-react to ^5.31.1 ([#5101](https://github.com/homarr-labs/homarr/issues/5101)) ([210d46b](https://github.com/homarr-labs/homarr/commit/210d46b43ffeb956af3f983a82772609e42f08df)) +* **deps:** update dependency swagger-ui-react to ^5.31.2 ([#5124](https://github.com/homarr-labs/homarr/issues/5124)) ([51585c6](https://github.com/homarr-labs/homarr/commit/51585c6413ab3841f0bee1e736d726081912ab08)) +* **deps:** update dependency typescript-eslint to ^8.56.0 ([#5103](https://github.com/homarr-labs/homarr/issues/5103)) ([8bac6e1](https://github.com/homarr-labs/homarr/commit/8bac6e1c5a239108bc48fd877b3fc1ec8b445109)) +* **deps:** update mantine monorepo to ^8.3.15 ([#5099](https://github.com/homarr-labs/homarr/issues/5099)) ([b8f9b4c](https://github.com/homarr-labs/homarr/commit/b8f9b4cf1d870956806a68ad78a95af60c99975f)) +* **deps:** update testcontainers-node monorepo to ^11.12.0 ([#5110](https://github.com/homarr-labs/homarr/issues/5110)) ([e3c8174](https://github.com/homarr-labs/homarr/commit/e3c8174bdcb95de8e731c79c2b4bebce98d6dbce)) +* **deps:** update tiptap monorepo to v3.20.0 ([#5112](https://github.com/homarr-labs/homarr/issues/5112)) ([3d2bc82](https://github.com/homarr-labs/homarr/commit/3d2bc82a33a88a8f2d60fd61112f1f712e956670)) + +## [1.53.2](https://github.com/homarr-labs/homarr/compare/v1.53.1...v1.53.2) (2026-02-20) + +### Bug Fixes + +* **analytics:** restrict publishing to every week ([#5028](https://github.com/homarr-labs/homarr/issues/5028)) ([8c4be2f](https://github.com/homarr-labs/homarr/commit/8c4be2fbe80e42472b8b17542a4282ec26d1fefe)) +* **deps:** update dependency @tanstack/react-query to ^5.90.21 ([#5067](https://github.com/homarr-labs/homarr/issues/5067)) ([1b8dde9](https://github.com/homarr-labs/homarr/commit/1b8dde98d2518d3d82895a26a58db7f42abf2a6e)) +* **deps:** update dependency dotenv to ^17.3.0 ([#5079](https://github.com/homarr-labs/homarr/issues/5079)) ([1e822fb](https://github.com/homarr-labs/homarr/commit/1e822fbe0c8224e6ba5b99e6516ea4437c9f36bb)) +* **deps:** update dependency dotenv to ^17.3.1 ([#5081](https://github.com/homarr-labs/homarr/issues/5081)) ([46ba48f](https://github.com/homarr-labs/homarr/commit/46ba48fb20b69b2876fc42ee862a64717e6428f7)) +* **deps:** update dependency drizzle-kit to ^0.31.9 ([#5059](https://github.com/homarr-labs/homarr/issues/5059)) ([db14d98](https://github.com/homarr-labs/homarr/commit/db14d98d1966dada5d74507e64e90f34fb4eee60)) +* **deps:** update dependency fast-xml-parser to ^5.3.6 ([#5089](https://github.com/homarr-labs/homarr/issues/5089)) ([ac5bc70](https://github.com/homarr-labs/homarr/commit/ac5bc70a5de9a4307c4165203ff26ee1a112ca81)) +* **deps:** update dependency glob to ^13.0.2 ([#5065](https://github.com/homarr-labs/homarr/issues/5065)) ([50601d5](https://github.com/homarr-labs/homarr/commit/50601d53792baae5a259adb4e4d3fefcc35d25df)) +* **deps:** update dependency glob to ^13.0.3 ([#5078](https://github.com/homarr-labs/homarr/issues/5078)) ([ba0ed77](https://github.com/homarr-labs/homarr/commit/ba0ed77bb036dd0e35db08ce9df98f133f835d53)) +* **deps:** update dependency ioredis to v5.9.3 ([#5076](https://github.com/homarr-labs/homarr/issues/5076)) ([4e1baa5](https://github.com/homarr-labs/homarr/commit/4e1baa570324be06eb442f2db08a8b152d9b416b)) +* **deps:** update dependency mysql2 to v3.17.0 ([#5066](https://github.com/homarr-labs/homarr/issues/5066)) ([fcb020c](https://github.com/homarr-labs/homarr/commit/fcb020c191b98a729508b7660fb484f29208c51c)) +* **deps:** update dependency mysql2 to v3.17.1 ([#5082](https://github.com/homarr-labs/homarr/issues/5082)) ([475f14d](https://github.com/homarr-labs/homarr/commit/475f14dc312c1b8cffbabe607c17be8b2d1d294c)) +* **deps:** update dependency react-error-boundary to ^6.1.1 ([#5086](https://github.com/homarr-labs/homarr/issues/5086)) ([bb9da30](https://github.com/homarr-labs/homarr/commit/bb9da3007e4f29fd7993bd9960e80e316a17bbf0)) +* **deps:** update dependency tsdav to ^2.1.8 ([#5090](https://github.com/homarr-labs/homarr/issues/5090)) ([840d110](https://github.com/homarr-labs/homarr/commit/840d1107ec3392b4581c931ef1efe2d9816ededd)) +* **deps:** update dependency typescript-eslint to ^8.55.0 ([#5061](https://github.com/homarr-labs/homarr/issues/5061)) ([56ecce2](https://github.com/homarr-labs/homarr/commit/56ecce254195c480eef9cefefd7bad98c49b9175)) +* **deps:** update trpc monorepo to ^11.10.0 ([#5062](https://github.com/homarr-labs/homarr/issues/5062)) ([bc7ec63](https://github.com/homarr-labs/homarr/commit/bc7ec63f8547e8f868ef5d56a1a8c5c893fda1e3)) +* **deps:** update turbo monorepo to ^2.8.5 ([#5064](https://github.com/homarr-labs/homarr/issues/5064)) ([c36e947](https://github.com/homarr-labs/homarr/commit/c36e947935246761cac26049ac24c56c8cc0990a)) +* **deps:** update turbo monorepo to ^2.8.7 ([#5071](https://github.com/homarr-labs/homarr/issues/5071)) ([c6c48ea](https://github.com/homarr-labs/homarr/commit/c6c48ea6e5f76303fd93022fd566a99af1ad829f)) +* **deps:** update turbo monorepo to ^2.8.8 ([#5084](https://github.com/homarr-labs/homarr/issues/5084)) ([dcae437](https://github.com/homarr-labs/homarr/commit/dcae437fc5cadc2e112037fa26f8351111c69869)) +* **deps:** update turbo monorepo to ^2.8.9 ([#5092](https://github.com/homarr-labs/homarr/issues/5092)) ([24560cb](https://github.com/homarr-labs/homarr/commit/24560cb93f17767b5ab8047c07f81a165e0fb769)) + +## [1.53.1](https://github.com/homarr-labs/homarr/compare/v1.53.0...v1.53.1) (2026-02-13) + +### Bug Fixes + +* **deps:** update dependency @ianvs/prettier-plugin-sort-imports to ^4.7.1 ([#5021](https://github.com/homarr-labs/homarr/issues/5021)) ([5946e6c](https://github.com/homarr-labs/homarr/commit/5946e6c7193eded77b98c76aedff71a7bb912574)) +* **deps:** update dependency @octokit/auth-app to ^8.2.0 ([#5009](https://github.com/homarr-labs/homarr/issues/5009)) ([4a86361](https://github.com/homarr-labs/homarr/commit/4a86361134da404462b1a9f8ff98fe3504fade0d)) +* **deps:** update dependency dotenv to ^17.2.4 ([#5029](https://github.com/homarr-labs/homarr/issues/5029)) ([e8c7f45](https://github.com/homarr-labs/homarr/commit/e8c7f454768044540ee37d75fc73654b74315390)) +* **deps:** update dependency fast-xml-parser to ^5.3.5 ([#5050](https://github.com/homarr-labs/homarr/issues/5050)) ([30f561f](https://github.com/homarr-labs/homarr/commit/30f561f85ad2abb90ccb9fa3292155d51f1f379b)) +* **deps:** update dependency fastify to ^5.7.4 ([#5027](https://github.com/homarr-labs/homarr/issues/5027)) ([18e16d6](https://github.com/homarr-labs/homarr/commit/18e16d687f8137e5b5c55cf2385436b714a2d27b)) +* **deps:** update dependency glob to ^13.0.1 ([#5013](https://github.com/homarr-labs/homarr/issues/5013)) ([3b21c3e](https://github.com/homarr-labs/homarr/commit/3b21c3ef765add0f7cdc8f66ae8f1b7aac3cf51e)) +* **deps:** update dependency isomorphic-dompurify to ^2.36.0 ([#5041](https://github.com/homarr-labs/homarr/issues/5041)) ([e561fc5](https://github.com/homarr-labs/homarr/commit/e561fc550fab2207212ae108a5177a248795cf66)) +* **deps:** update dependency jotai to ^2.17.1 ([#5019](https://github.com/homarr-labs/homarr/issues/5019)) ([da96566](https://github.com/homarr-labs/homarr/commit/da965668d021ebebd8c8a7e2a4560577a6b0828b)) +* **deps:** update dependency ldapts to v8.1.5 ([#5004](https://github.com/homarr-labs/homarr/issues/5004)) ([c3932b1](https://github.com/homarr-labs/homarr/commit/c3932b18f03b86e8ee049c14ace63119fd2ab0d6)) +* **deps:** update dependency ldapts to v8.1.6 ([#5018](https://github.com/homarr-labs/homarr/issues/5018)) ([c92d487](https://github.com/homarr-labs/homarr/commit/c92d487ceaa9159579ef4352d763429887953bb5)) +* **deps:** update dependency mysql2 to v3.16.3 ([#5014](https://github.com/homarr-labs/homarr/issues/5014)) ([04b3598](https://github.com/homarr-labs/homarr/commit/04b35980f5997e744a455a847f28b1a676f9861e)) +* **deps:** update dependency next-intl to v4.8.2 ([#5005](https://github.com/homarr-labs/homarr/issues/5005)) ([b67fecd](https://github.com/homarr-labs/homarr/commit/b67fecd3963bc3112ab8ecd91385bbe13c982290)) +* **deps:** update dependency tsdav to ^2.1.7 ([#5033](https://github.com/homarr-labs/homarr/issues/5033)) ([d694b1a](https://github.com/homarr-labs/homarr/commit/d694b1a5410833a791d57fb3dd4650003510140e)) +* **deps:** update dependency video.js to ^8.23.7 ([#5034](https://github.com/homarr-labs/homarr/issues/5034)) ([6efabd4](https://github.com/homarr-labs/homarr/commit/6efabd436849b9fdea0d060fe7beaa9c67424c29)) +* **deps:** update tiptap monorepo to v3.19.0 ([#5012](https://github.com/homarr-labs/homarr/issues/5012)) ([ad41a91](https://github.com/homarr-labs/homarr/commit/ad41a918ef72f322015a02e9601c43728e680b34)) +* **deps:** update turbo monorepo to ^2.8.2 ([#5010](https://github.com/homarr-labs/homarr/issues/5010)) ([b479fea](https://github.com/homarr-labs/homarr/commit/b479fea6eb0b025b55668201160a5e57267de2e7)) +* **deps:** update turbo monorepo to ^2.8.3 ([#5016](https://github.com/homarr-labs/homarr/issues/5016)) ([f1d2f07](https://github.com/homarr-labs/homarr/commit/f1d2f07f3888e7567b56ae61a9d137255a2b8529)) +* **sections:** dynamic sections vanish when adding category ([#5046](https://github.com/homarr-labs/homarr/issues/5046)) ([60fcb71](https://github.com/homarr-labs/homarr/commit/60fcb71bd2616af3e99b20cbbcd1b0417a0fff76)) +* **seerr:** use reasonable limits for amount of returned entries ([#5001](https://github.com/homarr-labs/homarr/issues/5001)) ([be1a26a](https://github.com/homarr-labs/homarr/commit/be1a26a98d2ed9d25969ded5ae64705c001f71dd)) + +## [1.53.0](https://github.com/homarr-labs/homarr/compare/v1.52.0...v1.53.0) (2026-02-06) + +### Features + +* **analytics:** consolidate server analytics into single comprehensive Umami event ([#4938](https://github.com/homarr-labs/homarr/issues/4938)) ([10848db](https://github.com/homarr-labs/homarr/commit/10848db595b2254b1485ea168d1c327b907d9ff8)) + +### Bug Fixes + +* **deps:** update dependency @next/eslint-plugin-next to v16.1.5 ([#4959](https://github.com/homarr-labs/homarr/issues/4959)) ([ec40309](https://github.com/homarr-labs/homarr/commit/ec40309cde2280cf689856d4f78fb1500b583130)) +* **deps:** update dependency @paralleldrive/cuid2 to ^3.3.0 ([#4952](https://github.com/homarr-labs/homarr/issues/4952)) ([a9db68b](https://github.com/homarr-labs/homarr/commit/a9db68bd3eaea6a4564cd6842054ea60cc45e3a3)) +* **deps:** update dependency @tanstack/react-query-devtools to ^5.91.3 ([#4985](https://github.com/homarr-labs/homarr/issues/4985)) ([1115ad1](https://github.com/homarr-labs/homarr/commit/1115ad1364bca84dee33aa42499c986bdad2c528)) +* **deps:** update dependency fast-xml-parser to ^5.3.4 ([#4982](https://github.com/homarr-labs/homarr/issues/4982)) ([460d53c](https://github.com/homarr-labs/homarr/commit/460d53cafa1abeebf4dea7b1bb1e920267c2f9fe)) +* **deps:** update dependency fastify to ^5.7.2 ([#4955](https://github.com/homarr-labs/homarr/issues/4955)) ([0eab26c](https://github.com/homarr-labs/homarr/commit/0eab26cdace47c0b19519372a3daa6998e0c8207)) +* **deps:** update dependency jotai to ^2.17.0 ([#4972](https://github.com/homarr-labs/homarr/issues/4972)) ([e67483f](https://github.com/homarr-labs/homarr/commit/e67483fea56f0b06fa54e68b8dd62fd0b5dedadd)) +* **deps:** update dependency ldapts to v8.1.4 ([#4993](https://github.com/homarr-labs/homarr/issues/4993)) ([c2d9f18](https://github.com/homarr-labs/homarr/commit/c2d9f18e4ef28f063e4abf1175cd90ba746410b7)) +* **deps:** update dependency mysql2 to v3.16.2 ([#4961](https://github.com/homarr-labs/homarr/issues/4961)) ([5c6eafb](https://github.com/homarr-labs/homarr/commit/5c6eafb272436b78d4668d562d50001bca48e6d3)) +* **deps:** update dependency next-intl to v4.8.0 ([#4977](https://github.com/homarr-labs/homarr/issues/4977)) ([c3a7ab5](https://github.com/homarr-labs/homarr/commit/c3a7ab52ee3acbcf47255d5813317c3cf67ea49f)) +* **deps:** update dependency next-intl to v4.8.1 ([#4986](https://github.com/homarr-labs/homarr/issues/4986)) ([62b6939](https://github.com/homarr-labs/homarr/commit/62b6939b92f29618cc6d13a189b65df1922779ba)) +* **deps:** update dependency pg to ^8.18.0 ([#4989](https://github.com/homarr-labs/homarr/issues/4989)) ([c3071a3](https://github.com/homarr-labs/homarr/commit/c3071a3c95f3a30438050aa37c65950cccabf681)) +* **deps:** update dependency typescript-eslint to ^8.54.0 ([#4958](https://github.com/homarr-labs/homarr/issues/4958)) ([e88d126](https://github.com/homarr-labs/homarr/commit/e88d126355b96ac5060b552047c191f8b284461c)) +* **deps:** update dependency video.js to ^8.23.6 ([#4992](https://github.com/homarr-labs/homarr/issues/4992)) ([4209f7c](https://github.com/homarr-labs/homarr/commit/4209f7c70e75870f56b93a97f3b6053962ee3ff7)) +* **deps:** update mantine monorepo to ^8.3.14 ([#4998](https://github.com/homarr-labs/homarr/issues/4998)) ([0fafa50](https://github.com/homarr-labs/homarr/commit/0fafa505ac1c7f4ddb33ee5e8dedca9a883164ba)) +* **deps:** update nextjs monorepo to v16.1.6 ([#4969](https://github.com/homarr-labs/homarr/issues/4969)) ([7c3fe3d](https://github.com/homarr-labs/homarr/commit/7c3fe3d6d47879c67950b3dc4d7e39adbc06c146)) +* **deps:** update react monorepo to v19.2.4 ([#4960](https://github.com/homarr-labs/homarr/issues/4960)) ([d3e0b47](https://github.com/homarr-labs/homarr/commit/d3e0b47875998fc766e1c5f0481244fc659b0c49)) +* **deps:** update tiptap monorepo to v3.18.0 ([#4975](https://github.com/homarr-labs/homarr/issues/4975)) ([24e24dc](https://github.com/homarr-labs/homarr/commit/24e24dc634a9e5a25ab934541225996e62ac31be)) +* **deps:** update trpc monorepo to ^11.9.0 ([#4970](https://github.com/homarr-labs/homarr/issues/4970)) ([aeb6e0f](https://github.com/homarr-labs/homarr/commit/aeb6e0f40659bf1c514380a6c96858afdaf7e6db)) +* **deps:** update turbo monorepo to ^2.8.0 ([#4978](https://github.com/homarr-labs/homarr/issues/4978)) ([054ca57](https://github.com/homarr-labs/homarr/commit/054ca57188656ddac7aaa16f792269eaa2ef319b)) +* **deps:** update turbo monorepo to ^2.8.1 ([#4991](https://github.com/homarr-labs/homarr/issues/4991)) ([43b6246](https://github.com/homarr-labs/homarr/commit/43b6246876debccbe7239c8ee67753e17527e469)) + +## [1.52.0](https://github.com/homarr-labs/homarr/compare/v1.51.0...v1.52.0) (2026-01-30) + +### Features + +* **installations:** support docker secrets file for encryption key ([#4946](https://github.com/homarr-labs/homarr/issues/4946)) ([9ba8213](https://github.com/homarr-labs/homarr/commit/9ba82133da2ae472952358f84d8ee1758c0f108a)) + +### Bug Fixes + +* **deps:** update dependency @tanstack/react-query to ^5.90.20 ([#4939](https://github.com/homarr-labs/homarr/issues/4939)) ([840940b](https://github.com/homarr-labs/homarr/commit/840940bab663e728b8516ac48f913fef2b5c61b7)) +* **deps:** update dependency next to v16.1.5 [security] ([#4937](https://github.com/homarr-labs/homarr/issues/4937)) ([aeb1df1](https://github.com/homarr-labs/homarr/commit/aeb1df122926c7bed71bea9b21f1c42c45cc9b3e)) +* **deps:** update dependency pg to ^8.17.2 ([#4916](https://github.com/homarr-labs/homarr/issues/4916)) ([a50a29a](https://github.com/homarr-labs/homarr/commit/a50a29a778689efcca0afc2b640fdb497e6e7d98)) +* **deps:** update dependency prettier to ^3.8.1 ([#4925](https://github.com/homarr-labs/homarr/issues/4925)) ([a727b8e](https://github.com/homarr-labs/homarr/commit/a727b8e323b9fb7cba536909a51fabde0a992a69)) +* **deps:** update dependency sass to ^1.97.3 ([#4927](https://github.com/homarr-labs/homarr/issues/4927)) ([b1658a5](https://github.com/homarr-labs/homarr/commit/b1658a5d01b5c12f391af9d326ec98b3da000f9e)) +* **deps:** update dependency typescript-eslint to ^8.53.1 ([#4904](https://github.com/homarr-labs/homarr/issues/4904)) ([c58da00](https://github.com/homarr-labs/homarr/commit/c58da0095738352515d6d8c5e81b3c34c8726ffe)) +* **deps:** update mantine monorepo to ^8.3.13 ([#4911](https://github.com/homarr-labs/homarr/issues/4911)) ([f2eec74](https://github.com/homarr-labs/homarr/commit/f2eec748494480e773b45a309aa89ae3862e2b05)) +* **deps:** update nextjs monorepo to v16.1.4 ([#4909](https://github.com/homarr-labs/homarr/issues/4909)) ([99a2574](https://github.com/homarr-labs/homarr/commit/99a2574d80ad5a7dfe3b9c92d43bd4b9423bf22d)) +* **deps:** update tiptap monorepo to v3.16.0 ([#4912](https://github.com/homarr-labs/homarr/issues/4912)) ([2354510](https://github.com/homarr-labs/homarr/commit/23545101b61e456fd886eedb4b3d86b8cc606639)) +* **deps:** update tiptap monorepo to v3.17.0 ([#4940](https://github.com/homarr-labs/homarr/issues/4940)) ([d030261](https://github.com/homarr-labs/homarr/commit/d03026187cb6451d727167b02ac138f9c7ccc754)) +* **deps:** update tiptap monorepo to v3.17.1 ([#4945](https://github.com/homarr-labs/homarr/issues/4945)) ([b354085](https://github.com/homarr-labs/homarr/commit/b354085c7adfb6e5f3cad51b5b825426e072e874)) +* **deps:** update turbo monorepo to ^2.7.6 ([#4947](https://github.com/homarr-labs/homarr/issues/4947)) ([e078237](https://github.com/homarr-labs/homarr/commit/e078237e31d11029987c6c4370fd8f65023b87bc)) + ## [1.51.0](https://github.com/homarr-labs/homarr/compare/v1.50.1...v1.51.0) (2026-01-23) ### Features diff --git a/Dockerfile b/Dockerfile index e61de33f5..a36fbffdb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.13.0-alpine AS base +FROM node:24.14.0-alpine AS base FROM base AS builder RUN apk add --no-cache libc6-compat diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 1a8b22c0d..226ed0f59 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -48,22 +48,22 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0", - "@mantine/colors-generator": "^8.3.13", - "@mantine/core": "^8.3.13", - "@mantine/dropzone": "^8.3.13", - "@mantine/hooks": "^8.3.13", - "@mantine/modals": "^8.3.13", - "@mantine/tiptap": "^8.3.13", + "@mantine/colors-generator": "^8.3.16", + "@mantine/core": "^8.3.16", + "@mantine/dropzone": "^8.3.16", + "@mantine/hooks": "^8.3.16", + "@mantine/modals": "^8.3.16", + "@mantine/tiptap": "^8.3.16", "@million/lint": "1.0.14", - "@tabler/icons-react": "^3.36.1", "@tanstack/react-form": "^1.27.7", - "@tanstack/react-query": "^5.90.19", - "@tanstack/react-query-devtools": "^5.91.2", + "@tabler/icons-react": "^3.40.0", + "@tanstack/react-query": "^5.90.21", + "@tanstack/react-query-devtools": "^5.91.3", "@tanstack/react-query-next-experimental": "^5.91.0", - "@trpc/client": "^11.8.1", - "@trpc/next": "^11.8.1", - "@trpc/react-query": "^11.8.1", - "@trpc/server": "^11.8.1", + "@trpc/client": "^11.12.0", + "@trpc/next": "^11.12.0", + "@trpc/react-query": "^11.12.0", + "@trpc/server": "^11.12.0", "@xterm/addon-canvas": "^0.7.0", "@xterm/addon-fit": "0.11.0", "@xterm/xterm": "^6.0.0", @@ -71,22 +71,22 @@ "chroma-js": "^3.2.0", "clsx": "^2.1.1", "dayjs": "^1.11.19", - "dotenv": "^17.2.3", + "dotenv": "^17.3.1", "flag-icons": "^7.5.0", - "glob": "^13.0.0", - "isomorphic-dompurify": "^2.35.0", - "jotai": "^2.16.2", + "glob": "^13.0.6", + "isomorphic-dompurify": "^3.1.0", + "jotai": "^2.18.1", "mantine-react-table": "2.0.0-beta.9", - "next": "16.1.4", + "next": "16.1.6", "postcss-preset-mantine": "^1.18.0", "prismjs": "^1.30.0", - "react": "19.2.3", - "react-dom": "19.2.3", - "react-error-boundary": "^6.1.0", + "react": "19.2.4", + "react-dom": "19.2.4", + "react-error-boundary": "^6.1.1", "react-simple-code-editor": "^0.14.1", - "sass": "^1.97.2", + "sass": "^1.97.3", "superjson": "2.2.6", - "swagger-ui-react": "^5.31.0", + "swagger-ui-react": "^5.32.0", "use-deep-compare-effect": "^1.8.1", "zod": "^4.2.1" }, @@ -95,15 +95,15 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "3.1.2", - "@types/node": "^24.10.9", - "@types/prismjs": "^1.26.5", - "@types/react": "19.2.8", + "@types/node": "^24.12.0", + "@types/prismjs": "^1.26.6", + "@types/react": "19.2.14", "@types/react-dom": "19.2.3", "@types/swagger-ui-react": "^5.18.0", "concurrently": "^9.2.1", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "node-loader": "^2.1.0", - "prettier": "^3.8.0", + "prettier": "^3.8.1", "typescript": "^5.9.3" } } diff --git a/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx b/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx index 08e3e0c2d..3badc014e 100644 --- a/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx +++ b/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx @@ -1,6 +1,5 @@ "use client"; -import { startTransition } from "react"; import { Button, Card, Group, Stack, Switch, Text } from "@mantine/core"; import { IconArrowRight } from "@tabler/icons-react"; import type { z } from "zod/v4"; @@ -24,16 +23,6 @@ export const InitSettings = () => { }); const form = useZodForm(settingsInitSchema, { initialValues: defaultServerSettings }); - form.watch("analytics.enableGeneral", ({ value }) => { - if (!value) { - startTransition(() => { - form.setFieldValue("analytics.enableWidgetData", false); - form.setFieldValue("analytics.enableIntegrationData", false); - form.setFieldValue("analytics.enableUserData", false); - }); - } - }); - const handleSubmitAsync = async (values: z.infer) => { await mutateAsync(values); }; @@ -47,24 +36,6 @@ export const InitSettings = () => { - - - - - - diff --git a/apps/nextjs/src/app/[locale]/manage/settings/_components/analytics.settings.tsx b/apps/nextjs/src/app/[locale]/manage/settings/_components/analytics.settings.tsx index 21215e6d0..568ab93a7 100644 --- a/apps/nextjs/src/app/[locale]/manage/settings/_components/analytics.settings.tsx +++ b/apps/nextjs/src/app/[locale]/manage/settings/_components/analytics.settings.tsx @@ -24,15 +24,6 @@ export const AnalyticsSettings = ({ initialData }: AnalyticsSettingsProps) => { return; } - if ( - !updatedValues.enableGeneral && - (updatedValues.enableWidgetData || updatedValues.enableIntegrationData || updatedValues.enableUserData) - ) { - updatedValues.enableIntegrationData = false; - updatedValues.enableUserData = false; - updatedValues.enableWidgetData = false; - } - void mutateAsync({ settingsKey: "analytics", value: updatedValues, @@ -54,30 +45,6 @@ export const AnalyticsSettings = ({ initialData }: AnalyticsSettingsProps) => { - - - diff --git a/apps/nextjs/src/app/[locale]/manage/tools/tasks/_components/tasks-table.tsx b/apps/nextjs/src/app/[locale]/manage/tools/tasks/_components/tasks-table.tsx index ceb27aa81..273f1e9ec 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/tasks/_components/tasks-table.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/tasks/_components/tasks-table.tsx @@ -117,6 +117,8 @@ const createColumns = ( header: tTasks("field.interval.label"), size: 200, Cell({ row }) { + if (row.original.preventCustomInterval) return null; + const handleIntervalChange = (newCron: string | null) => { if (!newCron || newCron === row.original.cron) return; diff --git a/apps/nextjs/src/components/board/items/item-menu.tsx b/apps/nextjs/src/components/board/items/item-menu.tsx index 2279755bf..a7d870a28 100644 --- a/apps/nextjs/src/components/board/items/item-menu.tsx +++ b/apps/nextjs/src/components/board/items/item-menu.tsx @@ -3,6 +3,7 @@ import { ActionIcon, Menu } from "@mantine/core"; import { IconCopy, IconDotsVertical, IconLayoutKanban, IconPencil, IconTrash } from "@tabler/icons-react"; import { clientApi } from "@homarr/api/client"; +import { useSession } from "@homarr/auth/client"; import { useEditMode } from "@homarr/boards/edit-mode"; import { useConfirmModal, useModalAction } from "@homarr/modals"; import { useSettings } from "@homarr/settings"; @@ -15,15 +16,20 @@ import { useSectionContext } from "../sections/section-context"; import { useItemActions } from "./item-actions"; import { ItemMoveModal } from "./item-move-modal"; -export const BoardItemMenu = ({ - offset, - item, - resetErrorBoundary, -}: { +interface BoardItemMenuProps { offset: number; item: SectionItem; resetErrorBoundary?: () => void; -}) => { +} + +export const BoardItemMenu = (props: BoardItemMenuProps) => { + const { data: session } = useSession(); + if (!session) return null; + + return ; +}; + +const BoardItemMenuInner = ({ offset, item, resetErrorBoundary }: BoardItemMenuProps) => { const refResetErrorBoundaryOnNextRender = useRef(false); const tItem = useScopedI18n("item"); const t = useI18n(); diff --git a/apps/nextjs/src/components/board/items/item-select-modal.tsx b/apps/nextjs/src/components/board/items/item-select-modal.tsx index a2fce1264..5066f5539 100644 --- a/apps/nextjs/src/components/board/items/item-select-modal.tsx +++ b/apps/nextjs/src/components/board/items/item-select-modal.tsx @@ -1,9 +1,10 @@ import { useMemo, useState } from "react"; -import { Button, Card, Center, Grid, Input, Stack, Text } from "@mantine/core"; +import { Avatar, Button, Card, Center, Grid, Group, Input, Stack, Text, Tooltip } from "@mantine/core"; import { IconSearch } from "@tabler/icons-react"; import { objectEntries } from "@homarr/common"; -import type { WidgetKind } from "@homarr/definitions"; +import { getIconUrl, getIntegrationName } from "@homarr/definitions"; +import type { IntegrationKind, WidgetKind } from "@homarr/definitions"; import { createModal } from "@homarr/modals"; import { useI18n } from "@homarr/translation/client"; import type { TablerIcon } from "@homarr/ui"; @@ -21,6 +22,10 @@ export const ItemSelectModal = createModal(({ actions }) => { objectEntries(widgetImports) .map(([kind, value]) => ({ kind, + supportedIntegrations: + "supportedIntegrations" in value.definition + ? value.definition.supportedIntegrations.filter((integration) => integration !== "mock") + : [], icon: value.definition.icon, name: t(`widget.${kind}.name`), description: t(`widget.${kind}.description`), @@ -74,6 +79,7 @@ const WidgetItem = ({ }: { item: { kind: WidgetKind; + supportedIntegrations: IntegrationKind[]; name: string; description: string; icon: TablerIcon; @@ -97,7 +103,8 @@ const WidgetItem = ({ {item.description} - @@ -105,3 +112,48 @@ const WidgetItem = ({ ); }; + +interface SupportedIntegrationsProps { + integrations: IntegrationKind[]; + mt: string; +} + +const SupportedIntegrations = ({ integrations, mt }: SupportedIntegrationsProps) => { + if (integrations.length === 0) { + return null; + } + + // When there are 8 or more integrations, we show 6 and a "+X" avatar. Otherwise, we show all integrations. + const countToShow = integrations.length >= 8 ? 6 : 7; + const moreCount = integrations.length - countToShow; + + return ( +
+ + + {integrations.slice(0, countToShow).map((integration) => ( + + + + ))} + {moreCount > 0 && ( + + {integrations.slice(countToShow).map((integration) => ( +
{getIntegrationName(integration)}
+ ))} + + } + > + + +{moreCount} + +
+ )} +
+
+
+ ); +}; 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 8f6009494..1d7d24e24 100644 --- a/apps/nextjs/src/components/board/sections/category/category-actions.ts +++ b/apps/nextjs/src/components/board/sections/category/category-actions.ts @@ -58,6 +58,7 @@ export const useCategoryActions = () => { ...section, yOffset: section.yOffset + 2, })), + ...previous.sections.filter((section) => section.kind !== "category" && section.kind !== "empty"), ] satisfies Section[], })); }, diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 8dfb021f9..d877bfaee 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -38,8 +38,8 @@ "@homarr/validation": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0", "dayjs": "^1.11.19", - "dotenv": "^17.2.3", - "fastify": "^5.7.1", + "dotenv": "^17.3.1", + "fastify": "^5.8.2", "superjson": "2.2.6", "undici": "7.18.2" }, @@ -47,11 +47,11 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/node": "^24.10.9", + "@types/node": "^24.12.0", "dotenv-cli": "^11.0.0", - "esbuild": "^0.27.2", - "eslint": "^9.39.2", - "prettier": "^3.8.0", + "esbuild": "^0.27.3", + "eslint": "^9.39.4", + "prettier": "^3.8.1", "tsx": "4.20.4", "typescript": "^5.9.3" } diff --git a/apps/tasks/src/job-manager.ts b/apps/tasks/src/job-manager.ts index 9e23c7d36..f4ec8bf97 100644 --- a/apps/tasks/src/job-manager.ts +++ b/apps/tasks/src/job-manager.ts @@ -31,6 +31,10 @@ export class JobManager implements IJobManager { if (!validateCron(cron)) { throw new Error(`Invalid cron expression: ${cron}`); } + if (job.preventCustomInterval && cron !== job.cronExpression) { + throw new Error(`Custom cron expressions are not allowed for job ${name}`); + } + await this.updateConfigurationAsync(name, { cronExpression: cron }); await this.jobGroup.getTask(name)?.destroy(); @@ -100,7 +104,13 @@ export class JobManager implements IJobManager { } public async getAllAsync(): Promise< - { name: JobGroupKeys; cron: string; preventManualExecution: boolean; isEnabled: boolean }[] + { + name: JobGroupKeys; + cron: string; + preventManualExecution: boolean; + preventCustomInterval: boolean; + isEnabled: boolean; + }[] > { const configurations = await this.db.query.cronJobConfigurations.findMany(); @@ -110,6 +120,7 @@ export class JobManager implements IJobManager { name, cron: config?.cronExpression ?? job.cronExpression, preventManualExecution: job.preventManualExecution, + preventCustomInterval: job.preventCustomInterval, isEnabled: config?.isEnabled ?? true, }; }); diff --git a/apps/websocket/package.json b/apps/websocket/package.json index b5f789121..71d02bfd3 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -25,7 +25,7 @@ "@homarr/definitions": "workspace:^0.1.0", "@homarr/redis": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "dotenv": "^17.2.3", + "dotenv": "^17.3.1", "tsx": "4.20.4", "ws": "^8.19.0" }, @@ -34,9 +34,9 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/ws": "^8.18.1", - "esbuild": "^0.27.2", - "eslint": "^9.39.2", - "prettier": "^3.8.0", + "esbuild": "^0.27.3", + "eslint": "^9.39.4", + "prettier": "^3.8.1", "typescript": "^5.9.3" } } diff --git a/deployments/prebuilt-debian/Dockerfile b/deployments/prebuilt-debian/Dockerfile index 3a52059e5..ced8d7bdf 100644 --- a/deployments/prebuilt-debian/Dockerfile +++ b/deployments/prebuilt-debian/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.13.0-trixie AS base +FROM node:24.14.0-trixie AS base WORKDIR /app COPY package.json . COPY pnpm-lock.yaml . diff --git a/deployments/prebuilt-debian/package.json b/deployments/prebuilt-debian/package.json index c03fbf7d8..a774856f4 100644 --- a/deployments/prebuilt-debian/package.json +++ b/deployments/prebuilt-debian/package.json @@ -4,10 +4,10 @@ "dependencies": { "better-sqlite3": "^12.6.2" }, - "packageManager": "pnpm@10.28.1", + "packageManager": "pnpm@10.32.0", "engines": { - "node": ">=24.13.0", - "pnpm": ">=10.28.1" + "node": ">=24.14.0", + "pnpm": ">=10.32.0" }, "pnpm": { "onlyBuiltDependencies": [ diff --git a/docs/README.md b/docs/README.md index 5ae970f63..f159c8765 100644 --- a/docs/README.md +++ b/docs/README.md @@ -134,6 +134,13 @@ + + Glances +
+

Glances

+
+ + Home Assistant
@@ -146,6 +153,13 @@

iCal

+ + + + Immich +
+

Immich

+
@@ -153,8 +167,8 @@

Jellyfin

- - + + Jellyseerr
@@ -188,8 +202,8 @@

NPM

- - + + ntfy
@@ -202,8 +216,8 @@

NZBGet

- - + + OpenMediaVault
@@ -237,8 +251,8 @@

Plex

- - + + Prowlarr
@@ -251,8 +265,8 @@

Proxmox

- - + + qBittorrent
@@ -286,6 +300,20 @@

SABnzbd

+ + + + Seerr +
+

Seerr

+
+ + + + Slskd +
+

Slskd

+
@@ -300,8 +328,15 @@

Tdarr

- - + + + + Tracearr +
+

Tracearr

+
+ + Transmission
@@ -314,8 +349,8 @@

TrueNAS

- - + + Unifi Controller
diff --git a/e2e/health-checks.spec.ts b/e2e/health-checks.spec.ts index 03d175525..b280fcc56 100644 --- a/e2e/health-checks.spec.ts +++ b/e2e/health-checks.spec.ts @@ -15,7 +15,7 @@ describe("Health checks", () => { // Assert expect(readyResponse.status).toBe(200); expect(liveResponse.status).toBe(200); - }, 20_000); + }, 60_000); test("ready and live should return 200 OK with external redis", async () => { // Arrange @@ -42,5 +42,5 @@ describe("Health checks", () => { liveResponse.status, `Expected live to return OK statusCode=${liveResponse.status} content=${await liveResponse.text()}`, ).toBe(200); - }, 20_000); + }, 60_000); }); diff --git a/e2e/home.spec.ts b/e2e/home.spec.ts index e8550a3eb..2d79d7247 100644 --- a/e2e/home.spec.ts +++ b/e2e/home.spec.ts @@ -12,5 +12,5 @@ describe("Home", () => { // Assert expect(homeResponse.status).toBe(200); - }, 20_000); + }, 60_000); }); diff --git a/e2e/shared/create-homarr-container.ts b/e2e/shared/create-homarr-container.ts index 7e5bcd5c4..e69562593 100644 --- a/e2e/shared/create-homarr-container.ts +++ b/e2e/shared/create-homarr-container.ts @@ -18,6 +18,11 @@ export const createHomarrContainer = ( .withExposedPorts(7575) .withEnvironment({ ...options.environment, + // We disable external connections due to the following reasons: + // - No icons have to be downloaded (11k) + // - No analytics data is sent + // - It is just faster and makes the tests more reliable (better performance) + NO_EXTERNAL_CONNECTION: true.toString(), SECRET_ENCRYPTION_KEY: "0".repeat(64), }) .withBindMounts( diff --git a/package.json b/package.json index b803d595c..985836d8b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "1.51.0", + "version": "1.56.0", "private": true, "scripts": { "build": "cross-env CI=true turbo build", @@ -39,30 +39,30 @@ "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^13.0.1", "@semantic-release/git": "^10.0.1", - "@semantic-release/github": "^12.0.2", - "@semantic-release/npm": "^13.1.3", + "@semantic-release/github": "^12.0.6", + "@semantic-release/npm": "^13.1.5", "@semantic-release/release-notes-generator": "^14.1.0", - "@testcontainers/redis": "^11.11.0", - "@turbo/gen": "^2.7.5", - "@vitejs/plugin-react": "^5.1.2", - "@vitest/coverage-v8": "^4.0.17", - "@vitest/ui": "^4.0.17", - "conventional-changelog-conventionalcommits": "^9.1.0", + "@testcontainers/redis": "^11.12.0", + "@turbo/gen": "^2.8.15", + "@vitejs/plugin-react": "^5.1.4", + "@vitest/coverage-v8": "^4.0.18", + "@vitest/ui": "^4.0.18", + "conventional-changelog-conventionalcommits": "^9.3.0", "cross-env": "^10.1.0", - "jsdom": "^27.4.0", + "jsdom": "^28.1.0", "json5": "^2.2.3", - "prettier": "^3.8.0", - "semantic-release": "^25.0.2", - "testcontainers": "^11.11.0", - "turbo": "^2.7.5", + "prettier": "^3.8.1", + "semantic-release": "^25.0.3", + "testcontainers": "^11.12.0", + "turbo": "^2.8.15", "typescript": "^5.9.3", - "vite-tsconfig-paths": "^6.0.4", - "vitest": "^4.0.17" + "vite-tsconfig-paths": "^6.1.1", + "vitest": "^4.0.18" }, - "packageManager": "pnpm@10.28.1", + "packageManager": "pnpm@10.32.0", "engines": { - "node": ">=24.13.0", - "pnpm": ">=10.28.1" + "node": ">=24.14.0", + "pnpm": ">=10.32.0" }, "pnpm": { "onlyBuiltDependencies": [ @@ -79,21 +79,21 @@ "overrides": { "@babel/helpers@<7.26.10": ">=7.28.6", "@babel/runtime@<7.26.10": ">=7.28.6", - "axios@>=1.0.0 <1.8.2": ">=1.13.2", - "brace-expansion@>=2.0.0 <=2.0.1": ">=4.0.1", - "brace-expansion@>=1.0.0 <=1.1.11": ">=4.0.1", - "esbuild@<=0.24.2": ">=0.27.2", + "axios@>=1.0.0 <1.8.2": ">=1.13.6", + "brace-expansion@>=2.0.0 <=2.0.1": ">=5.0.4", + "brace-expansion@>=1.0.0 <=1.1.11": ">=5.0.4", + "esbuild@<=0.24.2": ">=0.27.3", "form-data@>=4.0.0 <4.0.4": ">=4.0.5", - "hono@<4.6.5": ">=4.11.4", + "hono@<4.6.5": ">=4.12.7", "linkifyjs@<4.3.2": ">=4.3.2", "nanoid@>=4.0.0 <5.0.9": ">=5.1.6", "prismjs@<1.30.0": ">=1.30.0", - "proxmox-api>undici": "7.18.2", - "react-is": "^19.2.3", - "rollup@>=4.0.0 <4.22.4": ">=4.55.2", + "proxmox-api>undici": "7.19.2", + "react-is": "^19.2.4", + "rollup@>=4.0.0 <4.22.4": ">=4.59.0", "sha.js@<=2.4.11": ">=2.4.12", - "tar-fs@>=3.0.0 <3.0.9": ">=3.1.1", - "tar-fs@>=2.0.0 <2.1.3": ">=3.1.1", + "tar-fs@>=3.0.0 <3.0.9": ">=3.1.2", + "tar-fs@>=2.0.0 <2.1.3": ">=3.1.2", "tmp@<=0.2.3": ">=0.2.5", "vite@>=5.0.0 <=5.4.18": ">=7.3.1" }, diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 18324242c..102249620 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -22,8 +22,11 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { + "@homarr/auth": "workspace:^0.1.0", + "@homarr/common": "workspace:^0.1.0", "@homarr/core": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0", + "@homarr/docker": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", "@umami/node": "^0.4.0", "superjson": "2.2.6" @@ -32,7 +35,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/analytics/src/send-server-analytics.ts b/packages/analytics/src/send-server-analytics.ts index 27f1ae3d8..2557e3ca6 100644 --- a/packages/analytics/src/send-server-analytics.ts +++ b/packages/analytics/src/send-server-analytics.ts @@ -1,17 +1,52 @@ import type { UmamiEventData } from "@umami/node"; import { Umami } from "@umami/node"; +import { isProviderEnabled } from "@homarr/auth/server"; +import { Stopwatch } from "@homarr/common"; import { createLogger } from "@homarr/core/infrastructure/logs"; import { count, db } from "@homarr/db"; +import { isMysql, isPostgresql } from "@homarr/db/collection"; import { getServerSettingByKeyAsync } from "@homarr/db/queries"; -import { integrations, items, users } from "@homarr/db/schema"; -import type { defaultServerSettings } from "@homarr/server-settings"; +import { + apiKeys, + apps, + boards, + cronJobConfigurations, + groups, + iconRepositories, + icons, + integrations, + invites, + itemLayouts, + items, + layouts, + medias, + searchEngines, + sectionLayouts, + sections, + users, +} from "@homarr/db/schema"; +import { env as dockerEnv } from "@homarr/docker/env"; -import { Stopwatch } from "../../common/src"; +import packageJson from "../../../package.json"; import { UMAMI_HOST_URL, UMAMI_WEBSITE_ID } from "./constants"; const logger = createLogger({ module: "analytics" }); +const getDatabaseType = (): "mysql" | "postgresql" | "sqlite" => { + if (isMysql()) return "mysql"; + if (isPostgresql()) return "postgresql"; + return "sqlite"; +}; + +const getEnabledAuthProviders = (): string[] => { + const providers: string[] = []; + if (isProviderEnabled("credentials")) providers.push("credentials"); + if (isProviderEnabled("oidc")) providers.push("oidc"); + if (isProviderEnabled("ldap")) providers.push("ldap"); + return providers; +}; + export const sendServerAnalyticsAsync = async () => { const stopWatch = new Stopwatch(); const analyticsSettings = await getServerSettingByKeyAsync(db, "analytics"); @@ -27,67 +62,48 @@ export const sendServerAnalyticsAsync = async () => { websiteId: UMAMI_WEBSITE_ID, }); - await sendIntegrationDataAsync(umamiInstance, analyticsSettings); - await sendWidgetDataAsync(umamiInstance, analyticsSettings); - await sendUserDataAsync(umamiInstance, analyticsSettings); + const enabledAuthProviders = getEnabledAuthProviders(); - logger.info(`Sent all analytics in ${stopWatch.getElapsedInHumanWords()}`); -}; + const analyticsData: UmamiEventData = { + homarrVersion: packageJson.version, + databaseType: getDatabaseType(), + dockerEnabled: dockerEnv.ENABLE_DOCKER ? 1 : 0, + kubernetesEnabled: dockerEnv.ENABLE_KUBERNETES ? 1 : 0, + authCredentials: enabledAuthProviders.includes("credentials") ? 1 : 0, + authOidc: enabledAuthProviders.includes("oidc") ? 1 : 0, + authLdap: enabledAuthProviders.includes("ldap") ? 1 : 0, + countUsers: await db.$count(users), + countBoards: await db.$count(boards), + countGroups: await db.$count(groups), + countApps: await db.$count(apps), + countWidgets: await db.$count(items), + countSections: await db.$count(sections), + countIntegrations: await db.$count(integrations), + countSearchEngines: await db.$count(searchEngines), + countIconRepositories: await db.$count(iconRepositories), + countIcons: await db.$count(icons), + countApiKeys: await db.$count(apiKeys), + countInvites: await db.$count(invites), + countMedias: await db.$count(medias), + countLayouts: await db.$count(layouts), + countItemLayouts: await db.$count(itemLayouts), + countSectionLayouts: await db.$count(sectionLayouts), + countCronJobConfigs: await db.$count(cronJobConfigurations), + }; -const sendWidgetDataAsync = async (umamiInstance: Umami, analyticsSettings: typeof defaultServerSettings.analytics) => { - if (!analyticsSettings.enableWidgetData) { - return; - } - const widgetCount = await db.$count(items); - - const response = await umamiInstance.track("server-widget-data", { - countWidgets: widgetCount, - }); - if (response.ok) { - return; - } - - logger.warn("Unable to send track event data to Umami instance"); -}; - -const sendUserDataAsync = async (umamiInstance: Umami, analyticsSettings: typeof defaultServerSettings.analytics) => { - if (!analyticsSettings.enableUserData) { - return; - } - const userCount = await db.$count(users); - - const response = await umamiInstance.track("server-user-data", { - countUsers: userCount, - }); - if (response.ok) { - return; - } - - logger.warn("Unable to send track event data to Umami instance"); -}; - -const sendIntegrationDataAsync = async ( - umamiInstance: Umami, - analyticsSettings: typeof defaultServerSettings.analytics, -) => { - if (!analyticsSettings.enableIntegrationData) { - return; - } const integrationKinds = await db .select({ kind: integrations.kind, count: count(integrations.id) }) .from(integrations) .groupBy(integrations.kind); - const map: UmamiEventData = {}; - integrationKinds.forEach((integrationKind) => { - map[integrationKind.kind] = integrationKind.count; + analyticsData[`integration_${integrationKind.kind}`] = integrationKind.count; }); - const response = await umamiInstance.track("server-integration-data-kind", map); - if (response.ok) { - return; + const response = await umamiInstance.track("server-analytics-v2", analyticsData); + if (!response.ok) { + logger.warn("Unable to send analytics to Umami instance"); } - logger.warn("Unable to send track event data to Umami instance"); + logger.info(`Sent analytics in ${stopWatch.getElapsedInHumanWords()}`); }; diff --git a/packages/api/package.json b/packages/api/package.json index 5ddbcbcca..41b8980d6 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -41,15 +41,15 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@kubernetes/client-node": "^1.4.0", - "@tanstack/react-query": "^5.90.19", - "@trpc/client": "^11.8.1", - "@trpc/react-query": "^11.8.1", - "@trpc/server": "^11.8.1", - "@trpc/tanstack-react-query": "^11.8.1", + "@tanstack/react-query": "^5.90.21", + "@trpc/client": "^11.12.0", + "@trpc/react-query": "^11.12.0", + "@trpc/server": "^11.12.0", + "@trpc/tanstack-react-query": "^11.12.0", "lodash.clonedeep": "^4.5.0", - "next": "16.1.4", - "react": "19.2.3", - "react-dom": "19.2.3", + "next": "16.1.6", + "react": "19.2.4", + "react-dom": "19.2.4", "superjson": "2.2.6", "trpc-to-openapi": "^3.1.0", "zod": "^4.2.1" @@ -58,8 +58,8 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", - "prettier": "^3.8.0", + "eslint": "^9.39.4", + "prettier": "^3.8.1", "typescript": "^5.9.3" } } diff --git a/packages/api/src/router/app.ts b/packages/api/src/router/app.ts index 32c607951..2f2445330 100644 --- a/packages/api/src/router/app.ts +++ b/packages/api/src/router/app.ts @@ -1,7 +1,9 @@ import { TRPCError } from "@trpc/server"; import { z } from "zod/v4"; +import type { Session } from "@homarr/auth"; import { createId } from "@homarr/common"; +import type { Database, InferSelectModel } from "@homarr/db"; import { asc, eq, inArray, like } from "@homarr/db"; import { apps } from "@homarr/db/schema"; import { selectAppSchema } from "@homarr/db/validationSchemas"; @@ -11,7 +13,7 @@ import { byIdSchema, paginatedSchema } from "@homarr/validation/common"; import { convertIntersectionToZodObject } from "../schema-merger"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../trpc"; -import { canUserSeeAppAsync } from "./app/app-access-control"; +import { AppAccessControl } from "./app/app-access-control"; const defaultIcon = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/homarr.svg"; @@ -89,9 +91,8 @@ export const appRouter = createTRPCRouter({ .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({ - where: eq(apps.id, input.id), - }); + const repository = new AppRepository(ctx.db, ctx.session?.user ?? null); + const app = await repository.getByIdAsync(input.id); if (!app) { throw new TRPCError({ @@ -100,20 +101,11 @@ export const appRouter = createTRPCRouter({ }); } - const canUserSeeApp = await canUserSeeAppAsync(ctx.session?.user ?? null, app.id); - if (!canUserSeeApp) { - throw new TRPCError({ - code: "NOT_FOUND", - message: "App not found", - }); - } - return app; }), byIds: publicProcedure.input(z.array(z.string())).query(async ({ ctx, input }) => { - return await ctx.db.query.apps.findMany({ - where: inArray(apps.id, input), - }); + const repository = new AppRepository(ctx.db, ctx.session?.user ?? null); + return await repository.getByIdsAsync(input); }), create: permissionRequiredProcedure .requiresPermission("app-create") @@ -187,3 +179,30 @@ export const appRouter = createTRPCRouter({ await ctx.db.delete(apps).where(eq(apps.id, input.id)); }), }); + +type App = InferSelectModel; + +export class AppRepository { + private readonly accessControl: AppAccessControl; + + constructor( + private db: Database, + user: Session["user"] | null, + ) { + this.accessControl = new AppAccessControl(db, user); + } + + public async getByIdAsync(id: string): Promise { + const apps = await this.getByIdsAsync([id]); + return apps[0] ?? null; + } + + public async getByIdsAsync(ids: string[]): Promise { + const canUserSeeApps = await this.accessControl.canUserSeeAppsAsync(ids); + const dbApps = await this.db.query.apps.findMany({ + where: inArray(apps.id, ids), + }); + + return canUserSeeApps ? dbApps : []; + } +} diff --git a/packages/api/src/router/app/app-access-control.ts b/packages/api/src/router/app/app-access-control.ts index 0f5a0a478..10ee934cc 100644 --- a/packages/api/src/router/app/app-access-control.ts +++ b/packages/api/src/router/app/app-access-control.ts @@ -1,45 +1,52 @@ import SuperJSON from "superjson"; import type { Session } from "@homarr/auth"; -import { db, eq, or } from "@homarr/db"; +import type { Database } from "@homarr/db"; +import { eq, or } from "@homarr/db"; import { items } from "@homarr/db/schema"; import type { WidgetComponentProps } from "../../../../widgets/src"; -export const canUserSeeAppAsync = async (user: Session["user"] | null, appId: string) => { - return await canUserSeeAppsAsync(user, [appId]); -}; +export class AppAccessControl { + constructor( + private db: Database, + private user: Session["user"] | null, + ) {} -export const canUserSeeAppsAsync = async (user: Session["user"] | null, appIds: string[]) => { - if (user) return true; + async canUserSeeAppAsync(appId: string) { + return await this.canUserSeeAppsAsync([appId]); + } - const appIdsOnPublicBoards = await getAllAppIdsOnPublicBoardsAsync(); - return appIds.every((appId) => appIdsOnPublicBoards.includes(appId)); -}; + async canUserSeeAppsAsync(appIds: string[]) { + // Currently any user can see all apps if they are logged in + if (this.user) return true; -const getAllAppIdsOnPublicBoardsAsync = async () => { - const itemsWithApps = await db.query.items.findMany({ - where: or(eq(items.kind, "app"), eq(items.kind, "bookmarks")), - with: { - board: { - columns: { - isPublic: true, + const appIdsOnPublicBoards = await this.getAllAppIdsOnPublicBoardsAsync(); + return appIds.every((appId) => appIdsOnPublicBoards.includes(appId)); + } + + private async getAllAppIdsOnPublicBoardsAsync() { + const itemsWithApps = await this.db.query.items.findMany({ + where: or(eq(items.kind, "app"), eq(items.kind, "bookmarks")), + with: { + board: { + columns: { + isPublic: true, + }, }, }, - }, - }); + }); + + return itemsWithApps + .filter((item) => item.board.isPublic) + .flatMap((item) => { + if (item.kind === "app") { + const parsedOptions = SuperJSON.parse["options"]>(item.options); + return [parsedOptions.appId]; + } - return itemsWithApps - .filter((item) => item.board.isPublic) - .flatMap((item) => { - if (item.kind === "app") { - const parsedOptions = SuperJSON.parse["options"]>(item.options); - return [parsedOptions.appId]; - } else if (item.kind === "bookmarks") { const parsedOptions = SuperJSON.parse["options"]>(item.options); return parsedOptions.items; - } - - throw new Error("Failed to get app ids from board. Invalid item kind: 'test'"); - }); -}; + }); + } +} diff --git a/packages/api/src/router/board.ts b/packages/api/src/router/board.ts index bbb7c0c66..495d410c7 100644 --- a/packages/api/src/router/board.ts +++ b/packages/api/src/router/board.ts @@ -442,7 +442,7 @@ export const boardRouter = createTRPCRouter({ await handleTransactionsAsync(ctx.db, { async handleAsync(db, schema) { await db.transaction(async (transaction) => { - transaction.insert(schema.boards).values({ + await transaction.insert(schema.boards).values({ ...boardProps, id: newBoardId, name: input.name, diff --git a/packages/api/src/router/integration/integration-router.ts b/packages/api/src/router/integration/integration-router.ts index 77a98515b..5591b74ed 100644 --- a/packages/api/src/router/integration/integration-router.ts +++ b/packages/api/src/router/integration/integration-router.ts @@ -43,15 +43,15 @@ import { mapTestConnectionError } from "./map-test-connection-error"; const logger = createLogger({ module: "integrationRouter" }); export const integrationRouter = createTRPCRouter({ - all: publicProcedure.query(async ({ ctx }) => { + all: protectedProcedure.query(async ({ ctx }) => { const groupsOfCurrentUser = await ctx.db.query.groupMembers.findMany({ - where: eq(groupMembers.userId, ctx.session?.user.id ?? ""), + where: eq(groupMembers.userId, ctx.session.user.id), }); const integrations = await ctx.db.query.integrations.findMany({ with: { userPermissions: { - where: eq(integrationUserPermissions.userId, ctx.session?.user.id ?? ""), + where: eq(integrationUserPermissions.userId, ctx.session.user.id), }, groupPermissions: { where: inArray( @@ -85,15 +85,15 @@ export const integrationRouter = createTRPCRouter({ integrationKinds.indexOf(integrationA.kind) - integrationKinds.indexOf(integrationB.kind), ); }), - allThatSupportSearch: publicProcedure.query(async ({ ctx }) => { + allThatSupportSearch: protectedProcedure.query(async ({ ctx }) => { const groupsOfCurrentUser = await ctx.db.query.groupMembers.findMany({ - where: eq(groupMembers.userId, ctx.session?.user.id ?? ""), + where: eq(groupMembers.userId, ctx.session.user.id), }); const integrationsFromDb = await ctx.db.query.integrations.findMany({ with: { userPermissions: { - where: eq(integrationUserPermissions.userId, ctx.session?.user.id ?? ""), + where: eq(integrationUserPermissions.userId, ctx.session.user.id), }, groupPermissions: { where: inArray( @@ -133,7 +133,7 @@ export const integrationRouter = createTRPCRouter({ integrationKinds.indexOf(integrationA.kind) - integrationKinds.indexOf(integrationB.kind), ); }), - allOfGivenCategory: publicProcedure + allOfGivenCategory: protectedProcedure .input( z.object({ category: z.enum(integrationCategories), @@ -141,7 +141,7 @@ export const integrationRouter = createTRPCRouter({ ) .query(async ({ ctx, input }) => { const groupsOfCurrentUser = await ctx.db.query.groupMembers.findMany({ - where: eq(groupMembers.userId, ctx.session?.user.id ?? ""), + where: eq(groupMembers.userId, ctx.session.user.id), }); const intergrationKinds = getIntegrationKindsByCategory(input.category); @@ -149,7 +149,7 @@ export const integrationRouter = createTRPCRouter({ const integrationsFromDb = await ctx.db.query.integrations.findMany({ with: { userPermissions: { - where: eq(integrationUserPermissions.userId, ctx.session?.user.id ?? ""), + where: eq(integrationUserPermissions.userId, ctx.session.user.id), }, groupPermissions: { where: inArray( diff --git a/packages/api/src/router/test/app.spec.ts b/packages/api/src/router/test/app.spec.ts index f8877a403..3002ef1a9 100644 --- a/packages/api/src/router/test/app.spec.ts +++ b/packages/api/src/router/test/app.spec.ts @@ -13,6 +13,14 @@ import * as appAccessControl from "../app/app-access-control"; // Mock the auth module to return an empty session vi.mock("@homarr/auth", () => ({ auth: () => ({}) as Session })); +const createFakeAccessControl = (canAccess: boolean) => + vi.fn( + class { + canUserSeeAppAsync = async (_: string) => await Promise.resolve(canAccess); + canUserSeeAppsAsync = async (_: string[]) => await Promise.resolve(canAccess); + } as unknown as typeof appAccessControl.AppAccessControl, + ); + const createDefaultSession = (permissions: GroupPermissionKey[] = []): Session => ({ user: { id: createId(), permissions, colorScheme: "light" }, expires: new Date().toISOString(), @@ -77,7 +85,7 @@ describe("byId should return an app by id", () => { deviceType: undefined, session: null, }); - vi.spyOn(appAccessControl, "canUserSeeAppAsync").mockReturnValue(Promise.resolve(true)); + vi.spyOn(appAccessControl, "AppAccessControl").mockImplementation(createFakeAccessControl(true)); await db.insert(apps).values([ { @@ -118,7 +126,7 @@ describe("byId should return an app by id", () => { href: "https://mantine.dev", }, ]); - vi.spyOn(appAccessControl, "canUserSeeAppAsync").mockReturnValue(Promise.resolve(false)); + vi.spyOn(appAccessControl, "AppAccessControl").mockImplementation(createFakeAccessControl(false)); // Act const actAsync = async () => await caller.byId({ id: "2" }); diff --git a/packages/api/src/router/test/widgets/app.spec.ts b/packages/api/src/router/test/widgets/app.spec.ts index bd5265ff6..0a14c7c96 100644 --- a/packages/api/src/router/test/widgets/app.spec.ts +++ b/packages/api/src/router/test/widgets/app.spec.ts @@ -1,6 +1,9 @@ import { describe, expect, test, vi } from "vitest"; import type { Session } from "@homarr/auth"; +import { createId } from "@homarr/common"; +import type { InferInsertModel } from "@homarr/db"; +import { apps } from "@homarr/db/schema"; import { createDb } from "@homarr/db/test"; import * as ping from "@homarr/ping"; @@ -9,22 +12,31 @@ import { appRouter } from "../../widgets/app"; // Mock the auth module to return an empty session vi.mock("@homarr/auth", () => ({ auth: () => ({}) as Session })); vi.mock("@homarr/ping", () => ({ sendPingRequestAsync: async () => await Promise.resolve(null) })); +vi.mock("../../app/app-access-control", () => ({ + AppAccessControl: vi.fn( + class { + canUserSeeAppAsync = async (_: string) => await Promise.resolve(true); + canUserSeeAppsAsync = async (_: string[]) => await Promise.resolve(true); + }, + ), +})); describe("ping should call sendPingRequestAsync with url and return result", () => { test("ping with error response should return error and url", async () => { // Arrange - const spy = vi.spyOn(ping, "sendPingRequestAsync"); + vi.spyOn(ping, "sendPingRequestAsync").mockImplementation(() => Promise.resolve({ error: "error" })); const url = "http://localhost"; const db = createDb(); + const app = createApp({ url }); + await db.insert(apps).values(app); const caller = appRouter.createCaller({ db, deviceType: undefined, session: null, }); - spy.mockImplementation(() => Promise.resolve({ error: "error" })); // Act - const result = await caller.ping({ url }); + const result = await caller.ping({ id: app.id }); // Assert expect(result.url).toBe(url); @@ -33,21 +45,32 @@ describe("ping should call sendPingRequestAsync with url and return result", () test("ping with success response should return statusCode and url", async () => { // Arrange - const spy = vi.spyOn(ping, "sendPingRequestAsync"); + vi.spyOn(ping, "sendPingRequestAsync").mockImplementation(() => + Promise.resolve({ statusCode: 200, durationMs: 123 }), + ); const url = "http://localhost"; const db = createDb(); + const app = createApp({ url }); + await db.insert(apps).values(app); const caller = appRouter.createCaller({ db, deviceType: undefined, session: null, }); - spy.mockImplementation(() => Promise.resolve({ statusCode: 200, durationMs: 123 })); // Act - const result = await caller.ping({ url }); + const result = await caller.ping({ id: app.id }); // Assert expect(result.url).toBe(url); expect("statusCode" in result).toBe(true); }); }); + +const createApp = ({ url }: { url: string }) => + ({ + id: createId(), + iconUrl: "", + name: "Test App", + href: url, + }) satisfies InferInsertModel; diff --git a/packages/api/src/router/test/widgets/rssFeed.spec.ts b/packages/api/src/router/test/widgets/rssFeed.spec.ts new file mode 100644 index 000000000..acd7f5c17 --- /dev/null +++ b/packages/api/src/router/test/widgets/rssFeed.spec.ts @@ -0,0 +1,221 @@ +import SuperJSON from "superjson"; +import { describe, expect, test } from "vitest"; + +import type { Session } from "@homarr/auth"; +import { createId } from "@homarr/common"; +import type { InferInsertModel } from "@homarr/db"; +import { + boardGroupPermissions, + boards, + boardUserPermissions, + groupMembers, + groups, + items, + users, +} from "@homarr/db/schema"; +import { createDb } from "@homarr/db/test"; +import type { GroupPermissionKey } from "@homarr/definitions"; + +import type { WidgetComponentProps } from "../../../../../widgets/src/definition"; +import { canAccessAllFeedsAsync, restrictUrlsAsync } from "../../widgets/rssFeed"; + +const createSession = (permissions: GroupPermissionKey[] = []): Session => ({ + user: { + id: "user-id", + colorScheme: "light", + permissions, + }, + expires: new Date().toISOString(), +}); + +describe("rssFeedRouter", () => { + describe("canAccessAllFeedsAsync", () => { + test("should return false for unauthenticated users", async () => { + // Arrange + const { callback } = setupAccessCheck(); + + // Act + const result = await callback(/* session: */ null); + + // Assert + expect(result).toBe(false); + }); + test.each([["board-create" as const], ["board-modify-all" as const]])( + "should return true for users with %s permission", + async (permission) => { + // Arrange + const { callback } = setupAccessCheck(); + const session = createSession([permission]); + + // Act + const result = await callback(session); + + // Assert + expect(result).toBe(true); + }, + ); + test("should return false for authenticated users without any boards or permissions", async () => { + // Arrange + const { callback, db } = setupAccessCheck(); + const session = createSession(); + await db.insert(users).values({ + id: session.user.id, + }); + + // Act + const result = await callback(session); + + // Assert + expect(result).toBe(false); + }); + test("should return true for authenticated users that own at least one board", async () => { + // Arrange + const { callback, db } = setupAccessCheck(); + const session = createSession(); + await db.insert(users).values({ + id: session.user.id, + }); + await db.insert(boards).values({ + id: createId(), + name: "test", + creatorId: session.user.id, + }); + + // Act + const result = await callback(session); + + // Assert + expect(result).toBe(true); + }); + test.each([["modify" as const], ["full" as const]])( + "should return true for authenticated users that have %s permissions on at least one board", + async (permission) => { + // Arrange + const { callback, db } = setupAccessCheck(); + const session = createSession(); + await db.insert(users).values({ + id: session.user.id, + }); + const boardId = createId(); + await db.insert(boards).values({ + id: boardId, + name: "test", + }); + await db.insert(boardUserPermissions).values({ + boardId, + permission, + userId: session.user.id, + }); + + // Act + const result = await callback(session); + + // Assert + expect(result).toBe(true); + }, + ); + test.each([["modify" as const], ["full" as const]])( + "should return true for authenticated users that have %s permissions through group on at least one board", + async (permission) => { + // Arrange + const { callback, db } = setupAccessCheck(); + const session = createSession(); + await db.insert(users).values({ + id: session.user.id, + }); + const boardId = createId(); + await db.insert(boards).values({ + id: boardId, + name: "test", + }); + const groupId = createId(); + await db.insert(groups).values({ + id: groupId, + name: "test-group", + position: 0, + }); + await db.insert(groupMembers).values({ + groupId, + userId: session.user.id, + }); + await db.insert(boardGroupPermissions).values({ + boardId, + groupId, + permission, + }); + + // Act + const result = await callback(session); + + // Assert + expect(result).toBe(true); + }, + ); + }); + + describe("restrictUrlsAsync", () => { + test("should return empty array if there are no rss feed items in the database", async () => { + // Arrange + const { callback } = await setupUrlRestrictionAsync([]); + + // Act + const result = await callback(["http://example.com/feed"]); + + // Assert + expect(result).toEqual([]); + }); + + test("should return only the URLs that are present in the database", async () => { + // Arrange + const { callback } = await setupUrlRestrictionAsync(["http://example.com/feed"]); + + // Act + const result = await callback(["http://example.com/feed", "http://not-in-db.com/feed"]); + + // Assert + expect(result).toEqual(["http://example.com/feed"]); + }); + }); +}); + +function setupAccessCheck() { + const db = createDb(); + + return { + callback: (session: Session | null) => canAccessAllFeedsAsync(db, session), + db, + }; +} + +async function setupUrlRestrictionAsync(dbUrls: string[]) { + const db = createDb(); + const boardId = createId(); + await db.insert(boards).values({ + id: boardId, + name: "test", + }); + if (dbUrls.length >= 1) { + await db.insert(items).values( + dbUrls.map( + (url) => + ({ + id: createId(), + kind: "rssFeed", + boardId, + options: SuperJSON.stringify({ + feedUrls: [url], + enableRtl: false, + hideDescription: false, + textLinesClamp: 3, + maximumAmountPosts: 5, + } satisfies WidgetComponentProps<"rssFeed">["options"]), + }) satisfies InferInsertModel, + ), + ); + } + + return { + callback: (urls: string[]) => restrictUrlsAsync(db, urls), + db, + }; +} diff --git a/packages/api/src/router/widgets/app.ts b/packages/api/src/router/widgets/app.ts index 7a65225a6..d07241725 100644 --- a/packages/api/src/router/widgets/app.ts +++ b/packages/api/src/router/widgets/app.ts @@ -1,43 +1,97 @@ +import { TRPCError } from "@trpc/server"; import { observable } from "@trpc/server/observable"; import { z } from "zod/v4"; +import { getServerSettingByKeyAsync } from "@homarr/db/queries"; import { sendPingRequestAsync } from "@homarr/ping"; import { pingChannel, pingUrlChannel } from "@homarr/redis"; import { createTRPCRouter, publicProcedure } from "../../trpc"; +import { AppRepository } from "../app"; export const appRouter = createTRPCRouter({ - ping: publicProcedure.input(z.object({ url: z.string() })).query(async ({ input }) => { - const pingResult = await sendPingRequestAsync(input.url); + ping: publicProcedure.input(z.object({ id: z.string() })).query(async ({ ctx, input }) => { + const boardSettings = await getServerSettingByKeyAsync(ctx.db, "board"); + if (boardSettings.forceDisableStatus) { + throw new TRPCError({ + code: "FORBIDDEN", + message: "Ping functionality is disabled by server settings", + }); + } + + const repository = new AppRepository(ctx.db, ctx.session?.user ?? null); + const app = await repository.getByIdAsync(input.id); + + if (!app) { + throw new TRPCError({ + code: "NOT_FOUND", + message: "App not found", + }); + } + + const pingUrl = app.pingUrl ?? app.href; + + if (!pingUrl) { + throw new TRPCError({ + code: "CONFLICT", + message: "No URL to ping configured for this app", + }); + } + + const pingResult = await sendPingRequestAsync(pingUrl); return { - url: input.url, + url: pingUrl, ...pingResult, }; }), updatedPing: publicProcedure .input( z.object({ - url: z.string(), + id: z.string(), }), ) - .subscription(async ({ input }) => { - await pingUrlChannel.addAsync(input.url); + .subscription(async ({ ctx, input }) => { + const boardSettings = await getServerSettingByKeyAsync(ctx.db, "board"); + if (boardSettings.forceDisableStatus) { + throw new TRPCError({ + code: "FORBIDDEN", + message: "Ping functionality is disabled by server settings", + }); + } - const pingResult = await sendPingRequestAsync(input.url); + const repository = new AppRepository(ctx.db, ctx.session?.user ?? null); + const app = await repository.getByIdAsync(input.id); + + if (!app) { + throw new TRPCError({ + code: "NOT_FOUND", + message: "App not found", + }); + } + + const pingUrl = app.pingUrl ?? app.href; + + if (!pingUrl) { + throw new TRPCError({ + code: "CONFLICT", + message: "No URL to ping configured for this app", + }); + } + + await pingUrlChannel.addAsync(pingUrl); return observable<{ url: string; statusCode: number; durationMs: number } | { url: string; error: string }>( (emit) => { - emit.next({ url: input.url, ...pingResult }); const unsubscribe = pingChannel.subscribe((message) => { // Only emit if same url - if (message.url !== input.url) return; + if (message.url !== pingUrl) return; emit.next(message); }); return () => { unsubscribe(); - void pingUrlChannel.removeAsync(input.url); + void pingUrlChannel.removeAsync(pingUrl); }; }, ); diff --git a/packages/api/src/router/widgets/health-monitoring.ts b/packages/api/src/router/widgets/health-monitoring.ts index 14ab160f7..46741ae1c 100644 --- a/packages/api/src/router/widgets/health-monitoring.ts +++ b/packages/api/src/router/widgets/health-monitoring.ts @@ -9,7 +9,9 @@ import { createTRPCRouter, publicProcedure } from "../../trpc"; export const healthMonitoringRouter = createTRPCRouter({ getSystemHealthStatus: publicProcedure - .concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "unraid", "mock")) + .concat( + createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "unraid", "glances", "mock"), + ) .query(async ({ ctx }) => { return await Promise.all( ctx.integrations.map(async (integration) => { @@ -26,7 +28,9 @@ export const healthMonitoringRouter = createTRPCRouter({ ); }), subscribeSystemHealthStatus: publicProcedure - .concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "unraid", "mock")) + .concat( + createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "unraid", "glances", "mock"), + ) .subscription(({ ctx }) => { return observable<{ integrationId: string; healthInfo: SystemHealthMonitoring; timestamp: Date }>((emit) => { const unsubscribes: (() => void)[] = []; diff --git a/packages/api/src/router/widgets/immich.ts b/packages/api/src/router/widgets/immich.ts new file mode 100644 index 000000000..f1428a80c --- /dev/null +++ b/packages/api/src/router/widgets/immich.ts @@ -0,0 +1,42 @@ +import { z } from "zod/v4"; + +import { getIntegrationKindsByCategory } from "@homarr/definitions"; +import { + immichAlbumRequestHandler, + immichAlbumsRequestHandler, + immichStatsRequestHandler, +} from "@homarr/request-handler/immich"; + +import type { IntegrationAction } from "../../middlewares/integration"; +import { createOneIntegrationMiddleware } from "../../middlewares/integration"; +import { createTRPCRouter, publicProcedure } from "../../trpc"; + +const createImmichIntegrationMiddleware = (action: IntegrationAction) => + createOneIntegrationMiddleware(action, ...getIntegrationKindsByCategory("photoService")); + +export const immichRouter = createTRPCRouter({ + getServerStats: publicProcedure.concat(createImmichIntegrationMiddleware("query")).query(async ({ ctx }) => { + const innerHandler = immichStatsRequestHandler.handler(ctx.integration, {}); + const data = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); + return data.data; + }), + + getAlbum: publicProcedure + .concat(createImmichIntegrationMiddleware("query")) + .input( + z.object({ + albumId: z.string(), + }), + ) + .query(async ({ ctx, input }) => { + const innerHandler = immichAlbumRequestHandler.handler(ctx.integration, { albumId: input.albumId }); + const data = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); + return data.data; + }), + + getAlbums: publicProcedure.concat(createImmichIntegrationMiddleware("query")).query(async ({ ctx }) => { + const innerHandler = immichAlbumsRequestHandler.handler(ctx.integration, {}); + const data = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); + return data.data; + }), +}); diff --git a/packages/api/src/router/widgets/index.ts b/packages/api/src/router/widgets/index.ts index 8f2d775db..126ec4ad2 100644 --- a/packages/api/src/router/widgets/index.ts +++ b/packages/api/src/router/widgets/index.ts @@ -4,6 +4,7 @@ import { createTRPCRouter } from "../../trpc"; export const widgetRouter = createTRPCRouter({ coolify: lazy(() => import("./coolify").then((mod) => mod.coolifyRouter)), + immich: lazy(() => import("./immich").then((mod) => mod.immichRouter)), notebook: lazy(() => import("./notebook").then((mod) => mod.notebookRouter)), weather: lazy(() => import("./weather").then((mod) => mod.weatherRouter)), app: lazy(() => import("./app").then((mod) => mod.appRouter)), @@ -25,4 +26,5 @@ export const widgetRouter = createTRPCRouter({ networkController: lazy(() => import("./network-controller").then((mod) => mod.networkControllerRouter)), firewall: lazy(() => import("./firewall").then((mod) => mod.firewallRouter)), notifications: lazy(() => import("./notifications").then((mod) => mod.notificationsRouter)), + tracearr: lazy(() => import("./tracearr").then((mod) => mod.tracearrRouter)), }); diff --git a/packages/api/src/router/widgets/rssFeed.ts b/packages/api/src/router/widgets/rssFeed.ts index b66662c2e..079d84a32 100644 --- a/packages/api/src/router/widgets/rssFeed.ts +++ b/packages/api/src/router/widgets/rssFeed.ts @@ -1,20 +1,30 @@ +import SuperJSON from "superjson"; import { z } from "zod/v4"; +import type { Session } from "@homarr/auth"; +import type { Database } from "@homarr/db"; +import { eq } from "@homarr/db"; +import { items, users } from "@homarr/db/schema"; import { rssFeedsRequestHandler } from "@homarr/request-handler/rss-feeds"; +import type { WidgetComponentProps } from "../../../../widgets/src"; import { createTRPCRouter, publicProcedure } from "../../trpc"; export const rssFeedRouter = createTRPCRouter({ getFeeds: publicProcedure .input( z.object({ - urls: z.array(z.string()), + urls: z.array(z.string()).max(100), maximumAmountPosts: z.number(), }), ) - .query(async ({ input }) => { + .query(async ({ ctx, input }) => { + const urls = (await canAccessAllFeedsAsync(ctx.db, ctx.session)) + ? input.urls + : await restrictUrlsAsync(ctx.db, input.urls); + const rssFeeds = await Promise.all( - input.urls.map(async (url) => { + urls.map(async (url) => { const innerHandler = rssFeedsRequestHandler.handler({ url, count: input.maximumAmountPosts, @@ -35,3 +45,63 @@ export const rssFeedRouter = createTRPCRouter({ }); }), }); + +export async function canAccessAllFeedsAsync(db: Database, session: Session | null) { + // Unauthenticated users can never access all feeds + if (!session) return false; + // Users with those permissions can modify a board and therefore add a rss feed widget with any feed url + if (session.user.permissions.includes("board-create") || session.user.permissions.includes("board-modify-all")) { + return true; + } + + const user = await db.query.users.findFirst({ + where: eq(users.id, session.user.id), + with: { + boards: { + columns: { id: true }, + }, + boardPermissions: true, + groups: { + with: { + group: { + with: { boardPermissions: true }, + }, + }, + }, + }, + }); + + // Should never happen as the user is authenticated, but just in case + if (!user) return false; + + // If user is owner of any board he has full access and can therefore create widgets with any feed url + if (user.boards.length >= 1) return true; + + // If user has direct permissions on any board that allow modifying it, he can add a rss feed widget with any feed url + if (user.boardPermissions.some(({ permission }) => permission === "modify" || permission === "full")) { + return true; + } + + // If user is in a group that has permissions on any board that allow modifying it, he can add a rss feed widget with any feed url + if ( + user.groups.some(({ group }) => + group.boardPermissions.some(({ permission }) => permission === "modify" || permission === "full"), + ) + ) { + return true; + } + + // Fallback to not allowing access to all feeds + return false; +} + +export async function restrictUrlsAsync(db: Database, urls: string[]) { + const rssFeedItems = await db.query.items.findMany({ + where: eq(items.kind, "rssFeed"), + }); + + const configuredUrls = rssFeedItems + .map((item) => SuperJSON.parse["options"]>(item.options)) + .flatMap((options) => options.feedUrls); + return urls.filter((url) => configuredUrls.includes(url)); +} diff --git a/packages/api/src/router/widgets/tracearr.ts b/packages/api/src/router/widgets/tracearr.ts new file mode 100644 index 000000000..d46c80c66 --- /dev/null +++ b/packages/api/src/router/widgets/tracearr.ts @@ -0,0 +1,48 @@ +import { observable } from "@trpc/server/observable"; + +import type { TracearrDashboardData } from "@homarr/integrations/types"; +import { tracearrRequestHandler } from "@homarr/request-handler/tracearr"; + +import { createManyIntegrationMiddleware } from "../../middlewares/integration"; +import { createTRPCRouter, publicProcedure } from "../../trpc"; + +export const tracearrRouter = createTRPCRouter({ + getDashboard: publicProcedure.concat(createManyIntegrationMiddleware("query", "tracearr")).query(async ({ ctx }) => { + const results = await Promise.all( + ctx.integrations.map(async (integration) => { + const innerHandler = tracearrRequestHandler.handler(integration, {}); + const { data, timestamp } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); + + return { + integrationId: integration.id, + integrationName: integration.name, + integrationUrl: integration.url, + dashboard: data, + updatedAt: timestamp, + }; + }), + ); + + return results; + }), + subscribeToDashboard: publicProcedure + .concat(createManyIntegrationMiddleware("query", "tracearr")) + .subscription(({ ctx }) => { + return observable<{ integrationId: string; dashboard: TracearrDashboardData; timestamp: Date }>((emit) => { + const unsubscribes = ctx.integrations.map((integration) => { + const innerHandler = tracearrRequestHandler.handler(integration, {}); + return innerHandler.subscribe((dashboard) => { + emit.next({ + integrationId: integration.id, + dashboard, + timestamp: new Date(), + }); + }); + }); + + return () => { + unsubscribes.forEach((unsubscribe) => unsubscribe()); + }; + }); + }), +}); diff --git a/packages/auth/package.json b/packages/auth/package.json index d10c0fddf..2ac1e586c 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -33,11 +33,11 @@ "@homarr/validation": "workspace:^0.1.0", "bcrypt": "^6.0.0", "cookies": "^0.9.1", - "ldapts": "8.1.3", - "next": "16.1.4", + "ldapts": "8.1.7", + "next": "16.1.6", "next-auth": "5.0.0-beta.30", - "react": "19.2.3", - "react-dom": "19.2.3", + "react": "19.2.4", + "react-dom": "19.2.4", "zod": "^4.2.1" }, "devDependencies": { @@ -46,8 +46,8 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/bcrypt": "6.0.0", "@types/cookies": "0.9.2", - "eslint": "^9.39.2", - "prettier": "^3.8.0", + "eslint": "^9.39.4", + "prettier": "^3.8.1", "typescript": "^5.9.3" } } diff --git a/packages/boards/package.json b/packages/boards/package.json index d3a033f63..59968d9e6 100644 --- a/packages/boards/package.json +++ b/packages/boards/package.json @@ -25,14 +25,14 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/api": "workspace:^0.1.0", - "react": "19.2.3", - "react-dom": "19.2.3" + "react": "19.2.4", + "react-dom": "19.2.4" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index 78ff471a8..2cd8a86d2 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -19,7 +19,9 @@ "clean": "rm -rf .turbo node_modules", "format": "prettier --check . --ignore-path ../../.gitignore", "lint": "eslint", - "typecheck": "tsc --noEmit" + "run": "pnpm with-env node cli.cjs", + "typecheck": "tsc --noEmit", + "with-env": "dotenv -e .env --" }, "prettier": "@homarr/prettier-config", "dependencies": { @@ -28,14 +30,14 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "dotenv": "^17.2.3" + "dotenv": "^17.3.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "esbuild": "^0.27.2", - "eslint": "^9.39.2", + "esbuild": "^0.27.3", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/cli/src/commands/integrations-delete.ts b/packages/cli/src/commands/integrations-delete.ts new file mode 100644 index 000000000..47ff12c22 --- /dev/null +++ b/packages/cli/src/commands/integrations-delete.ts @@ -0,0 +1,39 @@ +import { command, string } from "@drizzle-team/brocli"; + +import { db, eq } from "@homarr/db"; +import { integrations } from "@homarr/db/schema"; + +export const integrationsDelete = command({ + name: "delete", + desc: "Delete an integration by id or name", + options: { + id: string("id").alias("i").desc("ID of the integration"), + name: string("name").alias("n").desc("Name of the integration"), + }, + // eslint-disable-next-line no-restricted-syntax + handler: async (options) => { + if (!options.id && !options.name) { + console.error("Either --id or --name must be provided"); + return; + } + + let entry; + if (options.id) { + entry = await db.query.integrations.findFirst({ + where: eq(integrations.id, options.id), + }); + } else if (options.name) { + entry = await db.query.integrations.findFirst({ + where: eq(integrations.name, options.name), + }); + } + + if (!entry) { + console.error("Integration not found"); + return; + } + + await db.delete(integrations).where(eq(integrations.id, entry.id)); + console.log(`Integration ${entry.name} (${entry.id}) deleted`); + }, +}); diff --git a/packages/cli/src/commands/integrations-list.ts b/packages/cli/src/commands/integrations-list.ts new file mode 100644 index 000000000..3899ba5b9 --- /dev/null +++ b/packages/cli/src/commands/integrations-list.ts @@ -0,0 +1,21 @@ +import { command } from "@drizzle-team/brocli"; + +import { db } from "@homarr/db"; + +export const integrationsList = command({ + name: "list", + desc: "List all integrations (id and name)", + // eslint-disable-next-line no-restricted-syntax + handler: async () => { + const all = await db.query.integrations.findMany(); + if (all.length === 0) { + console.log("No integrations found"); + return; + } + + console.log("ID\t\t\t\tName"); + for (const i of all) { + console.log(`${i.id}\t${i.name}`); + } + }, +}); diff --git a/packages/cli/src/commands/integrations.ts b/packages/cli/src/commands/integrations.ts new file mode 100644 index 000000000..cef6cd910 --- /dev/null +++ b/packages/cli/src/commands/integrations.ts @@ -0,0 +1,10 @@ +import { command } from "@drizzle-team/brocli"; + +import { integrationsDelete } from "./integrations-delete"; +import { integrationsList } from "./integrations-list"; + +export const integrationsRoot = command({ + name: "integrations", + desc: "Group of commands to manage integrations", + subcommands: [integrationsList, integrationsDelete], +}); diff --git a/packages/cli/src/commands/users-delete.ts b/packages/cli/src/commands/users-delete.ts new file mode 100644 index 000000000..8e0cc5799 --- /dev/null +++ b/packages/cli/src/commands/users-delete.ts @@ -0,0 +1,39 @@ +import { command, string } from "@drizzle-team/brocli"; + +import { db, eq } from "@homarr/db"; +import { users } from "@homarr/db/schema"; + +export const usersDelete = command({ + name: "delete", + desc: "Delete a user by id or username", + options: { + id: string("id").alias("i").desc("ID of the user"), + username: string("username").alias("u").desc("Name of the user"), + }, + // eslint-disable-next-line no-restricted-syntax + handler: async (options) => { + if (!options.id && !options.username) { + console.error("Either --id or --username must be provided"); + return; + } + + let user; + if (options.id) { + user = await db.query.users.findFirst({ + where: eq(users.id, options.id), + }); + } else if (options.username) { + user = await db.query.users.findFirst({ + where: eq(users.name, options.username), + }); + } + + if (!user) { + console.error("User not found"); + return; + } + + await db.delete(users).where(eq(users.id, user.id)); + console.log(`User ${user.name ?? user.id} (${user.id}) deleted`); + }, +}); diff --git a/packages/cli/src/commands/users-list.ts b/packages/cli/src/commands/users-list.ts new file mode 100644 index 000000000..74ac50c2b --- /dev/null +++ b/packages/cli/src/commands/users-list.ts @@ -0,0 +1,22 @@ +import { command } from "@drizzle-team/brocli"; + +import { db } from "@homarr/db"; + +export const usersList = command({ + name: "list", + desc: "List all users (id, username, email)", + // eslint-disable-next-line no-restricted-syntax + handler: async () => { + const allUsers = await db.query.users.findMany(); + + if (allUsers.length === 0) { + console.log("No users found"); + return; + } + + console.log("ID\t\t\t\tUsername\tEmail"); + for (const user of allUsers) { + console.log(`${user.id}\t${user.name ?? ""}\t${user.email ?? ""}`); + } + }, +}); diff --git a/packages/cli/src/commands/users-update-password.ts b/packages/cli/src/commands/users-update-password.ts new file mode 100644 index 000000000..c579f0d24 --- /dev/null +++ b/packages/cli/src/commands/users-update-password.ts @@ -0,0 +1,50 @@ +import { command, string } from "@drizzle-team/brocli"; + +import { hashPasswordAsync } from "@homarr/auth"; +import { db, eq } from "@homarr/db"; +import { sessions, users } from "@homarr/db/schema"; + +export const usersUpdatePassword = command({ + name: "update-password", + desc: "Update the password for a user (credentials provider only)", + options: { + id: string("id").alias("i").desc("ID of the user"), + username: string("username").alias("u").desc("Name of the user"), + password: string("password").alias("p").required().desc("New password"), + }, + // eslint-disable-next-line no-restricted-syntax + handler: async (options) => { + if (!process.env.AUTH_PROVIDERS?.toLowerCase().includes("credentials")) { + console.error("Credentials provider is not enabled"); + return; + } + + if (!options.id && !options.username) { + console.error("Either --id or --username must be provided"); + return; + } + + const user = await db.query.users.findFirst({ + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + where: options.id ? eq(users.id, options.id) : eq(users.name, options.username!), + }); + + if (!user?.salt) { + console.error("User not found or has no credentials record"); + return; + } + + await db + .update(users) + .set({ + password: await hashPasswordAsync(options.password, user.salt), + }) + .where(eq(users.id, user.id)); + + // invalidate existing sessions + await db.delete(sessions).where(eq(sessions.userId, user.id)); + console.log(`All sessions for user ${user.name ?? user.id} have been deleted`); + + console.log("Password updated successfully"); + }, +}); diff --git a/packages/cli/src/commands/users.ts b/packages/cli/src/commands/users.ts new file mode 100644 index 000000000..26655931f --- /dev/null +++ b/packages/cli/src/commands/users.ts @@ -0,0 +1,11 @@ +import { command } from "@drizzle-team/brocli"; + +import { usersDelete } from "./users-delete"; +import { usersList } from "./users-list"; +import { usersUpdatePassword } from "./users-update-password"; + +export const usersRoot = command({ + name: "users", + desc: "Group of commands to manage users", + subcommands: [usersList, usersDelete, usersUpdatePassword], +}); diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 0041651b5..f1b0c658d 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -1,10 +1,12 @@ import { run } from "@drizzle-team/brocli"; import { fixUsernames } from "./commands/fix-usernames"; +import { integrationsRoot } from "./commands/integrations"; import { recreateAdmin } from "./commands/recreate-admin"; import { resetPassword } from "./commands/reset-password"; +import { usersRoot } from "./commands/users"; -const commands = [resetPassword, fixUsernames, recreateAdmin]; +const commands = [usersRoot, integrationsRoot, resetPassword, fixUsernames, recreateAdmin]; void run(commands, { name: "homarr-cli", diff --git a/packages/common/package.json b/packages/common/package.json index 4d2dc7672..06682d083 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -27,12 +27,13 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/core": "workspace:^0.1.0", - "@paralleldrive/cuid2": "^3.1.0", + "@paralleldrive/cuid2": "^3.3.0", + "cookie": "1.1.1", "dayjs": "^1.11.19", - "next": "16.1.4", + "next": "16.1.6", "octokit": "^5.0.5", - "react": "19.2.3", - "react-dom": "19.2.3", + "react": "19.2.4", + "react-dom": "19.2.4", "undici": "7.18.2", "zod": "^4.2.1", "zod-validation-error": "^5.0.0" @@ -41,7 +42,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/common/src/cookie.ts b/packages/common/src/cookie.ts index 12685c55f..73dfb0c89 100644 --- a/packages/common/src/cookie.ts +++ b/packages/common/src/cookie.ts @@ -1,10 +1,10 @@ import type { SerializeOptions } from "cookie"; -import { parse, serialize } from "cookie"; +import { parseCookie, stringifySetCookie } from "cookie"; export function parseCookies(cookieString: string) { - return parse(cookieString); + return parseCookie(cookieString); } export function setClientCookie(name: string, value: string, options: SerializeOptions = {}) { - document.cookie = serialize(name, value, options); + document.cookie = stringifySetCookie(name, value, options); } diff --git a/packages/common/src/date.ts b/packages/common/src/date.ts index c7dc36913..de9ecadaf 100644 --- a/packages/common/src/date.ts +++ b/packages/common/src/date.ts @@ -6,6 +6,17 @@ dayjs.extend(isBetween); const validUnits = ["h", "d", "w", "M", "y"] as UnitTypeShort[]; +export function formatDuration(milliseconds: number) { + const totalSeconds = Math.floor(milliseconds / 1000); + const hours = Math.floor(totalSeconds / 3600); + const minutes = Math.floor((totalSeconds % 3600) / 60); + const seconds = totalSeconds % 60; + if (hours > 0) { + return `${hours}:${String(minutes).padStart(2, "0")}:${String(seconds).padStart(2, "0")}`; + } + return `${minutes}:${String(seconds).padStart(2, "0")}`; +} + export const isDateWithin = (date: Date, relativeDate: string): boolean => { if (relativeDate.length < 2) { throw new Error("Relative date must be at least 2 characters long"); diff --git a/packages/core/package.json b/packages/core/package.json index 33fc32e50..167ea4099 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -41,9 +41,9 @@ "better-sqlite3": "^12.6.2", "dns-caching": "^0.2.9", "drizzle-orm": "^0.45.1", - "ioredis": "5.9.2", - "mysql2": "3.16.1", - "pg": "^8.17.1", + "ioredis": "5.10.0", + "mysql2": "3.19.1", + "pg": "^8.20.0", "superjson": "2.2.6", "winston": "3.19.0", "zod": "^4.2.1" @@ -53,8 +53,8 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/better-sqlite3": "7.6.13", - "@types/pg": "^8.16.0", - "eslint": "^9.39.2", + "@types/pg": "^8.18.0", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/cron-job-api/package.json b/packages/cron-job-api/package.json index c5d427c55..bf3c512d9 100644 --- a/packages/cron-job-api/package.json +++ b/packages/cron-job-api/package.json @@ -28,12 +28,12 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/core": "workspace:^0.1.0", "@homarr/cron-jobs": "workspace:^0.1.0", - "@tanstack/react-query": "^5.90.19", - "@trpc/client": "^11.8.1", - "@trpc/server": "^11.8.1", - "@trpc/tanstack-react-query": "^11.8.1", + "@tanstack/react-query": "^5.90.21", + "@trpc/client": "^11.12.0", + "@trpc/server": "^11.12.0", + "@trpc/tanstack-react-query": "^11.12.0", "node-cron": "^4.2.1", - "react": "19.2.3", + "react": "19.2.4", "zod": "^4.2.1" }, "devDependencies": { @@ -41,8 +41,8 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-cron": "^3.0.11", - "@types/react": "19.2.8", - "eslint": "^9.39.2", + "@types/react": "19.2.14", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/cron-job-api/src/index.ts b/packages/cron-job-api/src/index.ts index cc3afb0a6..270a51242 100644 --- a/packages/cron-job-api/src/index.ts +++ b/packages/cron-job-api/src/index.ts @@ -17,7 +17,15 @@ export interface IJobManager { updateIntervalAsync(name: JobGroupKeys, cron: string): Promise; disableAsync(name: JobGroupKeys): Promise; enableAsync(name: JobGroupKeys): Promise; - getAllAsync(): Promise<{ name: JobGroupKeys; cron: string; preventManualExecution: boolean; isEnabled: boolean }[]>; + getAllAsync(): Promise< + { + name: JobGroupKeys; + cron: string; + preventManualExecution: boolean; + preventCustomInterval: boolean; + isEnabled: boolean; + }[] + >; } const t = initTRPC diff --git a/packages/cron-job-status/package.json b/packages/cron-job-status/package.json index ffde92257..79f3b0ae9 100644 --- a/packages/cron-job-status/package.json +++ b/packages/cron-job-status/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/cron-jobs-core/package.json b/packages/cron-jobs-core/package.json index ea6e12305..7983a9f77 100644 --- a/packages/cron-jobs-core/package.json +++ b/packages/cron-jobs-core/package.json @@ -34,7 +34,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-cron": "^3.0.11", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/cron-jobs-core/src/creator.ts b/packages/cron-jobs-core/src/creator.ts index c22598295..4f7a9310f 100644 --- a/packages/cron-jobs-core/src/creator.ts +++ b/packages/cron-jobs-core/src/creator.ts @@ -19,6 +19,7 @@ export interface CreateCronJobCreatorOptions { interface CreateCronJobOptions { runOnStart?: boolean; preventManualExecution?: boolean; + preventCustomInterval?: boolean; expectedMaximumDurationInMillis?: number; beforeStart?: () => MaybePromise; } @@ -78,14 +79,14 @@ const createCallback = eq(cronJobConfigurations.name, name), }); - const scheduledTask = createTask( - configuration?.cronExpression ?? defaultCronExpression, - () => void catchingCallbackAsync(), - { - name, - timezone: creatorOptions.timezone, - }, - ); + const cronExpression = options.preventCustomInterval + ? defaultCronExpression + : (configuration?.cronExpression ?? defaultCronExpression); + + const scheduledTask = createTask(cronExpression, () => void catchingCallbackAsync(), { + name, + timezone: creatorOptions.timezone, + }); creatorOptions.logger.logDebug("The scheduled task for cron job was created", { name, cronExpression: defaultCronExpression, @@ -114,6 +115,7 @@ const createCallback = [number]; diff --git a/packages/cron-jobs/src/jobs/analytics.ts b/packages/cron-jobs/src/jobs/analytics.ts index 128c4bc89..69cbe6467 100644 --- a/packages/cron-jobs/src/jobs/analytics.ts +++ b/packages/cron-jobs/src/jobs/analytics.ts @@ -9,6 +9,7 @@ import { createCronJob } from "../lib"; export const analyticsJob = createCronJob("analytics", EVERY_WEEK, { runOnStart: true, preventManualExecution: true, + preventCustomInterval: true, }).withCallback(async () => { if (env.NO_EXTERNAL_CONNECTION) return; const analyticSetting = await getServerSettingByKeyAsync(db, "analytics"); diff --git a/packages/cron-jobs/src/jobs/integrations/tracearr.ts b/packages/cron-jobs/src/jobs/integrations/tracearr.ts new file mode 100644 index 000000000..f80130374 --- /dev/null +++ b/packages/cron-jobs/src/jobs/integrations/tracearr.ts @@ -0,0 +1,14 @@ +import { EVERY_5_SECONDS } from "@homarr/cron-jobs-core/expressions"; +import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler"; +import { tracearrRequestHandler } from "@homarr/request-handler/tracearr"; + +import { createCronJob } from "../../lib"; + +export const tracearrJob = createCronJob("tracearr", EVERY_5_SECONDS).withCallback( + createRequestIntegrationJobHandler(tracearrRequestHandler.handler, { + widgetKinds: ["tracearr"], + getInput: { + tracearr: () => ({}), + }, + }), +); diff --git a/packages/db/package.json b/packages/db/package.json index 381313d09..c585cb2e1 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -47,17 +47,17 @@ "@homarr/core": "workspace:^0.1.0", "@homarr/definitions": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", - "@mantine/core": "^8.3.13", - "@paralleldrive/cuid2": "^3.1.0", - "@testcontainers/mysql": "^11.11.0", - "@testcontainers/postgresql": "^11.11.0", + "@mantine/core": "^8.3.16", + "@paralleldrive/cuid2": "^3.3.0", + "@testcontainers/mysql": "^11.12.0", + "@testcontainers/postgresql": "^11.12.0", "better-sqlite3": "^12.6.2", - "dotenv": "^17.2.3", - "drizzle-kit": "^0.31.8", + "dotenv": "^17.3.1", + "drizzle-kit": "^0.31.9", "drizzle-orm": "^0.45.1", "drizzle-zod": "^0.8.3", - "mysql2": "3.16.1", - "pg": "^8.17.1", + "mysql2": "3.19.1", + "pg": "^8.20.0", "superjson": "2.2.6" }, "devDependencies": { @@ -65,11 +65,11 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/better-sqlite3": "7.6.13", - "@types/pg": "^8.16.0", + "@types/pg": "^8.18.0", "dotenv-cli": "^11.0.0", - "esbuild": "^0.27.2", - "eslint": "^9.39.2", - "prettier": "^3.8.0", + "esbuild": "^0.27.3", + "eslint": "^9.39.4", + "prettier": "^3.8.1", "tsx": "4.20.4", "typescript": "^5.9.3" } diff --git a/packages/definitions/package.json b/packages/definitions/package.json index 3512f5d21..850583267 100644 --- a/packages/definitions/package.json +++ b/packages/definitions/package.json @@ -24,14 +24,14 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/common": "workspace:^0.1.0", - "fast-xml-parser": "^5.3.3", + "fast-xml-parser": "^5.4.2", "zod": "^4.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.39.2", + "eslint": "^9.39.4", "tsx": "4.20.4", "typescript": "^5.9.3" } diff --git a/packages/definitions/src/docs/homarr-docs-sitemap.ts b/packages/definitions/src/docs/homarr-docs-sitemap.ts index 4439c5dfe..555dad16c 100644 --- a/packages/definitions/src/docs/homarr-docs-sitemap.ts +++ b/packages/definitions/src/docs/homarr-docs-sitemap.ts @@ -36,6 +36,7 @@ export type HomarrDocumentationPath = | "/blog/tags/update" | "/blog/tags/version" | "/blog/translations" + | "/carbon-test" | "/search" | "/docs/tags" | "/docs/tags/active-directory" @@ -108,7 +109,9 @@ export type HomarrDocumentationPath = | "/docs/tags/variables" | "/docs/advanced/command-line" | "/docs/advanced/command-line/fix-usernames" + | "/docs/advanced/command-line/integrations" | "/docs/advanced/command-line/password-recovery" + | "/docs/advanced/command-line/users" | "/docs/advanced/development/getting-started" | "/docs/advanced/development/kubernetes" | "/docs/advanced/environment-variables" @@ -160,8 +163,10 @@ export type HomarrDocumentationPath = | "/docs/integrations/github-containerregistry" | "/docs/integrations/github" | "/docs/integrations/gitlab" + | "/docs/integrations/glances" | "/docs/integrations/home-assistant" | "/docs/integrations/ical" + | "/docs/integrations/immich" | "/docs/integrations/jellyfin" | "/docs/integrations/jellyseerr" | "/docs/integrations/kubernetes" @@ -183,8 +188,11 @@ export type HomarrDocumentationPath = | "/docs/integrations/radarr" | "/docs/integrations/readarr" | "/docs/integrations/sabnzbd" + | "/docs/integrations/seerr" + | "/docs/integrations/slskd" | "/docs/integrations/sonarr" | "/docs/integrations/tdarr" + | "/docs/integrations/tracearr" | "/docs/integrations/transmission" | "/docs/integrations/truenas" | "/docs/integrations/unifi-controller" @@ -210,6 +218,8 @@ export type HomarrDocumentationPath = | "/docs/widgets/firewall" | "/docs/widgets/health-monitoring" | "/docs/widgets/iframe" + | "/docs/widgets/immich-album-carousel" + | "/docs/widgets/immich-server-stats" | "/docs/widgets/indexer-manager" | "/docs/widgets/media-releases" | "/docs/widgets/media-request-list" @@ -227,6 +237,7 @@ export type HomarrDocumentationPath = | "/docs/widgets/smart-home-execute-automation" | "/docs/widgets/stock-price" | "/docs/widgets/system-resources" + | "/docs/widgets/tracearr" | "/docs/widgets/video" | "/docs/widgets/weather" | "" diff --git a/packages/definitions/src/integration.ts b/packages/definitions/src/integration.ts index d97b0c31b..bbcfcde5f 100644 --- a/packages/definitions/src/integration.ts +++ b/packages/definitions/src/integration.ts @@ -73,6 +73,13 @@ export const integrationDefs = { category: ["downloadClient", "torrent", "miscellaneous"], documentationUrl: createDocumentationLink("/docs/integrations/aria2"), }, + slskd: { + name: "Slskd", + secretKinds: [["apiKey"]], + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/slskd.svg", + category: ["downloadClient", "miscellaneous"], + documentationUrl: createDocumentationLink("/docs/integrations/slskd"), + }, sonarr: { name: "Sonarr", secretKinds: [["apiKey"]], @@ -136,6 +143,13 @@ export const integrationDefs = { category: ["mediaSearch", "mediaRequest", "search"], documentationUrl: createDocumentationLink("/docs/integrations/jellyseerr"), }, + seerr: { + name: "Seerr", + secretKinds: [["apiKey"]], + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/seerr.svg", + category: ["mediaSearch", "mediaRequest", "search"], + documentationUrl: createDocumentationLink("/docs/integrations/seerr"), + }, overseerr: { name: "Overseerr", secretKinds: [["apiKey"]], @@ -178,6 +192,13 @@ export const integrationDefs = { category: ["healthMonitoring"], documentationUrl: createDocumentationLink("/docs/integrations/dash-dot"), }, + glances: { + name: "Glances", + secretKinds: [[]], + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/glances.svg", + category: ["healthMonitoring"], + documentationUrl: null, + }, tdarr: { name: "Tdarr", secretKinds: [[], ["apiKey"]], @@ -313,6 +334,20 @@ export const integrationDefs = { // @ts-expect-error - docs page will be created when integration is merged documentationUrl: createDocumentationLink("/docs/integrations/coolify"), }, + immich: { + name: "Immich", + secretKinds: [["apiKey"]], + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/immich.svg", + category: ["photoService"], + documentationUrl: createDocumentationLink("/docs/integrations/immich"), + }, + tracearr: { + name: "Tracearr", + secretKinds: [["apiKey"]], + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/tracearr.svg", + category: ["mediaMonitoring"], + documentationUrl: createDocumentationLink("/docs/integrations/tracearr"), + }, // This integration only returns mock data, it is used during development (but can also be used in production by directly going to the create page) mock: { name: "Mock", @@ -399,6 +434,8 @@ export const integrationCategories = [ "releasesProvider", "notifications", "firewall", + "photoService", + "mediaMonitoring", ] as const; export type IntegrationCategory = (typeof integrationCategories)[number]; diff --git a/packages/definitions/src/widget.ts b/packages/definitions/src/widget.ts index 8d5b657d2..cf94bd3fa 100644 --- a/packages/definitions/src/widget.ts +++ b/packages/definitions/src/widget.ts @@ -31,5 +31,8 @@ export const widgetKinds = [ "systemResources", "coolify", "systemDisks", + "immich-serverStats", + "immich-albumCarousel", + "tracearr", ] as const; export type WidgetKind = (typeof widgetKinds)[number]; diff --git a/packages/docker/package.json b/packages/docker/package.json index 090fc092d..4873adfcc 100644 --- a/packages/docker/package.json +++ b/packages/docker/package.json @@ -32,8 +32,8 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/dockerode": "^4.0.0", - "eslint": "^9.39.2", + "@types/dockerode": "^4.0.1", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/form/package.json b/packages/form/package.json index b4b297714..418aa9f43 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -26,7 +26,7 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/form": "^8.3.13", + "@mantine/form": "^8.3.16", "mantine-form-zod-resolver": "^1.3.0", "zod": "^4.2.1" }, @@ -34,7 +34,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/forms-collection/package.json b/packages/forms-collection/package.json index c04909db2..74d735a03 100644 --- a/packages/forms-collection/package.json +++ b/packages/forms-collection/package.json @@ -30,15 +30,15 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^8.3.13", - "react": "19.2.3", + "@mantine/core": "^8.3.16", + "react": "19.2.4", "zod": "^4.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.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/forms-collection/src/icon-picker/icon-picker.tsx b/packages/forms-collection/src/icon-picker/icon-picker.tsx index 1fdf3ee96..0ad036f81 100644 --- a/packages/forms-collection/src/icon-picker/icon-picker.tsx +++ b/packages/forms-collection/src/icon-picker/icon-picker.tsx @@ -22,6 +22,7 @@ import { IconUpload } from "@tabler/icons-react"; import { clientApi } from "@homarr/api/client"; import { useSession } from "@homarr/auth/client"; +import { supportedLanguages } from "@homarr/translation"; import { useScopedI18n } from "@homarr/translation/client"; import { UploadMedia } from "../upload-media/upload-media"; @@ -137,7 +138,9 @@ export const IconPicker = ({ } - leftSection={previewUrl ? : null} + leftSection={ + shouldShowPreview(previewUrl) ? : null + } value={search} onChange={(event) => { combobox.openDropdown(); @@ -204,3 +207,11 @@ export const IconPicker = ({ ); }; + +// This regex is used to prevent loading a preview like en or /en which would trigger a language change +// See https://github.com/homarr-labs/homarr/issues/3070 +const localizationPathRegex = new RegExp(`^/?(${supportedLanguages.join("|")})(/.*)?$`, "i" /* ignore casing */); +const shouldShowPreview = (value: string | null): value is string => { + if (!value) return false; + return !localizationPathRegex.test(value); +}; diff --git a/packages/icons/package.json b/packages/icons/package.json index 7460e3706..a15db8e85 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -31,7 +31,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/image-proxy/package.json b/packages/image-proxy/package.json index f6ea7ccf6..796f3ce91 100644 --- a/packages/image-proxy/package.json +++ b/packages/image-proxy/package.json @@ -32,7 +32,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/bcrypt": "6.0.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/image-proxy/src/index.ts b/packages/image-proxy/src/index.ts index 736a64dcb..3660064c3 100644 --- a/packages/image-proxy/src/index.ts +++ b/packages/image-proxy/src/index.ts @@ -1,6 +1,7 @@ -import bcrypt from "bcrypt"; +import { createHmac, hkdfSync } from "node:crypto"; import { createId } from "@homarr/common"; +import { env } from "@homarr/common/env"; import { decryptSecret, encryptSecret } from "@homarr/common/server"; import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http"; import { createLogger } from "@homarr/core/infrastructure/logs"; @@ -9,29 +10,22 @@ import { createGetSetChannel } from "@homarr/redis"; const logger = createLogger({ module: "imageProxy" }); -const createHashChannel = (hash: `${string}.${string}`) => createGetSetChannel(`image-proxy:hash:${hash}`); +const createHmacChannel = (hmac: `${string}.${string}`) => createGetSetChannel(`image-proxy:hmac:${hmac}`); const createUrlByIdChannel = (id: string) => createGetSetChannel<{ url: `${string}.${string}`; headers: `${string}.${string}`; }>(`image-proxy:url:${id}`); -const saltChannel = createGetSetChannel("image-proxy:salt"); export class ImageProxy { - private static salt: string | null = null; - private async getOrCreateSaltAsync(): Promise { - if (ImageProxy.salt) return ImageProxy.salt; - const existingSalt = await saltChannel.getAsync(); - if (existingSalt) { - ImageProxy.salt = existingSalt; - return existingSalt; - } + private static hmacKey: Buffer | null = null; - const salt = await bcrypt.genSalt(10); - logger.debug("Generated new salt for image proxy", { salt }); - ImageProxy.salt = salt; - await saltChannel.setAsync(salt); - return salt; + /** + * Generate secure key for image-proxy from encryption key + */ + private static getHmacKey(): Buffer { + this.hmacKey ??= Buffer.from(hkdfSync("sha256", env.SECRET_ENCRYPTION_KEY, "", "image-proxy", 32)); + return this.hmacKey; } public async createImageAsync(url: string, headers?: Record): Promise { @@ -106,20 +100,18 @@ export class ImageProxy { } private async getExistingIdAsync(url: string, headers: Record | undefined): Promise { - const salt = await this.getOrCreateSaltAsync(); - const urlHash = await bcrypt.hash(url, salt); - const headerHash = await bcrypt.hash(JSON.stringify(headers ?? null), salt); + const urlHash = this.hashSecret(url); + const headerHash = this.hashSecret(JSON.stringify(headers ?? null)); - const channel = createHashChannel(`${urlHash}.${headerHash}`); + const channel = createHmacChannel(`${urlHash}.${headerHash}`); return await channel.getAsync(); } private async storeImageAsync(id: string, url: string, headers: Record | undefined): Promise { - const salt = await this.getOrCreateSaltAsync(); - const urlHash = await bcrypt.hash(url, salt); - const headerHash = await bcrypt.hash(JSON.stringify(headers ?? null), salt); + const urlHash = this.hashSecret(url); + const headerHash = this.hashSecret(JSON.stringify(headers ?? null)); - const hashChannel = createHashChannel(`${urlHash}.${headerHash}`); + const hashChannel = createHmacChannel(`${urlHash}.${headerHash}`); const urlHeaderChannel = createUrlByIdChannel(id); await urlHeaderChannel.setAsync({ url: encryptSecret(url), @@ -134,6 +126,10 @@ export class ImageProxy { }); } + private hashSecret(value: string): string { + return createHmac("sha256", ImageProxy.getHmacKey()).update(value).digest("hex"); + } + private redactUrl(url: string): string { const urlObject = new URL(url); diff --git a/packages/integrations/package.json b/packages/integrations/package.json index dec7a26b3..b08599aa3 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -25,8 +25,8 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@ctrl/deluge": "^7.5.0", - "@ctrl/qbittorrent": "^9.11.0", + "@ctrl/deluge": "^7.5.2", + "@ctrl/qbittorrent": "^9.11.2", "@ctrl/transmission": "^7.4.0", "@gitbeaker/rest": "^43.8.0", "@homarr/common": "workspace:^0.1.0", @@ -38,14 +38,15 @@ "@homarr/redis": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", + "@immich/sdk": "^2.5.6", "@jellyfin/sdk": "^0.13.0", - "@octokit/auth-app": "^8.1.2", + "@octokit/auth-app": "^8.2.0", "ical.js": "^2.2.1", "maria2": "^0.4.1", "node-ical": "^0.22.1", "octokit": "^5.0.5", "proxmox-api": "1.1.1", - "tsdav": "^2.1.6", + "tsdav": "^2.1.8", "undici": "7.18.2", "xml2js": "^0.6.2", "zod": "^4.2.1" @@ -56,7 +57,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-unifi": "^2.5.1", "@types/xml2js": "^0.4.14", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/integrations/src/base/creator.ts b/packages/integrations/src/base/creator.ts index d1ad60ad0..b35fa5f63 100644 --- a/packages/integrations/src/base/creator.ts +++ b/packages/integrations/src/base/creator.ts @@ -10,13 +10,16 @@ import { DelugeIntegration } from "../download-client/deluge/deluge-integration" import { NzbGetIntegration } from "../download-client/nzbget/nzbget-integration"; import { QBitTorrentIntegration } from "../download-client/qbittorrent/qbittorrent-integration"; import { SabnzbdIntegration } from "../download-client/sabnzbd/sabnzbd-integration"; +import { SlskdIntegration } from "../download-client/slskd/slskd-integration"; import { TransmissionIntegration } from "../download-client/transmission/transmission-integration"; import { EmbyIntegration } from "../emby/emby-integration"; import { GitHubContainerRegistryIntegration } from "../github-container-registry/github-container-registry-integration"; import { GithubIntegration } from "../github/github-integration"; import { GitlabIntegration } from "../gitlab/gitlab-integration"; +import { GlancesIntegration } from "../glances/glances-integration"; import { HomeAssistantIntegration } from "../homeassistant/homeassistant-integration"; import { ICalIntegration } from "../ical/ical-integration"; +import { ImmichIntegration } from "../immich/immich-integration"; import { JellyfinIntegration } from "../jellyfin/jellyfin-integration"; import { JellyseerrIntegration } from "../jellyseerr/jellyseerr-integration"; import { LinuxServerIOIntegration } from "../linuxserverio/linuxserverio-integration"; @@ -37,6 +40,8 @@ import { PlexIntegration } from "../plex/plex-integration"; import { ProwlarrIntegration } from "../prowlarr/prowlarr-integration"; import { ProxmoxIntegration } from "../proxmox/proxmox-integration"; import { QuayIntegration } from "../quay/quay-integration"; +import { SeerrIntegration } from "../seerr/seerr-integration"; +import { TracearrIntegration } from "../tracearr/tracearr-integration"; import { TrueNasIntegration } from "../truenas/truenas-integration"; import { UnifiControllerIntegration } from "../unifi-controller/unifi-controller-integration"; import { UnraidIntegration } from "../unraid/unraid-integration"; @@ -77,8 +82,10 @@ export const integrationCreators = { qBittorrent: QBitTorrentIntegration, deluge: DelugeIntegration, transmission: TransmissionIntegration, + slskd: SlskdIntegration, aria2: Aria2Integration, jellyseerr: JellyseerrIntegration, + seerr: SeerrIntegration, overseerr: OverseerrIntegration, prowlarr: ProwlarrIntegration, openmediavault: OpenMediaVaultIntegration, @@ -105,6 +112,9 @@ export const integrationCreators = { truenas: TrueNasIntegration, unraid: UnraidIntegration, coolify: CoolifyIntegration, + tracearr: TracearrIntegration, + glances: GlancesIntegration, + immich: ImmichIntegration, } satisfies Record Promise]>; type IntegrationInstanceOfKind = { diff --git a/packages/integrations/src/base/integration.ts b/packages/integrations/src/base/integration.ts index ec6c7e4b5..22ad8b1ea 100644 --- a/packages/integrations/src/base/integration.ts +++ b/packages/integrations/src/base/integration.ts @@ -58,24 +58,30 @@ export abstract class Integration { private createUrl( inputUrl: string, path: `/${string}`, - queryParams?: Record, + queryParams?: Record, ) { const baseUrl = removeTrailingSlash(inputUrl); const url = new URL(`${baseUrl}${path}`); if (queryParams) { for (const [key, value] of Object.entries(queryParams)) { + if (value === null || value === undefined) { + continue; + } url.searchParams.set(key, value instanceof Date ? value.toISOString() : value.toString()); } } return url; } - protected url(path: `/${string}`, queryParams?: Record) { + protected url(path: `/${string}`, queryParams?: Record) { return this.createUrl(this.integration.url, path, queryParams); } - protected externalUrl(path: `/${string}`, queryParams?: Record) { + protected externalUrl( + path: `/${string}`, + queryParams?: Record, + ) { return this.createUrl(this.integration.externalUrl ?? this.integration.url, path, queryParams); } diff --git a/packages/integrations/src/download-client/slskd/slskd-integration.ts b/packages/integrations/src/download-client/slskd/slskd-integration.ts new file mode 100644 index 000000000..91c7b55ff --- /dev/null +++ b/packages/integrations/src/download-client/slskd/slskd-integration.ts @@ -0,0 +1,244 @@ +import dayjs from "dayjs"; +import type { RequestInit } from "undici"; + +import { ResponseError } from "@homarr/common/server"; +import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http"; +import { createLogger } from "@homarr/core/infrastructure/logs"; +import { ErrorWithMetadata } from "@homarr/core/infrastructure/logs/error"; + +import type { IntegrationTestingInput } from "../../base/integration"; +import { Integration } from "../../base/integration"; +import { TestConnectionError } from "../../base/test-connection/test-connection-error"; +import type { TestingResult } from "../../base/test-connection/test-connection-service"; +import type { DownloadClientJobsAndStatus } from "../../interfaces/downloads/download-client-data"; +import type { IDownloadClientIntegration } from "../../interfaces/downloads/download-client-integration"; +import type { DownloadClientItem } from "../../interfaces/downloads/download-client-items"; + +interface SlskdUserAndDownloads { + directories: { + files: { + id: string; + filename: string; + size: number; + percentComplete: number; + averageSpeed: number; + /** + * Time in hh:mm:ss format. + * Optional, undefined when aborted or errored. + */ + remainingTime?: string; + + /** + * A bit-wise combination of the state enums. + */ + state: string; + + /** + * ISO date when the file was requested at. + * "enqueued" and "started" are different things. + */ + requestedAt: string; + }[]; + }[]; +} + +const logger = createLogger({ module: "slskd-integration" }); + +/** + * Implementation of the Slskd application for Soulseek https://github.com/slskd/slskd + * Slskd integration cannot pause or stop downloads, it can only list downloads. + */ +export class SlskdIntegration extends Integration implements IDownloadClientIntegration { + // eslint-disable-next-line no-restricted-syntax + public pauseQueueAsync(): Promise { + return Promise.resolve(); + } + + // eslint-disable-next-line no-restricted-syntax + public pauseItemAsync(_: DownloadClientItem): Promise { + return Promise.resolve(); + } + + // eslint-disable-next-line no-restricted-syntax + public resumeQueueAsync(): Promise { + return Promise.resolve(); + } + + // eslint-disable-next-line no-restricted-syntax + public resumeItemAsync(_: DownloadClientItem): Promise { + return Promise.resolve(); + } + + // eslint-disable-next-line no-restricted-syntax,id-length + public deleteItemAsync(_: DownloadClientItem, _2: boolean): Promise { + return Promise.resolve(); + } + + protected async testingAsync(input: IntegrationTestingInput): Promise { + const response = await input.fetchAsync(this.url("/api/v0/server"), { + headers: { + "X-API-Key": this.getSecretValue("apiKey"), + }, + }); + + if (!response.ok) { + return TestConnectionError.StatusResult({ + status: response.status, + url: response.url, + }); + } + + await response.json(); + + return { + success: true, + }; + } + + public async getClientJobsAndStatusAsync(input: { limit: number }): Promise { + const downloads = await this.getDownloadsAsync(); + const flatFiles = downloads.flatMap((user) => user.directories).flatMap((directory) => directory.files); + + return { + status: { + paused: false, // slskd cannot be paused + rates: { + down: flatFiles.reduce((acc, file) => acc + file.averageSpeed, 0), + up: 0, // slskd does not upload except sharing which isn't what we want to show in downloads + }, + types: ["miscellaneous"], + }, + items: flatFiles.slice(0, input.limit).map((file, index) => { + const remainingTimeParts = file.remainingTime ? file.remainingTime.split(":") : null; + // The file name returned from API includes the full remote path, which is not relevant for Homarr. + // We remove everything before the last slash to beautify the file name. + const actualFileName = file.filename.split("\\").at(-1); + + return { + id: file.id, + name: actualFileName ?? file.filename, + size: file.size, + time: remainingTimeParts + ? dayjs + .duration({ + hours: Number(remainingTimeParts[0]), + minutes: Number(remainingTimeParts[1]), + seconds: Number(remainingTimeParts[2]), + }) + .as("milliseconds") + : 0, + progress: file.percentComplete / 100, + type: "miscellaneous", + state: this.getDownloadState(file), + added: dayjs(file.requestedAt).unix() * 1000, + index, + }; + }), + }; + } + + private async getDownloadsAsync(): Promise { + const response = await this.makeRequestAsync("/api/v0/transfers/downloads", { method: "GET" }); + return response as SlskdUserAndDownloads[]; + } + + private async makeRequestAsync( + path: `/${string}`, + options: RequestInit & { timeout?: number } = {}, + ): Promise { + const response = await fetchWithTrustedCertificatesAsync(this.url(path), { + ...options, + headers: { + "X-API-Key": this.getSecretValue("apiKey"), + }, + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + const contentType = response.headers.get("content-type"); + if (contentType?.includes("application/json")) { + return response.json(); + } + + return response.text(); + } + + private getDownloadState( + item: SlskdUserAndDownloads["directories"][number]["files"][number], + ): DownloadClientItem["state"] { + try { + const mappedStates = parseTransferStateArray(item.state); + + if (mappedStates.includes(TransferState.InProgress)) { + return "downloading"; + } + + if ( + mappedStates.includes(TransferState.Errored) || + mappedStates.includes(TransferState.Aborted) || + mappedStates.includes(TransferState.TimedOut) || + mappedStates.includes(TransferState.Rejected) || + mappedStates.includes(TransferState.Cancelled) + ) { + return "failed"; + } + + if (mappedStates.includes(TransferState.Queued) || mappedStates.includes(TransferState.Initializing)) { + return "processing"; + } + + // "completed" must come last, since above enums are bit-wise combined even if they failed + if (mappedStates.includes(TransferState.Completed) || mappedStates.includes(TransferState.Succeeded)) { + return "completed"; + } + + logger.warn( + `Unable to map the SLSKD transfer state enum '${mappedStates.join(",")}'. Will fall back to 'unknown'`, + ); + + return "unknown"; + } catch (error) { + logger.error( + new ErrorWithMetadata( + `Unable to map the SLSKD transfer states '${item.state}' due to an exception in the translation. Will fall back to 'unknown'. This is likely a bug.`, + undefined, + { + cause: error, + }, + ), + ); + return "unknown"; + } + } +} + +/** + * Copy of the transfer states of SLSKD, copied from the following file: + * https://github.com/slskd/slskd/blob/86dc6072a28876abfdeb1f5dbb7dfc99ea8e1805/src/slskd/Core/Data/Migrations/Z04012025_TransferStateMigration.cs#L217-L234 + */ +export enum TransferState { + None, + Requested, + Queued, + Initializing, + InProgress, + Completed, + Succeeded, + Cancelled, + TimedOut, + Errored, + Rejected, + Aborted, +} + +export function parseTransferStateArray(csv: string, separator = ","): TransferState[] { + const parts = csv + .split(separator) + .map((part) => part.trim()) + .filter(Boolean); + + // @ts-expect-error use string to index + return parts.map((part) => TransferState[part] as TransferState); +} diff --git a/packages/integrations/src/glances/glances-integration.ts b/packages/integrations/src/glances/glances-integration.ts new file mode 100644 index 000000000..2d1f8601f --- /dev/null +++ b/packages/integrations/src/glances/glances-integration.ts @@ -0,0 +1,153 @@ +import dayjs from "dayjs"; +import { z } from "zod/v4"; + +import { ResponseError } from "@homarr/common/server"; +import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http"; + +import type { IntegrationInput, IntegrationTestingInput } from "../base/integration"; +import { Integration } from "../base/integration"; +import type { SessionStore } from "../base/session-store"; +import { createSessionStore } from "../base/session-store"; +import { TestConnectionError } from "../base/test-connection/test-connection-error"; +import type { TestingResult } from "../base/test-connection/test-connection-service"; +import type { ISystemHealthMonitoringIntegration } from "../interfaces/health-monitoring/health-monitoring-integration"; +import type { SystemHealthMonitoring } from "../types"; + +export class GlancesIntegration extends Integration implements ISystemHealthMonitoringIntegration { + private readonly sessionStore: SessionStore<{ version: string }>; + + constructor(integration: IntegrationInput) { + super(integration); + this.sessionStore = createSessionStore(integration); + } + + public async getSystemInfoAsync(): Promise { + let session = await this.sessionStore.getAsync(); + + if (session == null) { + await this.sessionStore.setAsync({ + version: await this.getGlancesVersionAsync(), + }); + + // update the store to re-use the values below. + session = await this.sessionStore.getAsync(); + } + + if (session == null) throw new Error("Session was unexpectitly null"); + + const stats = await this.getAllStatsAsync(); + + return { + cpuUtilization: stats.cpu.total, + memUsedInBytes: stats.mem.used, + memAvailableInBytes: stats.mem.total - stats.mem.used, + network: { + down: stats.network.reduce((acc, net) => net.bytes_recv_rate_per_sec + acc, 0), + up: stats.network.reduce((acc, net) => net.bytes_sent_rate_per_sec + acc, 0), + }, + availablePkgUpdates: 0, + version: session.version, + fileSystem: stats.fs.map((fileSystem) => ({ + deviceName: fileSystem.device_name, + used: `${fileSystem.used}`, + available: `${fileSystem.free}`, + percentage: fileSystem.percent, + })), + uptime: stats.uptime.as("seconds"), + rebootRequired: false, + cpuModelName: stats.quicklook.cpu_name, + loadAverage: null, + smart: [], + cpuTemp: undefined, + }; + } + + private async getGlancesVersionAsync() { + const response = await fetchWithTrustedCertificatesAsync(this.url("/api/4/version")); + + if (!response.ok) { + throw new ResponseError(response); + } + + return await response.text(); + } + + private async getAllStatsAsync() { + const response = await fetchWithTrustedCertificatesAsync(this.url("/api/4/all")); + + if (!response.ok) { + throw new ResponseError(response); + } + + return allSchema.parseAsync(await response.json()); + } + + protected async testingAsync(_: IntegrationTestingInput): Promise { + const response = await fetchWithTrustedCertificatesAsync(this.url("/api/4/status"), { + headers: { "User-Agent": "Homarr" }, + }); + + if (!response.ok) { + return TestConnectionError.StatusResult(response); + } + + return { success: true }; + } +} + +// Glances is written in python and uses the following code to format uptime: +// from datetime import datetime +// uptime = datetime.now() - datetime.fromtimestamp(1773395580) +// str(uptime).split(".")[0] +// This results in one of the following formats: +// - 71 days, 9:51:35 +// - 1 day, 9:50:23 +// - 9:51:24 +// - 0:22:02 +// - 0:00:17 +// See https://github.com/nicolargo/glances/blob/4139b10c5c3a98afc67a19ae67d66d2d94d7db6a/glances/plugins/uptime/__init__.py#L58 +const regex = /^(?:(?\d+) days?, )?(?\d+):(?\d+):(?\d+)$/m; + +const allSchema = z.object({ + cpu: z.object({ + total: z.number().min(0).max(100), + }), + mem: z.object({ + total: z.number().min(0), + used: z.number().min(0), + free: z.number().min(0), + }), + network: z.array( + z.object({ + bytes_sent_rate_per_sec: z.number().min(0), + bytes_recv_rate_per_sec: z.number().min(0), + }), + ), + fs: z.array( + z.object({ + device_name: z.string(), + used: z.number().min(0), + free: z.number().min(0), + percent: z.number().min(0).max(100), + }), + ), + uptime: z + .string() + .regex(new RegExp(regex)) + .transform((uptime) => { + const match = regex.exec(uptime); + if (!match?.groups) { + throw new Error(`Unable to parse uptime value '${uptime}' with regex.`); + } + + const days = "days" in match.groups ? Number(match.groups.days) : undefined; + const hours = "hours" in match.groups ? Number(match.groups.hours) : undefined; + const minutes = "minutes" in match.groups ? Number(match.groups.minutes) : undefined; + const seconds = "seconds" in match.groups ? Number(match.groups.seconds) : undefined; + + return dayjs.duration({ days, hours, minutes, seconds }); + }), + quicklook: z.object({ + cpu_name: z.string(), + }), +}); diff --git a/packages/integrations/src/immich/immich-integration.ts b/packages/integrations/src/immich/immich-integration.ts new file mode 100644 index 000000000..21019e4b7 --- /dev/null +++ b/packages/integrations/src/immich/immich-integration.ts @@ -0,0 +1,111 @@ +import { getAlbumInfo, getAllAlbums, getMyUser, getServerStatistics, init, searchUsers } from "@immich/sdk"; + +import { createLogger } from "@homarr/core/infrastructure/logs"; +import { ImageProxy } from "@homarr/image-proxy"; + +import type { IntegrationInput, IntegrationTestingInput } from "../base/integration"; +import { Integration } from "../base/integration"; +import type { TestingResult } from "../base/test-connection/test-connection-service"; + +export interface ImmichServerStats { + userCount: number; + photoCount: number; + videoCount: number; + totalLibraryUsageInBytes: number; +} + +export interface ImmichAlbum { + id: string; + albumName: string; + assets: ImmichAsset[]; +} + +export interface ImmichAsset { + id: string; + deviceAssetId: string; + originalPath: string; + thumbhash: string | null; + fileModifiedAt: string; + fileCreatedAt: string; + updatedAt: string; + type: "IMAGE" | "VIDEO" | "AUDIO" | "OTHER"; + publicLink: string; +} + +const logger = createLogger({ module: "immich-integration" }); + +export class ImmichIntegration extends Integration { + constructor(integration: IntegrationInput) { + super(integration); + } + + public async getServerStatsAsync(): Promise { + this.initClient(); + const [statistics, users] = await Promise.all([getServerStatistics(), searchUsers()]); + return { + photoCount: statistics.photos, + userCount: users.length, + totalLibraryUsageInBytes: statistics.usage, + videoCount: statistics.videos, + }; + } + + public async getAlbumAsync(albumId: string): Promise { + this.initClient(); + const album = await getAlbumInfo({ id: albumId }); + const imageProxy = new ImageProxy(); + return { + albumName: album.albumName, + assets: await Promise.all( + album.assets.map(async (asset) => { + const publicLink = await imageProxy.createImageAsync( + this.url(`/api/assets/${asset.id}/original`).toString(), + { + "x-api-key": this.getSecretValue("apiKey"), + }, + ); + return { + id: asset.id, + type: asset.type, + deviceAssetId: asset.deviceAssetId, + thumbhash: asset.thumbhash, + fileCreatedAt: asset.fileCreatedAt, + fileModifiedAt: asset.fileModifiedAt, + originalPath: asset.originalPath, + updatedAt: asset.updatedAt, + publicLink, + }; + }), + ), + id: album.id, + }; + } + + public async getAlbumsAsync(): Promise< + { + id: string; + albumName: string; + assetCount: number; + }[] + > { + this.initClient(); + const albums = await getAllAlbums({}); + return albums.map((album) => ({ id: album.id, albumName: album.albumName, assetCount: album.assetCount })); + } + + protected async testingAsync(_: IntegrationTestingInput): Promise { + this.initClient(); + const user = await getMyUser(); + logger.debug(`Logged in as ${user.name} (${user.id})`); + return { success: true }; + } + + /** + * Sets the credentials and prepares the client for calls. + * Must be called before any other functions. + * @private + */ + private initClient() { + init({ baseUrl: this.url("/api").toString(), apiKey: this.getSecretValue("apiKey") }); + } +} diff --git a/packages/integrations/src/index.ts b/packages/integrations/src/index.ts index a2f1287df..3514e022b 100644 --- a/packages/integrations/src/index.ts +++ b/packages/integrations/src/index.ts @@ -5,6 +5,7 @@ export { DelugeIntegration } from "./download-client/deluge/deluge-integration"; export { NzbGetIntegration } from "./download-client/nzbget/nzbget-integration"; export { QBitTorrentIntegration } from "./download-client/qbittorrent/qbittorrent-integration"; export { SabnzbdIntegration } from "./download-client/sabnzbd/sabnzbd-integration"; +export { SlskdIntegration } from "./download-client/slskd/slskd-integration"; export { TransmissionIntegration } from "./download-client/transmission/transmission-integration"; export { HomeAssistantIntegration } from "./homeassistant/homeassistant-integration"; export { JellyfinIntegration } from "./jellyfin/jellyfin-integration"; @@ -16,7 +17,9 @@ export { SonarrIntegration } from "./media-organizer/sonarr/sonarr-integration"; export { NextcloudIntegration } from "./nextcloud/nextcloud.integration"; export { NTFYIntegration } from "./ntfy/ntfy-integration"; export { OpenMediaVaultIntegration } from "./openmediavault/openmediavault-integration"; +export { GlancesIntegration } from "./glances/glances-integration"; export { OverseerrIntegration } from "./overseerr/overseerr-integration"; +export { SeerrIntegration } from "./seerr/seerr-integration"; export { PiHoleIntegrationV5 } from "./pi-hole/v5/pi-hole-integration-v5"; export { PiHoleIntegrationV6 } from "./pi-hole/v6/pi-hole-integration-v6"; export { PlexIntegration } from "./plex/plex-integration"; @@ -26,6 +29,8 @@ export { UnraidIntegration } from "./unraid/unraid-integration"; export { OPNsenseIntegration } from "./opnsense/opnsense-integration"; export { ICalIntegration } from "./ical/ical-integration"; export { CoolifyIntegration } from "./coolify/coolify-integration"; +export { ImmichIntegration } from "./immich/immich-integration"; +export { TracearrIntegration } from "./tracearr/tracearr-integration"; // Types export type { IntegrationInput } from "./base/integration"; @@ -51,6 +56,8 @@ export type { } from "./interfaces/media-transcoding/media-transcoding-types"; export type { ReleasesRepository, ReleaseResponse } from "./interfaces/releases-providers/releases-providers-types"; export type { Notification } from "./interfaces/notifications/notification-types"; +export type { ImmichServerStats, ImmichAlbum, ImmichAsset } from "./immich/immich-integration"; +export type { TracearrDashboardData } from "./tracearr/tracearr-types"; // Schemas export { downloadClientItemSchema } from "./interfaces/downloads/download-client-items"; diff --git a/packages/integrations/src/overseerr/overseerr-integration.ts b/packages/integrations/src/overseerr/overseerr-integration.ts index 042f2faab..619af2541 100644 --- a/packages/integrations/src/overseerr/overseerr-integration.ts +++ b/packages/integrations/src/overseerr/overseerr-integration.ts @@ -115,9 +115,8 @@ export class OverseerrIntegration } public async getRequestsAsync(): Promise { - //Ensure to get all pending request first const pendingRequests = await fetchWithTrustedCertificatesAsync( - this.url("/api/v1/request", { take: -1, filter: "pending" }), + this.url("/api/v1/request", { take: 20, filter: "pending" }), { headers: { "X-Api-Key": this.getSecretValue("apiKey"), @@ -125,7 +124,6 @@ export class OverseerrIntegration }, ); - //Change 20 to integration setting (set to -1 for all) const allRequests = await fetchWithTrustedCertificatesAsync(this.url("/api/v1/request", { take: 20 }), { headers: { "X-Api-Key": this.getSecretValue("apiKey"), @@ -223,7 +221,7 @@ export class OverseerrIntegration } public async getUsersAsync(): Promise { - const response = await fetchWithTrustedCertificatesAsync(this.url("/api/v1/user", { take: -1 }), { + const response = await fetchWithTrustedCertificatesAsync(this.url("/api/v1/user", { take: 10, sort: "requests" }), { headers: { "X-Api-Key": this.getSecretValue("apiKey"), }, diff --git a/packages/integrations/src/seerr/seerr-integration.ts b/packages/integrations/src/seerr/seerr-integration.ts new file mode 100644 index 000000000..30ed79d4e --- /dev/null +++ b/packages/integrations/src/seerr/seerr-integration.ts @@ -0,0 +1,4 @@ +import { OverseerrIntegration } from "../overseerr/overseerr-integration"; + +// Seerr is a fork of Overseerr, the API is compatible and no additional logic is required. +export class SeerrIntegration extends OverseerrIntegration {} diff --git a/packages/integrations/src/tracearr/tracearr-integration.ts b/packages/integrations/src/tracearr/tracearr-integration.ts new file mode 100644 index 000000000..0ad7001a2 --- /dev/null +++ b/packages/integrations/src/tracearr/tracearr-integration.ts @@ -0,0 +1,220 @@ +import { ResponseError } from "@homarr/common/server"; +import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http"; +import { ImageProxy } from "@homarr/image-proxy"; + +import type { IntegrationTestingInput } from "../base/integration"; +import { Integration } from "../base/integration"; +import type { TestingResult } from "../base/test-connection/test-connection-service"; +import { tracearrHealthResponseSchema } from "./tracearr-types"; +import type { + TracearrDashboardData, + TracearrHealthResponse, + TracearrHistoryResponse, + TracearrStatsResponse, + TracearrStreamsResponse, + TracearrViolationsResponse, +} from "./tracearr-types"; + +export class TracearrIntegration extends Integration { + protected async testingAsync(input: IntegrationTestingInput): Promise { + const healthUrl = this.url("/api/v1/public/health"); + const healthResponse = await input.fetchAsync(healthUrl, { + headers: this.getAuthHeaders(), + }); + + if (!healthResponse.ok) { + throw new ResponseError(healthResponse); + } + + return { success: true }; + } + + /** + * GET /api/v1/public/health + * Check server connectivity and status + */ + public async getHealthAsync(): Promise { + const url = this.url("/api/v1/public/health"); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return tracearrHealthResponseSchema.parse(await response.json()); + } + + /** + * GET /api/v1/public/stats + * Dashboard statistics with optional server filter + */ + public async getStatsAsync(serverId?: string): Promise { + const url = this.url("/api/v1/public/stats", { serverId }); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return (await response.json()) as TracearrStatsResponse; + } + + /** + * GET /api/v1/public/streams + * Active playback sessions with codec and quality details + */ + public async getStreamsAsync(serverId?: string): Promise { + const url = this.url("/api/v1/public/streams", { serverId }); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + const json = (await response.json()) as TracearrStreamsResponse; + const imageProxy = new ImageProxy(); + + return { + ...json, + data: await Promise.all( + json.data.map(async (stream) => { + if (stream.userAvatarUrl) { + stream.userAvatarUrl = await this.proxyImageAsync(imageProxy, stream.userAvatarUrl, stream.id, "avatar"); + } + if (stream.posterUrl) { + stream.posterUrl = await this.proxyImageAsync(imageProxy, stream.posterUrl, stream.id, "poster"); + } + return stream; + }), + ), + }; + } + + /** + * GET /api/v1/public/violations + * Recent rule violations with optional pagination + */ + public async getViolationsAsync(pageSize = 5): Promise { + const url = this.url("/api/v1/public/violations", { + page: "1", + pageSize: String(pageSize), + }); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + const json = (await response.json()) as TracearrViolationsResponse; + const imageProxy = new ImageProxy(); + + return { + ...json, + data: await Promise.all( + json.data.map(async (violation) => { + violation.user.avatarUrl = await this.proxyImageAsync( + imageProxy, + violation.user.avatarUrl, + violation.user.id, + "avatar", + ); + return violation; + }), + ), + }; + } + + /** + * GET /api/v1/public/history + * Session history with optional pagination + */ + public async getHistoryAsync(pageSize = 10): Promise { + const url = this.url("/api/v1/public/history", { + page: "1", + pageSize: String(pageSize), + }); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + const json = (await response.json()) as TracearrHistoryResponse; + const imageProxy = new ImageProxy(); + + return { + ...json, + data: await Promise.all( + json.data.map(async (session) => { + session.user.avatarUrl = await this.proxyImageAsync( + imageProxy, + session.user.avatarUrl, + session.user.id, + "avatar", + ); + return session; + }), + ), + }; + } + + /** + * Get combined dashboard data (stats + streams + violations + history) + * Uses Promise.allSettled for optional endpoints so failures don't break the dashboard. + */ + public async getDashboardDataAsync(): Promise { + const [stats, streams] = await Promise.all([this.getStatsAsync(), this.getStreamsAsync()]); + + const [violationsResult, historyResult] = await Promise.allSettled([ + this.getViolationsAsync(), + this.getHistoryAsync(), + ]); + + return { + stats, + streams, + violations: violationsResult.status === "fulfilled" ? violationsResult.value : null, + recentActivity: historyResult.status === "fulfilled" ? historyResult.value : null, + }; + } + + private getAuthHeaders(): Record { + return { + Authorization: `Bearer ${this.getSecretValue("apiKey")}`, + }; + } + + private async proxyImageAsync( + imageProxy: ImageProxy, + url: string | null | undefined, + uniqueId: string, + discriminator: string, + ): Promise { + if (!url) return null; + try { + // ImageProxy doesn't support fallback urls so we need to remove them + const cleanUrl = url.replace(/&fallback=[^&]+/, "").replace(/\?fallback=[^&]+&?/, "?"); + // Build the full URL, then inject _uid as the FIRST query param. + // This is critical because ImageProxy uses bcrypt which truncates at 72 bytes. + // Without this, all long avatar/poster URLs from the same session hash identically + // since they share the same first 72+ bytes. + const baseUrl = this.url(cleanUrl as `/${string}`).toString(); + const prefix = `_uid=${discriminator}_${uniqueId}&`; + const fullUrl = baseUrl.includes("?") ? baseUrl.replace("?", `?${prefix}`) : `${baseUrl}?${prefix}`; + + return await imageProxy.createImageAsync(fullUrl, this.getAuthHeaders()); + } catch { + return null; + } + } +} diff --git a/packages/integrations/src/tracearr/tracearr-types.ts b/packages/integrations/src/tracearr/tracearr-types.ts new file mode 100644 index 000000000..099d584a9 --- /dev/null +++ b/packages/integrations/src/tracearr/tracearr-types.ts @@ -0,0 +1,233 @@ +import { z } from "zod"; + +export const tracearrServerStatusSchema = z.object({ + id: z.string(), + name: z.string(), + type: z.union([z.literal("plex"), z.literal("jellyfin"), z.literal("emby")]), + online: z.boolean(), + activeStreams: z.number(), +}); + +export type TracearrServerStatus = z.infer; + +export const tracearrHealthResponseSchema = z.object({ + status: z.literal("ok"), + timestamp: z.string(), + servers: z.array(tracearrServerStatusSchema), +}); + +export type TracearrHealthResponse = z.infer; + +export interface TracearrStatsResponse { + activeStreams: number; + totalUsers: number; + totalSessions: number; + recentViolations: number; + timestamp: string; +} + +export interface TracearrSourceVideoDetails { + bitrate?: number; + framerate?: string; + dynamicRange?: string; + aspectRatio?: number; + profile?: string; + level?: string; + colorSpace?: string; + colorDepth?: number; +} + +export interface TracearrSourceAudioDetails { + bitrate?: number; + channelLayout?: string; + language?: string; + sampleRate?: number; +} + +export interface TracearrStreamVideoDetails { + bitrate?: number; + width?: number; + height?: number; + framerate?: string; + dynamicRange?: string; +} + +export interface TracearrStreamAudioDetails { + bitrate?: number; + channels?: number; + language?: string; +} + +export interface TracearrTranscodeInfo { + containerDecision: "directplay" | "copy" | "transcode"; + sourceContainer?: string; + streamContainer?: string; + hwRequested?: boolean; + hwDecoding?: string; + hwEncoding?: string; + speed?: number; + throttled?: boolean; + reasons?: string[]; +} + +export interface TracearrSubtitleInfo { + decision?: string; + codec?: string; + language?: string; + forced?: boolean; +} + +export interface TracearrStream { + id: string; + serverId: string; + serverName: string; + username: string; + userThumb: string | null; + userAvatarUrl: string | null; + mediaTitle: string; + mediaType: "movie" | "episode" | "track" | "live" | "photo" | "unknown"; + showTitle: string | null; + seasonNumber: number | null; + episodeNumber: number | null; + year: number | null; + thumbPath: string | null; + posterUrl: string | null; + durationMs: number | null; + state: "playing" | "paused" | "stopped"; + progressMs: number; + startedAt: string; + isTranscode: boolean | null; + videoDecision: "directplay" | "copy" | "transcode" | null; + audioDecision: "directplay" | "copy" | "transcode" | null; + bitrate: number | null; + sourceVideoCodec: string | null; + sourceAudioCodec: string | null; + sourceAudioChannels: number | null; + sourceVideoWidth: number | null; + sourceVideoHeight: number | null; + sourceVideoDetails: TracearrSourceVideoDetails | null; + sourceAudioDetails: TracearrSourceAudioDetails | null; + streamVideoCodec: string | null; + streamAudioCodec: string | null; + streamVideoDetails: TracearrStreamVideoDetails | null; + streamAudioDetails: TracearrStreamAudioDetails | null; + transcodeInfo: TracearrTranscodeInfo | null; + subtitleInfo: TracearrSubtitleInfo | null; + resolution: string | null; + sourceVideoCodecDisplay: string | null; + sourceAudioCodecDisplay: string | null; + audioChannelsDisplay: string | null; + streamVideoCodecDisplay: string | null; + streamAudioCodecDisplay: string | null; + device: string | null; + player: string | null; + product: string | null; + platform: string | null; +} + +export interface TracearrServerStreamSummary { + serverId: string; + serverName: string; + total: number; + transcodes: number; + directStreams: number; + directPlays: number; + totalBitrate: string; +} + +export interface TracearrStreamsSummary { + total: number; + transcodes: number; + directStreams: number; + directPlays: number; + totalBitrate: string; + byServer: TracearrServerStreamSummary[]; +} + +export interface TracearrStreamsResponse { + data: TracearrStream[]; + summary: TracearrStreamsSummary; +} + +export interface TracearrViolation { + id: string; + serverId: string; + serverName: string; + severity: "low" | "medium" | "high"; + acknowledged: boolean; + data: Record; + createdAt: string; + rule: { + id: string; + type: string; + name: string; + }; + user: { + id: string; + username: string; + thumbUrl: string | null; + avatarUrl: string | null; + }; +} + +export interface TracearrViolationsResponse { + data: TracearrViolation[]; + meta: { + total: number; + page: number; + pageSize: number; + }; +} + +export interface TracearrHistorySession { + id: string; + serverId: string; + serverName: string; + state: "playing" | "paused" | "stopped"; + mediaType: "movie" | "episode" | "track" | "live" | "photo" | "unknown"; + mediaTitle: string; + showTitle: string | null; + seasonNumber: number | null; + episodeNumber: number | null; + year: number | null; + thumbPath: string | null; + posterUrl: string | null; + durationMs: number; + progressMs: number; + totalDurationMs: number; + startedAt: string; + stoppedAt: string | null; + watched: boolean; + segmentCount: number; + device: string | null; + player: string | null; + product: string | null; + platform: string | null; + isTranscode: boolean; + videoDecision: "directplay" | "copy" | "transcode" | null; + audioDecision: "directplay" | "copy" | "transcode" | null; + bitrate: number | null; + resolution: string | null; + user: { + id: string; + username: string; + thumbUrl: string | null; + avatarUrl: string | null; + }; +} + +export interface TracearrHistoryResponse { + data: TracearrHistorySession[]; + meta: { + total: number; + page: number; + pageSize: number; + }; +} + +export interface TracearrDashboardData { + stats: TracearrStatsResponse; + streams: TracearrStreamsResponse; + violations: TracearrViolationsResponse | null; + recentActivity: TracearrHistoryResponse | null; +} diff --git a/packages/integrations/src/truenas/truenas-integration.ts b/packages/integrations/src/truenas/truenas-integration.ts index 4ff38d819..a712bc076 100644 --- a/packages/integrations/src/truenas/truenas-integration.ts +++ b/packages/integrations/src/truenas/truenas-integration.ts @@ -126,11 +126,28 @@ export class TrueNasIntegration extends Integration implements ISystemHealthMoni }, ]); const result = await poolSchema.parseAsync(response); + // Offline / exported pools have null values for allocated, size and free, so we filter them out + // See https://github.com/homarr-labs/homarr/issues/5194 + const activePools = result + .map((pool) => { + if (pool.allocated !== null && pool.size !== null && pool.free !== null) { + return { + ...pool, + allocated: pool.allocated, + size: pool.size, + free: pool.free, + }; + } + + return null; + }) + .filter((pool) => pool !== null); logger.debug("Retrieved pools", { url: this.wsUrl(), - count: result.length, + totalCount: result.length, + activeCount: activePools.length, }); - return result; + return activePools; } /** @@ -388,9 +405,11 @@ const poolSchema = z.array( name: z.string(), status: z.string(), healthy: z.boolean(), - free: z.number().min(0), - size: z.number(), - allocated: z.number(), + // free, size and allocated are null when the pool is offline or exported + // see https://github.com/homarr-labs/homarr/issues/5194 + free: z.number().min(0).nullable(), + size: z.number().nullable(), + allocated: z.number().nullable(), }), ); diff --git a/packages/integrations/src/types.ts b/packages/integrations/src/types.ts index d4be3a9c2..debdd041b 100644 --- a/packages/integrations/src/types.ts +++ b/packages/integrations/src/types.ts @@ -12,3 +12,4 @@ export * from "./unifi-controller/unifi-controller-types"; export * from "./opnsense/opnsense-types"; export * from "./interfaces/media-releases"; export * from "./coolify/coolify-types"; +export * from "./tracearr/tracearr-types"; diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 1b532d1c9..beb37dcb0 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -33,19 +33,19 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^8.3.13", - "@tabler/icons-react": "^3.36.1", + "@mantine/core": "^8.3.16", + "@tabler/icons-react": "^3.40.0", "dayjs": "^1.11.19", - "next": "16.1.4", - "react": "19.2.3", - "react-dom": "19.2.3", + "next": "16.1.6", + "react": "19.2.4", + "react-dom": "19.2.4", "zod": "^4.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.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/modals/package.json b/packages/modals/package.json index 90cf37a24..cff5fac17 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -24,15 +24,15 @@ "dependencies": { "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^8.3.13", - "@mantine/hooks": "^8.3.13", - "react": "19.2.3" + "@mantine/core": "^8.3.16", + "@mantine/hooks": "^8.3.16", + "react": "19.2.4" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 19a99f6b5..08141e88f 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -24,14 +24,14 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/ui": "workspace:^0.1.0", - "@mantine/notifications": "^8.3.13", - "@tabler/icons-react": "^3.36.1" + "@mantine/notifications": "^8.3.16", + "@tabler/icons-react": "^3.40.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/old-import/package.json b/packages/old-import/package.json index dd21a50c5..9b488c0bc 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -37,12 +37,12 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^8.3.13", - "@mantine/hooks": "^8.3.13", + "@mantine/core": "^8.3.16", + "@mantine/hooks": "^8.3.16", "adm-zip": "0.5.16", - "next": "16.1.4", - "react": "19.2.3", - "react-dom": "19.2.3", + "next": "16.1.6", + "react": "19.2.4", + "react-dom": "19.2.4", "superjson": "2.2.6", "zod": "^4.2.1", "zod-form-data": "^3.0.1" @@ -52,7 +52,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/adm-zip": "0.5.7", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/old-schema/package.json b/packages/old-schema/package.json index ddaa86717..0c3b01d24 100644 --- a/packages/old-schema/package.json +++ b/packages/old-schema/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/ping/package.json b/packages/ping/package.json index c73010fdc..a345896fc 100644 --- a/packages/ping/package.json +++ b/packages/ping/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/redis/package.json b/packages/redis/package.json index c9fded548..67166f609 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -26,14 +26,14 @@ "@homarr/core": "workspace:^", "@homarr/db": "workspace:^", "@homarr/definitions": "workspace:^", - "ioredis": "5.9.2", + "ioredis": "5.10.0", "superjson": "2.2.6" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index 9caed18e1..66e0677cb 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -40,7 +40,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/request-handler/src/immich.ts b/packages/request-handler/src/immich.ts new file mode 100644 index 000000000..e95cb32b8 --- /dev/null +++ b/packages/request-handler/src/immich.ts @@ -0,0 +1,50 @@ +import dayjs from "dayjs"; + +import type { IntegrationKindByCategory } from "@homarr/definitions"; +import { createIntegrationAsync } from "@homarr/integrations"; +import type { ImmichAlbum, ImmichServerStats } from "@homarr/integrations"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const immichStatsRequestHandler = createCachedIntegrationRequestHandler< + ImmichServerStats, + IntegrationKindByCategory<"photoService">, + Record +>({ + async requestAsync(integration) { + const integrationInstance = await createIntegrationAsync(integration); + return await integrationInstance.getServerStatsAsync(); + }, + cacheDuration: dayjs.duration(15, "minute"), + queryKey: "immich-server-stats", +}); + +export const immichAlbumsRequestHandler = createCachedIntegrationRequestHandler< + { + id: string; + albumName: string; + assetCount: number; + }[], + IntegrationKindByCategory<"photoService">, + Record +>({ + async requestAsync(integration) { + const integrationInstance = await createIntegrationAsync(integration); + return await integrationInstance.getAlbumsAsync(); + }, + cacheDuration: dayjs.duration(15, "minute"), + queryKey: "immich-albums", +}); + +export const immichAlbumRequestHandler = createCachedIntegrationRequestHandler< + ImmichAlbum, + IntegrationKindByCategory<"photoService">, + { albumId: string } +>({ + async requestAsync(integration, input) { + const integrationInstance = await createIntegrationAsync(integration); + return await integrationInstance.getAlbumAsync(input.albumId); + }, + cacheDuration: dayjs.duration(15, "minute"), + queryKey: "immich-album", +}); diff --git a/packages/request-handler/src/rss-feeds.ts b/packages/request-handler/src/rss-feeds.ts index e1c9f68c5..eb13caa88 100644 --- a/packages/request-handler/src/rss-feeds.ts +++ b/packages/request-handler/src/rss-feeds.ts @@ -108,7 +108,7 @@ const getFirstMediaProperty = (feedObject: object) => { * We extend the feed with custom properties. * This interface adds properties on top of the default ones. */ -interface ExtendedFeedEntry extends FeedEntry { +export interface ExtendedFeedEntry extends FeedEntry { enclosure?: string; } diff --git a/packages/request-handler/src/tracearr.ts b/packages/request-handler/src/tracearr.ts new file mode 100644 index 000000000..8f593ac03 --- /dev/null +++ b/packages/request-handler/src/tracearr.ts @@ -0,0 +1,19 @@ +import dayjs from "dayjs"; + +import { createIntegrationAsync } from "@homarr/integrations"; +import type { TracearrDashboardData } from "@homarr/integrations/types"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const tracearrRequestHandler = createCachedIntegrationRequestHandler< + TracearrDashboardData, + "tracearr", + Record +>({ + async requestAsync(integration, _input) { + const integrationInstance = await createIntegrationAsync(integration); + return await integrationInstance.getDashboardDataAsync(); + }, + cacheDuration: dayjs.duration(5, "seconds"), + queryKey: "tracearrDashboard", +}); diff --git a/packages/server-settings/package.json b/packages/server-settings/package.json index c1b4ee200..473dd685f 100644 --- a/packages/server-settings/package.json +++ b/packages/server-settings/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/settings/package.json b/packages/settings/package.json index 8e80a8c32..a6e55954f 100644 --- a/packages/settings/package.json +++ b/packages/settings/package.json @@ -25,16 +25,16 @@ "dependencies": { "@homarr/db": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", - "@mantine/dates": "^8.3.13", - "next": "16.1.4", - "react": "19.2.3", - "react-dom": "19.2.3" + "@mantine/dates": "^8.3.16", + "next": "16.1.6", + "react": "19.2.4", + "react-dom": "19.2.4" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index ba61c6359..4a573d3ab 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -33,21 +33,21 @@ "@homarr/settings": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^8.3.13", - "@mantine/hooks": "^8.3.13", - "@mantine/spotlight": "^8.3.13", - "@tabler/icons-react": "^3.36.1", - "jotai": "^2.16.2", - "next": "16.1.4", - "react": "19.2.3", - "react-dom": "19.2.3", + "@mantine/core": "^8.3.16", + "@mantine/hooks": "^8.3.16", + "@mantine/spotlight": "^8.3.16", + "@tabler/icons-react": "^3.40.0", + "jotai": "^2.18.1", + "next": "16.1.6", + "react": "19.2.4", + "react-dom": "19.2.4", "use-deep-compare-effect": "^1.8.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/translation/package.json b/packages/translation/package.json index a56fa6c51..c1ba92057 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -32,16 +32,16 @@ "dayjs": "^1.11.19", "deepmerge": "4.3.1", "mantine-react-table": "2.0.0-beta.9", - "next": "16.1.4", - "next-intl": "4.7.0", - "react": "19.2.3", - "react-dom": "19.2.3" + "next": "16.1.6", + "next-intl": "4.8.3", + "react": "19.2.4", + "react-dom": "19.2.4" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/translation/src/lang/ca.json b/packages/translation/src/lang/ca.json index 777f40f2d..978817e9b 100644 --- a/packages/translation/src/lang/ca.json +++ b/packages/translation/src/lang/ca.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index 7a4a4cea1..33443c465 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -1138,9 +1138,9 @@ "dangerZone": "危险", "noResults": "未找到结果", "unsavedChanges": "你有未保存的更改 !", - "servers": "", - "applications": "", - "services": "", + "servers": "服务", + "applications": "应用", + "services": "服务", "preview": { "show": "显示预览", "hide": "隐藏预览" @@ -1964,36 +1964,91 @@ } }, "coolify": { - "name": "", - "description": "", + "name": "Coolify", + "description": "您的 Coolify 实例及其服务器和应用一览", "option": { "showServers": { - "label": "" + "label": "显示服务" }, "showApplications": { - "label": "" + "label": "显示应用程序" }, "showServices": { - "label": "" + "label": "显示服务" } }, "empty": { - "servers": "", - "applications": "", - "services": "" + "servers": "未找到服务", + "applications": "未找到应用程序", + "services": "未找到服务" }, "footer": { - "updated": "" + "updated": "已更新 {when}" }, + "error": { + "noIntegration": "未配置 Coolify 集成", + "internalServerError": "获取 Coolify 数据失败" + }, + "server": { + "buildServer": "编译" + }, + "instances": { + "title": "实例" + } + }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", "error": { "noIntegration": "", "internalServerError": "" - }, - "server": { - "buildServer": "" - }, - "instances": { - "title": "" } }, "common": { @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "下载客户端", "description": "允许您查看和管理来自Torrent 和 Usenet 客户端的下载。", @@ -2646,32 +2747,32 @@ } }, "systemDisks": { - "name": "", - "description": "", + "name": "系统磁盘", + "description": "您系统的磁盘使用", "option": { "showTemperatureIfAvailable": { - "label": "" + "label": "如果可用则显示温度" }, "displayMode": { - "label": "", + "label": "显示模式", "option": { "percentage": { - "label": "" + "label": "百分比 (例如76%)" }, "absolute": { - "label": "" + "label": "绝对值 (例如,800GB / 1TB)" }, "free": { - "label": "" + "label": "空闲空间百分比(例如24%空闲)" } } }, "showBackgroundBar": { - "label": "" + "label": "显示背景使用栏" } }, "status": { - "unhealthy": "" + "unhealthy": "异常" } } }, @@ -3305,7 +3406,7 @@ "title": "分析", "general": { "title": "发送匿名分析", - "text": "Homarr 将使用开源软件 Umami 发送匿名分析。它从不收集任何个人信息,因此完全符合 GDPR 和 CCPA 要求。我们鼓励您启用分析,因为它可以帮助我们的开源团队识别问题并确定待办事项的优先级。" + "text": "Homarr 将使用开源软件 Umami 发送匿名分析数据。启用后,我们会收集:Homarr 版本、数据库类型(MySQL/PostgreSQL/SQLite)、Docker/Kubernetes 状态、已启用的身份验证方法以及各项功能的数量。所有数据均为匿名且汇总收集——绝不收集任何个人信息、URL、名称或可识别数据。这有助于我们的开源团队了解使用模式并确定开发优先级。" }, "widgetData": { "title": "组件数据", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "天气" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/cr.json b/packages/translation/src/lang/cr.json index f4648eae2..c6a8b4da3 100644 --- a/packages/translation/src/lang/cr.json +++ b/packages/translation/src/lang/cr.json @@ -1996,6 +1996,61 @@ "title": "crwdns3876:0crwdne3876:0" } }, + "tracearr": { + "name": "crwdns3928:0crwdne3928:0", + "description": "crwdns3930:0crwdne3930:0", + "option": { + "showStreams": { + "label": "crwdns3932:0crwdne3932:0" + }, + "showStats": { + "label": "crwdns3934:0crwdne3934:0" + }, + "showRecentActivity": { + "label": "crwdns3936:0crwdne3936:0" + }, + "showViolations": { + "label": "crwdns3938:0crwdne3938:0" + } + }, + "stats": { + "activeStreams": "crwdns3940:0crwdne3940:0", + "totalUsers": "crwdns3942:0crwdne3942:0", + "transcodes": "crwdns3944:0crwdne3944:0", + "bandwidth": "crwdns3946:0crwdne3946:0" + }, + "streams": { + "empty": "crwdns3948:0crwdne3948:0", + "user": "crwdns3950:0crwdne3950:0", + "media": "crwdns3952:0crwdne3952:0", + "state": "crwdns3954:0crwdne3954:0", + "quality": "crwdns3956:0crwdne3956:0", + "device": "crwdns3958:0crwdne3958:0", + "progress": "crwdns3960:0crwdne3960:0", + "videoDecision": { + "directPlay": "crwdns3962:0crwdne3962:0", + "transcode": "crwdns3964:0crwdne3964:0", + "directStream": "crwdns3966:0crwdne3966:0" + } + }, + "recentActivity": { + "title": "crwdns3968:0crwdne3968:0", + "empty": "crwdns3970:0crwdne3970:0", + "watched": "crwdns3972:0crwdne3972:0", + "partial": "crwdns3974:0crwdne3974:0" + }, + "violations": { + "title": "crwdns3976:0crwdne3976:0", + "empty": "crwdns3978:0crwdne3978:0", + "rule": "crwdns3980:0crwdne3980:0", + "user": "crwdns3982:0crwdne3982:0" + }, + "noSectionsEnabled": "crwdns3984:0crwdne3984:0", + "error": { + "noIntegration": "crwdns3986:0crwdne3986:0", + "internalServerError": "crwdns3988:0crwdne3988:0" + } + }, "common": { "location": { "query": "crwdns1110:0crwdne1110:0", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "crwdns3880:0crwdne3880:0", + "description": "crwdns3882:0crwdne3882:0", + "option": { + "showUsers": { + "label": "crwdns3884:0crwdne3884:0", + "description": "crwdns3886:0crwdne3886:0" + }, + "showPhotos": { + "label": "crwdns3888:0crwdne3888:0", + "description": "crwdns3890:0crwdne3890:0" + }, + "showVideos": { + "label": "crwdns3892:0crwdne3892:0", + "description": "crwdns3894:0crwdne3894:0" + }, + "showStorage": { + "label": "crwdns3896:0crwdne3896:0", + "description": "crwdns3898:0crwdne3898:0" + } + }, + "users": "crwdns3900:0crwdne3900:0", + "photos": "crwdns3902:0crwdne3902:0", + "videos": "crwdns3904:0crwdne3904:0", + "storage": "crwdns3906:0crwdne3906:0" + }, + "immich-albumCarousel": { + "name": "crwdns3908:0crwdne3908:0", + "option": { + "albumId": { + "label": "crwdns3910:0crwdne3910:0", + "description": "crwdns3912:0crwdne3912:0" + }, + "rotationIntervalSeconds": { + "label": "crwdns3914:0crwdne3914:0", + "description": "crwdns3916:0crwdne3916:0" + }, + "showPhotoInfo": { + "label": "crwdns3918:0crwdne3918:0", + "description": "crwdns3920:0crwdne3920:0" + } + }, + "description": "crwdns3922:0crwdne3922:0", + "noAlbumSelected": "crwdns3924:0crwdne3924:0", + "noPhotos": "crwdns3926:0crwdne3926:0" + }, "downloads": { "name": "crwdns1170:0crwdne1170:0", "description": "crwdns1172:0crwdne1172:0", @@ -3305,7 +3406,7 @@ "title": "crwdns1764:0crwdne1764:0", "general": { "title": "crwdns1766:0crwdne1766:0", - "text": "crwdns1768:0crwdne1768:0" + "text": "crwdns3878:0crwdne3878:0" }, "widgetData": { "title": "crwdns1770:0crwdne1770:0", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "crwdns3724:0crwdne3724:0" + }, + "tracearr": { + "label": "crwdns3990:0crwdne3990:0" } }, "interval": { diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index 0b01c54fc..124de13bb 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index 2319be170..df562d1ff 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "By / Postnummer", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "Download Klient", "description": "Giver dig mulighed for at se og administrere dine downloads fra både Torrent og Usenet klienter.", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "Vejr" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/de-CH.json b/packages/translation/src/lang/de-CH.json index c7f7b6273..62b300aff 100644 --- a/packages/translation/src/lang/de-CH.json +++ b/packages/translation/src/lang/de-CH.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "Stadt / Postleitzahl", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "Ermöglicht es Ihnen, Ihre Downloads sowohl von Torrent- als auch von Usenet-Clients anzusehen und zu verwalten.", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index fbfffa687..e5a34d96f 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -1138,9 +1138,9 @@ "dangerZone": "Gefahrenbereich", "noResults": "Die Suche ergab keine Treffer", "unsavedChanges": "Sie haben ungespeicherte Änderungen!", - "servers": "", - "applications": "", - "services": "", + "servers": "Server", + "applications": "Apps", + "services": "Dienste", "preview": { "show": "Vorschau ansehen", "hide": "Vorschau ausblenden" @@ -1964,36 +1964,91 @@ } }, "coolify": { - "name": "", - "description": "", + "name": "Coolify", + "description": "Übersicht Ihrer Coolify-Instanz mit Servern und Anwendungen", "option": { "showServers": { - "label": "" + "label": "Server anzeigen" }, "showApplications": { - "label": "" + "label": "Anwendungen anzeigen" }, "showServices": { - "label": "" + "label": "Dienste anzeigen" } }, "empty": { - "servers": "", - "applications": "", - "services": "" + "servers": "Keine Server gefunden", + "applications": "Keine Anwendungen gefunden", + "services": "Keine Dienste gefunden" }, "footer": { - "updated": "" + "updated": "Aktualisiert {when}" }, + "error": { + "noIntegration": "Keine Coolify-Integration konfiguriert", + "internalServerError": "Fehler beim Abrufen der Coolify-Daten" + }, + "server": { + "buildServer": "Version" + }, + "instances": { + "title": "Instanzen" + } + }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", "error": { "noIntegration": "", "internalServerError": "" - }, - "server": { - "buildServer": "" - }, - "instances": { - "title": "" } }, "common": { @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "Download Client", "description": "Ermöglicht es Ihnen, Ihre Downloads sowohl von Torrent- als auch von Usenet-Clients anzusehen und zu verwalten.", @@ -2646,32 +2747,32 @@ } }, "systemDisks": { - "name": "", - "description": "", + "name": "Systemdatenträger", + "description": "Festplattennutzung Ihres Systems", "option": { "showTemperatureIfAvailable": { - "label": "" + "label": "Zeige Temperatur, falls verfügbar" }, "displayMode": { - "label": "", + "label": "Anzeigemodus", "option": { "percentage": { - "label": "" + "label": "Prozentsatz (z.B. 76%)" }, "absolute": { - "label": "" + "label": "Absolute Werte (z.B. 800GB / 1TB)" }, "free": { - "label": "" + "label": "Prozentsatz freier Speicherplatz (z. B. 24% frei)" } } }, "showBackgroundBar": { - "label": "" + "label": "Zeige Hintergrundnutzungsleiste" } }, "status": { - "unhealthy": "" + "unhealthy": "Fehlerhaft" } } }, @@ -3305,7 +3406,7 @@ "title": "Nutzungsdaten", "general": { "title": "Anonymisierte Nutzungsdaten senden", - "text": "Homarr schickt anonymisierte Nutzungsdaten mit der Open-Source-Software Umami. Es sammelt zu keinem Zeitpunkt personenbezogene Daten und ist daher vollständig DPR & CCPA konform. Wir empfehlen diese Nutzungsdaten zu aktivieren, da es unserem Open-Source-Team hilft Probleme zu identifizieren und unserem Backlog ermöglicht Priorität einzuräumen." + "text": "Homarr sendet anonymisierte Analysen mit der Open-Source-Software Umami. Wenn aktiviert, sammeln wir die Homarr-Version, den Datenbanktyp (MySQL/PostgreSQL/SQLite), den Docker/Kubernetes Status, die Authentifizierungsmethoden und die Anzahl der einzelnen Features. Alle Daten sind anonym und aggregiert - es werden keine persönlichen Informationen, URLs, Namen oder identifizierbare Daten gesammelt. Dies hilft unserem Open-Source-Team, Nutzungsmuster zu verstehen und der Entwicklung Priorität einzuräumen." }, "widgetData": { "title": "Widget Daten", @@ -3360,10 +3461,10 @@ } }, "user": { - "title": "", + "title": "Benutzer", "enableGravatar": { - "label": "", - "description": "" + "label": "Gravatar aktivieren", + "description": "Falls kein benutzerdefinierter Avatar gesetzt ist und eine E-Mail konfiguriert wurde, ist ein nutzen der Avatare von Libravatar/Gravatar möglich" } }, "search": { @@ -3472,6 +3573,9 @@ }, "weather": { "label": "Wetter" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index 1dca35730..ea7862559 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/en-gb.json b/packages/translation/src/lang/en-gb.json index 1ad6ede28..ae9fbfe1f 100644 --- a/packages/translation/src/lang/en-gb.json +++ b/packages/translation/src/lang/en-gb.json @@ -836,19 +836,19 @@ "title": "Request error", "description": { "connection": { - "hostUnreachable": "", - "networkUnreachable": "", - "refused": "", - "reset": "" + "hostUnreachable": "The server could not be reached. This usually means the host is offline or unreachable from your network.", + "networkUnreachable": "The network is unreachable. Please check your Internet connection or network configuration.", + "refused": "The server refused the connection. It may not be running or is rejecting requests on the specified port.", + "reset": "The connection was unexpectedly closed by the server. This can happen if the server is unstable or restarted." }, "dns": { - "notFound": "", - "timeout": "", - "noAnswer": "" + "notFound": "The server address could not be found. Please check the URL for typos or invalid domain names.", + "timeout": "DNS lookup timed out. This may be a temporary issue—please try again in a few moments.", + "noAnswer": "The DNS server didn't return a valid response. The domain may exist but has no valid records." }, "timeout": { - "aborted": "", - "timeout": "" + "aborted": "The request was aborted before it could complete. This might be due to a user action or system timeout.", + "timeout": "The request took too long to complete and was timed out. Check your network or try again later." } } } @@ -920,8 +920,8 @@ "message": "The path is incorrect. Please double-check the URL" }, "tooManyRequests": { - "title": "", - "message": "" + "title": "Too many requests in a given time", + "message": "There were too many requests. You are likely being rate-limited or rejected by the target system" } } }, @@ -963,36 +963,36 @@ "newLabel": "New realm" }, "personalAccessToken": { - "label": "", - "newLabel": "" + "label": "Personal Access Token", + "newLabel": "New Personal Access Token" }, "topic": { - "label": "", - "newLabel": "" + "label": "Topic", + "newLabel": "New topic" }, "url": { - "label": "", - "newLabel": "" + "label": "URL", + "newLabel": "New URL" }, "opnsenseApiKey": { - "label": "", - "newLabel": "" + "label": "API Key (Key)", + "newLabel": "New API Key (Key)" }, "opnsenseApiSecret": { - "label": "", - "newLabel": "" + "label": "API Key (Secret)", + "newLabel": "New API Key (Secret)" }, "githubAppId": { - "label": "", - "newLabel": "" + "label": "App Id", + "newLabel": "New App Id" }, "githubInstallationId": { - "label": "", - "newLabel": "" + "label": "Installation Id", + "newLabel": "New Installation Id" }, "privateKey": { - "label": "", - "newLabel": "" + "label": "Private key", + "newLabel": "New private key" } } }, @@ -1044,14 +1044,14 @@ } }, "common": { - "success": "", + "success": "Success", "beta": "Beta", "error": "Alpha", "action": { "add": "Add", "apply": "Apply", "backToOverview": "Back to overview", - "change": "", + "change": "Change", "create": "Create", "createAnother": "Create and start over", "edit": "Edit", @@ -1063,7 +1063,7 @@ "cancel": "Cancel", "delete": "Delete", "discard": "Discard", - "close": "", + "close": "Close", "confirm": "Confirm", "continue": "Continue", "previous": "Previous", @@ -1138,9 +1138,9 @@ "dangerZone": "Danger zone", "noResults": "No results have been found", "unsavedChanges": "You have unsaved changes!", - "servers": "", - "applications": "", - "services": "", + "servers": "Servers", + "applications": "Apps", + "services": "Services", "preview": { "show": "Show a preview", "hide": "Hide the preview" @@ -1177,8 +1177,8 @@ }, "unit": { "speed": { - "kilometersPerHour": "", - "milesPerHour": "" + "kilometersPerHour": "km/h", + "milesPerHour": "mph" } } }, @@ -1193,7 +1193,7 @@ "label": "Title" }, "customCssClasses": { - "label": "" + "label": "Custom CSS classes" }, "borderColor": { "label": "Border colour" @@ -1226,75 +1226,75 @@ }, "remove": { "title": "Remove category", - "message": "" + "message": "Are you sure you want to remove the category {name}?" }, "edit": { - "title": "", - "submit": "" + "title": "Rename category", + "submit": "Rename category" }, "menu": { "label": { - "create": "", - "changePosition": "" + "create": "New category", + "changePosition": "Change position" } }, "openAllInNewTabs": { - "title": "", - "text": "" + "title": "Open all in tabs", + "text": "Some browsers may block the bulk-opening of tabs for security reasons. Homarr was unable to open all windows, because your browser blocked this action. Please allow \"Open pop-up windows\" and re-try." } } }, "item": { "action": { - "create": "", - "import": "", - "edit": "", - "moveResize": "", - "duplicate": "", - "remove": "" + "create": "New item", + "import": "Import item", + "edit": "Edit item", + "moveResize": "Move / resize item", + "duplicate": "Duplicate item", + "remove": "Remove item" }, "menu": { "label": { - "settings": "" + "settings": "Settings" } }, "create": { - "title": "", - "search": "", - "addToBoard": "" + "title": "Choose item to add", + "search": "Filter items", + "addToBoard": "Add to board" }, "moveResize": { - "title": "", + "title": "Move / resize item", "field": { "width": { - "label": "" + "label": "Width" }, "height": { - "label": "" + "label": "Height" }, "xOffset": { - "label": "" + "label": "X offset" }, "yOffset": { - "label": "" + "label": "Y offset" } } }, "edit": { - "title": "", + "title": "Edit item", "advancedOptions": { - "label": "", - "title": "" + "label": "Advanced options", + "title": "Advanced item options" }, "field": { "integrations": { - "label": "" + "label": "Integrations" }, "title": { - "label": "" + "label": "Title" }, "customCssClasses": { - "label": "" + "label": "Custom CSS classes" }, "borderColor": { "label": "Border colour" @@ -1302,110 +1302,110 @@ } }, "remove": { - "title": "", - "message": "" + "title": "Remove item", + "message": "Are you sure you want to remove this item?" } }, "widget": { "app": { - "name": "", - "description": "", + "name": "App", + "description": "Embeds an app into the board.", "option": { "appId": { - "label": "" + "label": "Choose app" }, "openInNewTab": { - "label": "" + "label": "Open in new tab" }, "showTitle": { - "label": "" + "label": "Show app name" }, "pingEnabled": { - "label": "" + "label": "Enable status check" }, "layout": { - "label": "", + "label": "Layout", "option": { - "row": "", - "row-reverse": "", - "column": "", - "column-reverse": "" + "row": "Horizontal", + "row-reverse": "Horizontal (reversed)", + "column": "Vertical", + "column-reverse": "Vertical (reversed)" } }, "descriptionDisplayMode": { - "label": "", - "description": "", + "label": "Description display mode", + "description": "Choose how to display the app description", "option": { - "normal": "", - "tooltip": "", - "hidden": "" + "normal": "Within widget", + "tooltip": "As tooltip", + "hidden": "Hidden" } } }, "error": { "notFound": { - "label": "", - "tooltip": "" + "label": "No app", + "tooltip": "You have no valid app selected" } } }, "bookmarks": { - "name": "", - "description": "", + "name": "Bookmarks", + "description": "Displays multiple app links", "option": { "title": { - "label": "" + "label": "Title" }, "layout": { - "label": "", + "label": "Layout", "option": { "row": { - "label": "" + "label": "Horizontal" }, "column": { - "label": "" + "label": "Vertical" }, "grid": { - "label": "" + "label": "Grid" }, "gridHorizontal": { - "label": "" + "label": "Grid horizontal" } } }, "hideTitle": { - "label": "" + "label": "Hide title" }, "hideIcon": { - "label": "" + "label": "Hide icons" }, "hideHostname": { - "label": "" + "label": "Hide hostnames" }, "openNewTab": { - "label": "" + "label": "Open in new tab" }, "items": { - "label": "", - "add": "" + "label": "Bookmarks", + "add": "Add bookmark" } } }, "dnsHoleSummary": { - "name": "", - "description": "", + "name": "DNS Hole Summary", + "description": "Displays the summary of your DNS Hole", "option": { "layout": { - "label": "", + "label": "Layout", "option": { "row": { - "label": "" + "label": "Horizontal" }, "column": { - "label": "" + "label": "Vertical" }, "grid": { - "label": "" + "label": "Grid" } } }, @@ -1414,279 +1414,279 @@ } }, "error": { - "internalServerError": "", - "integrationsDisconnected": "" + "internalServerError": "Failed to fetch DNS Hole Summary", + "integrationsDisconnected": "No data available, all integrations disconnected" }, "data": { - "adsBlockedToday": "", - "adsBlockedTodayPercentage": "", - "dnsQueriesToday": "", - "domainsBeingBlocked": "" + "adsBlockedToday": "Blocked today", + "adsBlockedTodayPercentage": "Blocked today", + "dnsQueriesToday": "Queries today", + "domainsBeingBlocked": "Domains on blocklist" }, - "domainsTooltip": "" + "domainsTooltip": "Due to multiple integrations Homarr can't calculate the exact number of domains being blocked" }, "dnsHoleControls": { - "name": "", - "description": "", + "name": "DNS Hole Controls", + "description": "Control PiHole or AdGuard from your dashboard", "option": { "layout": { - "label": "", + "label": "Layout", "option": { "row": { - "label": "" + "label": "Horizontal" }, "column": { - "label": "" + "label": "Vertical" }, "grid": { - "label": "" + "label": "Grid" } } }, "showToggleAllButtons": { - "label": "" + "label": "Show Toggle All Buttons" } }, "error": { - "internalServerError": "" + "internalServerError": "Failed to control DNS Hole" }, "controls": { - "enableAll": "", - "disableAll": "", - "setTimer": "", - "set": "", - "enabled": "", - "disabled": "", - "processing": "", - "disconnected": "", - "hours": "", - "minutes": "", - "unlimited": "" + "enableAll": "Enable All", + "disableAll": "Disable All", + "setTimer": "Set Timer", + "set": "Set", + "enabled": "Enabled", + "disabled": "Disabled", + "processing": "Processing", + "disconnected": "Disconnected", + "hours": "Hours", + "minutes": "Minutes", + "unlimited": "Leave blank to unlimited" } }, "clock": { - "name": "", - "description": "", + "name": "Date and time", + "description": "Displays the current date and time.", "option": { "customTitleToggle": { - "label": "", - "description": "" + "label": "Custom Title/City display", + "description": "Show off a custom title or the name of the city/country on top of the clock." }, "customTitle": { - "label": "" + "label": "Title" }, "is24HourFormat": { - "label": "", - "description": "" + "label": "24-hour format", + "description": "Use 24-hour format instead of 12-hour format" }, "showSeconds": { - "label": "" + "label": "Display seconds" }, "useCustomTimezone": { "label": " " }, "timezone": { - "label": "", - "description": "" + "label": "Time zone", + "description": "Choose the time zone following the IANA standard" }, "showDate": { - "label": "" + "label": "Show the date" }, "dateFormat": { - "label": "", - "description": "" + "label": "Date Format", + "description": "How the date should look like" }, "customTimeFormat": { - "label": "", - "description": "" + "label": "Custom time format", + "description": "Use ISO 8601 to format time (this will override other options)" }, "customDateFormat": { - "label": "", - "description": "" + "label": "Custom date format", + "description": "Use ISO 8601 to format date (this will override other options)" } } }, "minecraftServerStatus": { - "name": "", - "description": "", + "name": "Minecraft Server Status", + "description": "Displays the status of a Minecraft server", "option": { "title": { - "label": "" + "label": "Title" }, "domain": { - "label": "" + "label": "Server address" }, "isBedrockServer": { - "label": "" + "label": "Bedrock server" } }, "status": { - "online": "", - "offline": "" + "online": "Online", + "offline": "Offline" } }, "notebook": { - "name": "", - "description": "", + "name": "Notebook", + "description": "A simple notebook widget that supports markdown", "option": { "showToolbar": { - "label": "" + "label": "Show the toolbar to help you write markdown" }, "allowReadOnlyCheck": { - "label": "" + "label": "Allow check in read only mode" }, "content": { - "label": "" + "label": "The content of the notebook" } }, "controls": { - "bold": "", - "italic": "", - "strikethrough": "", - "underline": "", + "bold": "Bold", + "italic": "Italic", + "strikethrough": "Strikethrough", + "underline": "Underline", "colorText": "Colour text", "colorHighlight": "Coloured highlight text", - "code": "", - "clear": "", - "heading": "", - "align": "", - "blockquote": "", - "horizontalLine": "", - "bulletList": "", - "orderedList": "", - "checkList": "", - "increaseIndent": "", - "decreaseIndent": "", - "link": "", - "unlink": "", - "image": "", - "addTable": "", - "deleteTable": "", + "code": "Code", + "clear": "Clear formatting", + "heading": "Heading {level}", + "align": "Align text: {position}", + "blockquote": "Blockquote", + "horizontalLine": "Horizontal line", + "bulletList": "Bullet list", + "orderedList": "Ordered list", + "checkList": "Check list", + "increaseIndent": "Increase Indent", + "decreaseIndent": "Decrease Indent", + "link": "Link", + "unlink": "Remove link", + "image": "Embed Image", + "addTable": "Add table", + "deleteTable": "Delete Table", "colorCell": "Colour cell", - "mergeCell": "", - "addColumnLeft": "", - "addColumnRight": "", - "deleteColumn": "", - "addRowTop": "", - "addRowBelow": "", - "deleteRow": "" + "mergeCell": "Toggle cell merging", + "addColumnLeft": "Add column before", + "addColumnRight": "Add column after", + "deleteColumn": "Delete column", + "addRowTop": "Add row before", + "addRowBelow": "Add row after", + "deleteRow": "Delete row" }, "align": { - "left": "", - "center": "", - "right": "" + "left": "Left", + "center": "Centre", + "right": "Right" }, "popover": { "clearColor": "Clear colour", - "source": "", - "widthPlaceholder": "", - "columns": "", - "rows": "", - "width": "", - "height": "" + "source": "Source", + "widthPlaceholder": "Value in % or pixels", + "columns": "Columns", + "rows": "Rows", + "width": "Width", + "height": "Height" }, - "placeholder": "", + "placeholder": "Start writing your notes", "dismiss": { - "title": "", - "message": "", + "title": "Dismiss changes?", + "message": "You have unsaved changes in your notebook. Are you sure you want to discard them?", "action": { - "discard": "", - "keepEditing": "" + "discard": "Discard changes", + "keepEditing": "Keep editing" } } }, "iframe": { - "name": "", - "description": "", + "name": "iFrame", + "description": "Embed any content from the Internet. Some websites may restrict access.", "option": { "embedUrl": { - "label": "" + "label": "Embed URL" }, "allowFullScreen": { - "label": "" + "label": "Allow full screen" }, "allowTransparency": { - "label": "" + "label": "Allow transparency" }, "allowScrolling": { - "label": "" + "label": "Allow scrolling" }, "allowPayment": { - "label": "" + "label": "Allow payment" }, "allowAutoPlay": { - "label": "" + "label": "Allow auto play" }, "allowMicrophone": { - "label": "" + "label": "Allow microphone" }, "allowCamera": { - "label": "" + "label": "Allow camera" }, "allowGeolocation": { - "label": "" + "label": "Allow geolocation" } }, "error": { - "noUrl": "", - "unsupportedProtocol": "", - "noBrowerSupport": "" + "noUrl": "No iFrame URL provided", + "unsupportedProtocol": "The URL provided is using an unsupported protocol. Please use one of ({supportedProtocols})", + "noBrowerSupport": "Your Browser does not support iframes. Please update your browser." } }, "smartHome-entityState": { - "name": "", - "description": "", + "name": "Entity State", + "description": "Display the state of an entity and toggle it optionally", "option": { "entityId": { - "label": "" + "label": "Entity ID" }, "displayName": { - "label": "" + "label": "Display-name" }, "entityUnit": { - "label": "" + "label": "Entity Unit" }, "clickable": { - "label": "" + "label": "Clickable" } } }, "smartHome-executeAutomation": { - "name": "", - "description": "", + "name": "Execute Automation", + "description": "Trigger an automation with one click", "option": { "displayName": { - "label": "" + "label": "Display name" }, "automationId": { - "label": "" + "label": "Automation ID" } }, "spotlightAction": { - "run": "" + "run": "Run {name}" } }, "stockPrice": { - "name": "", - "description": "", + "name": "Stock Price", + "description": "Displays the current stock price of a company", "option": { "stock": { - "label": "" + "label": "Stock symbol" }, "timeRange": { - "label": "", + "label": "Time Range", "option": { "1d": { - "label": "" + "label": "1 Day" }, "5d": { - "label": "" + "label": "5 Day" }, "1mo": { - "label": "" + "label": "1 Month" }, "3mo": { - "label": "" + "label": "3 Months" }, "6mo": { "label": "" @@ -1816,9 +1816,9 @@ "fog": "", "drizzle": "", "freezingDrizzle": "", - "rain": "", - "freezingRain": "", - "snowFall": "", + "rain": "Rain", + "freezingRain": "Freezing rain", + "snowFall": "Snow fall", "snowGrains": "", "rainShowers": "", "snowShowers": "", @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { @@ -4311,103 +4415,103 @@ } }, "local": { - "title": "" + "title": "Local results" } } }, "page": { - "help": "", + "help": "Search for pages", "group": { "page": { - "title": "", + "title": "Pages", "option": { "manageHome": { - "label": "" + "label": "Manage home page" }, "manageBoard": { - "label": "" + "label": "Manage boards" }, "manageApp": { - "label": "" + "label": "Manage apps" }, "manageIntegration": { - "label": "" + "label": "Manage integrations" }, "manageSearchEngine": { - "label": "" + "label": "Manage search engines" }, "manageMedia": { - "label": "" + "label": "Manage medias" }, "manageUser": { - "label": "" + "label": "Manage users" }, "manageInvite": { - "label": "" + "label": "Manage invites" }, "manageGroup": { - "label": "" + "label": "Manage groups" }, "manageDocker": { - "label": "" + "label": "Manage docker" }, "manageApi": { - "label": "" + "label": "Swagger API" }, "manageLog": { - "label": "" + "label": "View logs" }, "manageTask": { - "label": "" + "label": "Manage tasks" }, "manageSettings": { - "label": "" + "label": "Global settings" }, "about": { - "label": "" + "label": "About" }, "homeBoard": { - "label": "" + "label": "Home board" }, "preferences": { - "label": "" + "label": "Your preferences" } } } } }, "userGroup": { - "help": "", + "help": "Search for users or groups", "group": { "user": { - "title": "", + "title": "Users", "children": { "action": { "detail": { - "label": "" + "label": "Show user details" } }, "detail": { - "title": "" + "title": "Select an action for the user" } } }, "group": { - "title": "", + "title": "Groups", "children": { "action": { "detail": { - "label": "" + "label": "Show group details" }, "manageMember": { - "label": "" + "label": "Manage members" }, "managePermission": { - "label": "" + "label": "Manage permissions" } }, "detail": { - "title": "" + "title": "Select an action for the group" } } } @@ -4415,72 +4519,72 @@ } }, "engine": { - "search": "", + "search": "Find a search engine", "field": { "name": { - "label": "" + "label": "Name" }, "short": { - "label": "" + "label": "Short" }, "urlTemplate": { - "label": "" + "label": "URL search template" }, "description": { - "label": "" + "label": "Description" } }, "page": { "list": { - "title": "", + "title": "Search engines", "noResults": { - "title": "", - "action": "" + "title": "There are no search engines yet", + "action": "Create your first search engine" }, - "interactive": "" + "interactive": "Interactive, uses an integration" }, "create": { - "title": "", + "title": "New search engine", "notification": { "success": { - "title": "", - "message": "" + "title": "Search engine created", + "message": "The search engine was created successfully" }, "error": { - "title": "", - "message": "" + "title": "Search engine not created", + "message": "The search engine could not be created" } } }, "edit": { - "title": "", + "title": "Edit search engine", "notification": { "success": { - "title": "", - "message": "" + "title": "Changes applied successfully", + "message": "The search engine was saved successfully" }, "error": { - "title": "", - "message": "" + "title": "Unable to apply changes", + "message": "The search engine could not be saved" } }, - "configControl": "", + "configControl": "Configuration", "searchEngineType": { - "generic": "", - "fromIntegration": "" + "generic": "Generic", + "fromIntegration": "From integration" } }, "delete": { - "title": "", - "message": "", + "title": "Delete search engine", + "message": "Are you sure you want to delete the search engine {name}?", "notification": { "success": { - "title": "", - "message": "" + "title": "Search engine deleted", + "message": "The search engine was deleted successfully" }, "error": { - "title": "", - "message": "" + "title": "Search engine not deleted", + "message": "The search engine could not be deleted" } } } @@ -4488,15 +4592,15 @@ "media": { "request": { "modal": { - "title": "", + "title": "Request \"{name}\"", "table": { "header": { - "season": "", - "episodes": "" + "season": "Season", + "episodes": "Episodes" } }, "button": { - "send": "" + "send": "Send request" } } } @@ -4506,44 +4610,44 @@ "certificate": { "field": { "hostname": { - "label": "" + "label": "Hostname" }, "subject": { - "label": "" + "label": "Subject" }, "issuer": { - "label": "" + "label": "Issuer" }, "validFrom": { - "label": "" + "label": "Valid from" }, "validTo": { - "label": "" + "label": "Valid to" }, "serialNumber": { - "label": "" + "label": "Serial number" }, "fingerprint": { - "label": "" + "label": "Fingerprint" } }, "page": { "list": { - "title": "", - "description": "", + "title": "Trusted certificates", + "description": "Used by Homarr to request data from integrations.", "noResults": { - "title": "" + "title": "There are no certificates yet" }, "invalid": { - "title": "", - "description": "" + "title": "Invalid certificate", + "description": "Failed to parse certificate" }, - "expires": "", - "toHostnames": "" + "expires": "Expires {when}", + "toHostnames": "Trusted hostnames" }, "hostnames": { - "title": "", - "description": "", + "title": "Trusted certificate hostnames", + "description": "Some certificates do not allow the specific domain Homarr uses to request them, because of this all trusted hostnames with their certificate thumbprints are used to bypass these restrictions.", "noResults": { "title": "There are no hostnames yet" }, diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 6fbbfa187..77d37810f 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1996,6 +1996,62 @@ "title": "Instances" } }, + "tracearr": { + "name": "Tracearr", + "description": "Enhanced media server monitoring with detailed stream and transcoding data", + "option": { + "showStreams": { + "label": "Show active streams" + }, + "showStats": { + "label": "Show stats summary" + }, + "showRecentActivity": { + "label": "Show recent activity" + }, + "showViolations": { + "label": "Show violations" + } + }, + "stats": { + "activeStreams": "Active Streams", + "totalUsers": "Total Users", + "transcodes": "Transcodes", + "bandwidth": "Bandwidth" + }, + "streams": { + "empty": "No active streams", + "user": "User", + "media": "Media", + "state": "State", + "quality": "Quality", + "device": "Device", + "progress": "Progress", + "videoDecision": { + "directPlay": "Direct Play", + "transcode": "Transcode", + "directStream": "Direct Stream" + } + }, + + "recentActivity": { + "title": "Recent Activity", + "empty": "No recent activity", + "watched": "Watched", + "partial": "Partial" + }, + "violations": { + "title": "Violations", + "empty": "No recent violations", + "rule": "Rule", + "user": "User" + }, + "noSectionsEnabled": "No sections enabled", + "error": { + "noIntegration": "No Tracearr integration configured", + "internalServerError": "Failed to fetch Tracearr data" + } + }, "common": { "location": { "query": "City / Postal code", @@ -2091,6 +2147,52 @@ } } }, + "immich-serverStats": { + "name": "Immich Server Stats", + "description": "Information about your Immich instance", + "option": { + "showUsers": { + "label": "Show users", + "description": "Show count of users on your instance" + }, + "showPhotos": { + "label": "Show photos", + "description": "Show count of photos on your instance" + }, + "showVideos": { + "label": "Show videos", + "description": "Show count of videos on your instance" + }, + "showStorage": { + "label": "Show storage", + "description": "Show the total amount of storage used" + } + }, + "users": "Users", + "photos": "Photos", + "videos": "Videos", + "storage": "Used Storage" + }, + "immich-albumCarousel": { + "name": "Immich Album", + "option": { + "albumId": { + "label": "Album ID", + "description": "This is a unique ID which refers to your Immich album. You can find this id by opening an album and copying the unique string from the URL, for example 'a21aca09-9f05-47dc-b1a1-7b53c547226e'" + }, + "rotationIntervalSeconds": { + "label": "Interval in seconds", + "description": "Rotate between pictures in the album every X seconds. Must be at least 1. Must be below 3600." + }, + "showPhotoInfo": { + "label": "Show photo info", + "description": "Display date of the picture and the current index at the bottom of the slideshow" + } + }, + "description": "Slideshow of pictures in your Immich album", + "noAlbumSelected": "No album selected, edit widget and choose an album", + "noPhotos": "No photos in this album" + }, "downloads": { "name": "Download Client", "description": "Allows you to view and manage your Downloads from both Torrent and Usenet clients.", @@ -3305,7 +3407,7 @@ "title": "Analytics", "general": { "title": "Send anonymous analytics", - "text": "Homarr will send anonymized analytics using the open source software Umami. It never collects any personal information and is therefore fully GDPR & CCPA compliant. We encourage you to enable analytics because it helps our open source team to identify issues and prioritize our backlog." + "text": "Homarr will send anonymized analytics using the open source software Umami. When enabled, we collect: Homarr version, database type (MySQL/PostgreSQL/SQLite), Docker/Kubernetes status, authentication methods enabled, and the number of each feature. All data is anonymous and aggregated - no personal information, URLs, names, or identifiable data is ever collected. This helps our open source team understand usage patterns and prioritize development." }, "widgetData": { "title": "Widget data", @@ -3472,6 +3574,9 @@ }, "weather": { "label": "Weather" + }, + "tracearr": { + "label": "Tracearr" } }, "interval": { diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index f19755f60..507c4630f 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -1138,9 +1138,9 @@ "dangerZone": "Zona de riesgo", "noResults": "No se han encontrado resultados", "unsavedChanges": "¡Tienes cambios sin guardar!", - "servers": "", - "applications": "", - "services": "", + "servers": "Servidores", + "applications": "Aplicaciones", + "services": "Servicios", "preview": { "show": "Mostrar vista previa", "hide": "Ocultar vista previa" @@ -1964,36 +1964,91 @@ } }, "coolify": { - "name": "", - "description": "", + "name": "Coolify", + "description": "Resumen de su instancia de Coolify con servidores y aplicaciones", "option": { "showServers": { - "label": "" + "label": "Mostrar servidores" }, "showApplications": { - "label": "" + "label": "Mostrar aplicaciones" }, "showServices": { - "label": "" + "label": "Mostrar servicios" } }, "empty": { - "servers": "", - "applications": "", - "services": "" + "servers": "No se encontraron servidores", + "applications": "No se encontraron aplicaciones", + "services": "No se encontraron servicios" }, "footer": { - "updated": "" + "updated": "Actualizado {when}" }, + "error": { + "noIntegration": "No hay integración de Coolify configurada", + "internalServerError": "No se pudieron obtener los datos de Coolify" + }, + "server": { + "buildServer": "Construir" + }, + "instances": { + "title": "Instancias" + } + }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", "error": { "noIntegration": "", "internalServerError": "" - }, - "server": { - "buildServer": "" - }, - "instances": { - "title": "" } }, "common": { @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "Cliente de descarga", "description": "Te permite ver y gestionar tus descargas tanto desde los clientes de Torrent como desde Usenet.", @@ -2646,32 +2747,32 @@ } }, "systemDisks": { - "name": "", - "description": "", + "name": "Discos del sistema", + "description": "Uso del disco de su sistema", "option": { "showTemperatureIfAvailable": { - "label": "" + "label": "Mostrar la temperatura si está disponible" }, "displayMode": { - "label": "", + "label": "Modo de visualización", "option": { "percentage": { - "label": "" + "label": "Porcentaje (e.g., 76 %)" }, "absolute": { - "label": "" + "label": "Valores absolutos (e.g., 800 GB / 1 TB)" }, "free": { - "label": "" + "label": "Porcentaje de espacio libre (e.g., 24 % libre)" } } }, "showBackgroundBar": { - "label": "" + "label": "Mostrar la barra de uso en segundo plano" } }, "status": { - "unhealthy": "" + "unhealthy": "Poco sano" } } }, @@ -3472,6 +3573,9 @@ }, "weather": { "label": "Tiempo" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index 2c992ac78..2bab54e1e 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 89b28d2bc..d66bf74c0 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -1138,9 +1138,9 @@ "dangerZone": "Zone de danger", "noResults": "Aucun résultat trouvé", "unsavedChanges": "Vous avez des modifications non enregistrées !", - "servers": "", - "applications": "", - "services": "", + "servers": "Serveurs", + "applications": "Applications", + "services": "Services", "preview": { "show": "Afficher l’aperçu", "hide": "Masquer l'aperçu" @@ -1964,36 +1964,91 @@ } }, "coolify": { - "name": "", - "description": "", + "name": "Coolify", + "description": "Aperçu de votre instance Coolify avec les serveurs et les applications", "option": { "showServers": { - "label": "" + "label": "Afficher les serveurs" }, "showApplications": { - "label": "" + "label": "Afficher les applications" }, "showServices": { - "label": "" + "label": "Afficher les services" } }, "empty": { - "servers": "", - "applications": "", - "services": "" + "servers": "Aucun serveur trouvé", + "applications": "Aucune application trouvée", + "services": "Aucun service trouvé" }, "footer": { - "updated": "" + "updated": "Mis à jour {when}" }, + "error": { + "noIntegration": "Aucune intégration de Coolify configurée", + "internalServerError": "Impossible de récupérer les données de Coolify" + }, + "server": { + "buildServer": "Version" + }, + "instances": { + "title": "Instances" + } + }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", "error": { "noIntegration": "", "internalServerError": "" - }, - "server": { - "buildServer": "" - }, - "instances": { - "title": "" } }, "common": { @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "Client de téléchargement", "description": "Vous permet de visualiser et de gérer vos téléchargements à partir de clients Torrent et Usenet.", @@ -2646,32 +2747,32 @@ } }, "systemDisks": { - "name": "", - "description": "", + "name": "Disques système", + "description": "Utilisation du disque de votre système", "option": { "showTemperatureIfAvailable": { - "label": "" + "label": "Afficher la température si disponible" }, "displayMode": { - "label": "", + "label": "Mode d'affichage", "option": { "percentage": { - "label": "" + "label": "Pourcentage (ex : 70%)" }, "absolute": { - "label": "" + "label": "Valeurs absolues (ex. : 800 Go / 1 To)" }, "free": { - "label": "" + "label": "Pourcentage d'espace libre (ex. : 24 % libre)" } } }, "showBackgroundBar": { - "label": "" + "label": "Afficher la barre d'utilisation en arrière-plan" } }, "status": { - "unhealthy": "" + "unhealthy": "Dysfonctionnement" } } }, @@ -3472,6 +3573,9 @@ }, "weather": { "label": "Météo" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index 470f16d50..7e4e13549 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -1138,7 +1138,7 @@ "dangerZone": "אזור מסוכן", "noResults": "לא נמצאו תוצאות", "unsavedChanges": "ישנם שינויים שלא נשמרו!", - "servers": "", + "servers": "שרתים", "applications": "", "services": "", "preview": { @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "עיר / מיקוד", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "הורדת לקוח", "description": "מאפשר לך להציג ולנהל את ההורדות שלך הן מלקוחות Torrent והן מלקוחות Usenet.", @@ -3360,7 +3461,7 @@ } }, "user": { - "title": "", + "title": "משתמשים", "enableGravatar": { "label": "", "description": "" @@ -3472,6 +3573,9 @@ }, "weather": { "label": "מזג אוויר" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index 638468806..513022ea1 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index cfc2fbcfc..c0d07454b 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index 68cfa4723..8a755b3e4 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -1996,6 +1996,61 @@ "title": "Istanze" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "Utenti Totali", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "Utente", + "media": "", + "state": "", + "quality": "", + "device": "Dispositivo", + "progress": "Avanzamento", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "Parziale" + }, + "violations": { + "title": "Violazioni", + "empty": "Nessuna violazione recente", + "rule": "Regola", + "user": "Utente" + }, + "noSectionsEnabled": "Nessuna sezione abilitata", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "Città / Codice postale", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "Statistiche Server Immich", + "description": "Informazioni sulla tua istanza Immich", + "option": { + "showUsers": { + "label": "Mostra utenti", + "description": "Mostra il conteggio degli utenti sulla tua istanza" + }, + "showPhotos": { + "label": "Mostra foto", + "description": "Mostra il conteggio delle foto sulla tua istanza" + }, + "showVideos": { + "label": "Mostra video", + "description": "Mostra il conteggio dei video sulla tua istanza" + }, + "showStorage": { + "label": "Mostra spazio di archiviazione", + "description": "Visualizza la quantità totale di memoria utilizzata" + } + }, + "users": "Utenti", + "photos": "Foto", + "videos": "Video", + "storage": "Spazio utilizzato" + }, + "immich-albumCarousel": { + "name": "Album Immich", + "option": { + "albumId": { + "label": "ID Album", + "description": "Si tratta di un ID univoco che si riferisce al tuo album Immich. Puoi trovare questo id aprendo un album e copiando la stringa univoca dall'URL, ad esempio 'a21aca09-9f05-47dc-b1a1-7b53c547226e'" + }, + "rotationIntervalSeconds": { + "label": "Intervallo in secondi", + "description": "Ruota le immagini nell'album ogni X secondi. Deve essere almeno 1. Deve essere inferiore a 3600." + }, + "showPhotoInfo": { + "label": "Mostra informazioni foto", + "description": "Visualizza la data dell'immagine e l'indice corrente nella parte inferiore della presentazione" + } + }, + "description": "Presentazione delle immagini nel tuo album Immich", + "noAlbumSelected": "Nessun album selezionato, modifica il widget e scegli un album", + "noPhotos": "Nessuna foto in questo album" + }, "downloads": { "name": "Scarica Client", "description": "Ti consente di visualizzare e gestire i tuoi download dai client Torrent e Usenet.", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "Meteo" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index 52ab179de..aeb7a1da6 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "都市/郵便番号", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "クライアントをダウンロード", "description": "Torrent クライアントと Usenet クライアントの両方から、ダウンロードを表示および管理できます。", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "天気" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index 8700b2dfb..c7140e4cd 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index 862338955..9436577ff 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index e4aee56a1..05994cbcf 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index 307e194a4..fc29c0e77 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "Stad / postcode", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "Client downloaden", "description": "Geeft je de mogelijkheid om downloads van torrent- en usenet-clients te bekijken en beheren.", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "Weer" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index 5cc427169..690126ff2 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -1996,6 +1996,61 @@ "title": "Instanser" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "By / Postnummer", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "Immich-serverstatistikk", + "description": "Informasjon om din Immich-instans", + "option": { + "showUsers": { + "label": "Vis brukere", + "description": "Vis antall brukere på din instans" + }, + "showPhotos": { + "label": "Vis bilder", + "description": "Vis antall bilder på din instans" + }, + "showVideos": { + "label": "Vis videoer", + "description": "Vis antall videoer på din instans" + }, + "showStorage": { + "label": "Vis lagring", + "description": "Vis total mengde lagringsplass brukt" + } + }, + "users": "Brukere", + "photos": "Bilder", + "videos": "Videoer", + "storage": "Brukt lagringsplass" + }, + "immich-albumCarousel": { + "name": "Immich Album", + "option": { + "albumId": { + "label": "Album ID", + "description": "Dette er en unik ID som refererer til ditt Immich-album. Du kan finne denne ID-en ved å åpne et album og kopiere den unike strengen fra URL-en, for eksempel 'a21aca09-9f05-47dc-b1a1-7b53c547226e'" + }, + "rotationIntervalSeconds": { + "label": "Intervall i sekunder", + "description": "Roter mellom bilder i albumet hvert X. sekund. Må være minst 1. Må være under 3600." + }, + "showPhotoInfo": { + "label": "Vis bildeinformasjon", + "description": "Vis datoen for bildet og gjeldende indeks nederst i lysbildeserien" + } + }, + "description": "Lysbildefremvisning av bilder i ditt Immich-album", + "noAlbumSelected": "Ingen album valgt, rediger widgeten og velg et album", + "noPhotos": "Ingen bilder i dette albumet" + }, "downloads": { "name": "Nedlastings-klient", "description": "Lar deg se og behandle nedlastinger fra både Torrent og Usenet klienter.", @@ -3305,7 +3406,7 @@ "title": "Statistikk", "general": { "title": "Send anonym brukerdata", - "text": "Homarr vil sende anonymt brukerdata med åpen kildekode programvaren Umami. Det vil aldri samle inn personlig informasjon og følger derfor GDPR & CCPA fullstendig. Vi oppfordrer deg til å aktivere sending av brukerdata da det hjelper teamet vårt å identifisere problemer og sette prioritering." + "text": "Homarr vil sende anonymiserte analyser ved bruk av den åpne programvaren Umami. Når dette er aktivert, samler vi inn: Homarr-versjon, databastype (MySQL/PostgreSQL/SQLite), Docker/Kubernetes-status, aktiverte autentiseringsmetoder, og antallet av hver funksjon. Alle data er anonyme og aggregerte – ingen personlig informasjon, URL-er, navn eller identifiserbare data samles inn. Dette hjelper vårt open source-team med å forstå bruks‑mønstre og prioritere utvikling." }, "widgetData": { "title": "Widget data", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "Vær" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index c3a034cb7..9fdba5951 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "Miasto / kod pocztowy", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "Klient pobierania", "description": "Pozwala na oglądanie i zarządzanie pobieraniem zarówno przez klientów Torrent, jak i Usenet.", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "Pogoda" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index f55869e50..6c47bc477 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -27,8 +27,8 @@ "description": "Configure o comportamento da importação" }, "boardSelection": { - "title": "{count} quadros encontrados", - "description": "Escolha todos os quadros com o tamanho que você deseja importar", + "title": "{count} painéis encontrados", + "description": "Escolha todos os painéis com o tamanho que você deseja importar", "action": { "selectAll": "Selecionar todos", "unselectAll": "Desmarcar Todos" @@ -95,8 +95,8 @@ "subtitle": "Você está pronto para começar!", "description": "Você concluiu com sucesso o processo de configuração. Agora você pode começar a usar o Homarr. Selecione sua próxima ação:", "action": { - "goToBoard": "Ir para o quadro {name}", - "createBoard": "Crie seu primeiro quadro", + "goToBoard": "Ir para o painel {name}", + "createBoard": "Crie seu primeiro painel", "inviteUser": "Convidar outros usuários", "docs": "Ler a documentação" } @@ -156,7 +156,7 @@ "label": "Mecanismo de pesquisa padrão" }, "openSearchInNewTab": { - "label": "Abrir resultados da busca em uma nova aba" + "label": "Abrir resultados da busca em uma nova guia" } }, "error": { @@ -212,7 +212,7 @@ "message": "Quadro inicial alterado com sucesso" }, "error": { - "message": "Não foi possível alterar o quadro inicial" + "message": "Não foi possível alterar o painel inicial" } } }, @@ -287,7 +287,7 @@ }, "delete": { "label": "Excluir usuário permanentemente", - "description": "Exclui esse usuário incluindo suas preferências. Isso não removerá nenhum quadro. O usuário não sera notificado.", + "description": "Exclui esse usuário incluindo suas preferências. Isso não removerá nenhum painel. O usuário não será notificado.", "confirm": "Tem certeza que deseja excluir o usuário {username} e suas preferências?" }, "select": { @@ -308,11 +308,11 @@ "members": "Membros", "homeBoard": { "label": "Quadro inicial", - "description": "Somente quadros acessíveis ao grupo podem ser selecionados" + "description": "Somente painéis acessíveis ao grupo podem ser selecionados" }, "mobileBoard": { "label": "Quadro para celular", - "description": "Somente quadros acessíveis ao grupo podem ser selecionados" + "description": "Somente painéis acessíveis ao grupo podem ser selecionados" } }, "permission": { @@ -334,7 +334,7 @@ }, "use-all": { "label": "Usar todas aplicações", - "description": "Permitir que os membros adicionem qualquer aplicativo aos seus quadros" + "description": "Permitir que os membros adicionem qualquer aplicativo aos seus painéis" }, "modify-all": { "label": "Modificar todos os aplicativos", @@ -415,15 +415,15 @@ } }, "search-engine": { - "title": "Ferramentas de busca", + "title": "Mecanismos de busca", "item": { "create": { - "label": "Criar ferramenta de busca", + "label": "Criar mecanismos de busca", "description": "Permitir que os membros criem mecanismos de busca" }, "modify-all": { - "label": "Modificar todas as ferramentas de busca", - "description": "Permitir que membros modifiquem todas as ferramentas de busca" + "label": "Modificar todos os mecanismos de busca", + "description": "Permitir que membros modifiquem todos os mecanismos de busca" }, "full-all": { "label": "Acesso total às ferramentas de busca", @@ -515,11 +515,11 @@ "notification": { "success": { "title": "Configurações salvas", - "message": "As configurações do quadro foram salvas com sucesso" + "message": "As configurações do painel foram salvas com sucesso" }, "error": { "title": "Falha ao salvar configurações", - "message": "Não foi possível salvar as configurações do quadro" + "message": "Não foi possível salvar as configurações do painel" } } } @@ -537,7 +537,7 @@ }, "defaultGroup": { "name": "Grupo padrão", - "description": "" + "description": "{name} — Todos os usuários conectados" } }, "app": { @@ -603,8 +603,8 @@ }, "useDifferentUrlForPing": { "checkbox": { - "label": "", - "description": "" + "label": "Use uma URL diferente para o ping", + "description": "Útil se o Homarr puder acessar diretamente usando um hostname interno ou rede para evitar uso de largura de banda do provedor" } } }, @@ -614,8 +614,8 @@ "notFound": "Nenhum aplicativo encontrado", "search": "Busque por um aplicativo", "noResults": "Sem resultados", - "action": "", - "title": "Selecione um aplicativo para adicioná-lo neste quadro" + "action": "Selecionar {app}", + "title": "Selecione um aplicativo para adicioná-lo neste painel" }, "create": { "title": "Criar aplicativo", @@ -631,11 +631,11 @@ "title": "Integrações", "search": "Buscar integrações", "noResults": { - "title": "" + "title": "Ainda não existem integrações" } }, "create": { - "title": "", + "title": "Nova integração {name}", "notification": { "success": { "title": "Criação bem-sucedida", @@ -663,7 +663,7 @@ } }, "edit": { - "title": "", + "title": "Editar integração {name}", "notification": { "success": { "title": "Mudanças aplicadas com sucesso", @@ -676,9 +676,9 @@ }, "app": { "action": { - "add": "", - "remove": "", - "select": "" + "add": "Vincular um aplicativo", + "remove": "Desvincular", + "select": "Selecione um aplicativo para vincular" } } }, @@ -705,18 +705,18 @@ "label": "URL" }, "attemptSearchEngineCreation": { - "label": "", - "description": "" + "label": "Criar mecanismo de busca", + "description": "A integração \"{kind}\" pode ser usada com os mecanismos de busca. Marque isso para configurar automaticamente o mecanismo de busca." }, "app": { - "sectionTitle": "" + "sectionTitle": "Aplicativo vinculado" }, "createApp": { "label": "Criar aplicativo", "description": "Crie um aplicativo com o mesmo nome e ícone da integração. Deixe o campo de entrada abaixo vazio para criar o aplicativo com a URL de integração." }, "appHref": { - "placeholder": "" + "placeholder": "URL de aplicativo personalizada" } }, "action": { @@ -724,222 +724,222 @@ }, "testConnection": { "action": { - "create": "", - "edit": "" + "create": "Testar conexão e criar", + "edit": "Testar conexão e salvar" }, "error": { "common": { "cause": { - "title": "" + "title": "Causa com mais detalhes" } }, "unknown": { "title": "Erro desconhecido", - "description": "" + "description": "Ocorreu um erro desconhecido, abra a causa abaixo para ver mais detalhes" }, "parse": { - "title": "", - "description": "" + "title": "Erro de análise", + "description": "A resposta não pôde ser analisada. Verifique se a URL está apontando para a URL base do serviço." }, "authorization": { - "title": "", - "description": "" + "title": "Erro de autorização", + "description": "A solicitação não foi autorizada. Verifique se as credenciais estão corretas e se você as configurou com permissões suficientes." }, "statusCode": { - "title": "", - "description": "", - "otherDescription": "", + "title": "Erro de resposta", + "description": "Resposta inesperada recebida: {statusCode} ({reason}) de . Verifique se a URL está apontando para a URL base da integração.", + "otherDescription": "Resposta inesperada recebida: {statusCode} de . Verifique se a URL está apontando para a URL base da integração.", "reason": { - "badRequest": "", - "notFound": "", - "tooManyRequests": "", - "internalServerError": "", - "serviceUnavailable": "", - "gatewayTimeout": "" + "badRequest": "Solicitação inválida", + "notFound": "Não encontrado", + "tooManyRequests": "Muitas solicitações", + "internalServerError": "Erro interno do servidor", + "serviceUnavailable": "Serviço indisponível", + "gatewayTimeout": "Tempo esgotado do gateway" } }, "certificate": { - "title": "", + "title": "Erro de certificado", "description": { - "expired": "", - "notYetValid": "", - "untrusted": "", - "hostnameMismatch": "" + "expired": "O certificado expirou.", + "notYetValid": "O certificado ainda não é válido.", + "untrusted": "O certificado não é confiável.", + "hostnameMismatch": "O hostname do certificado não corresponde à URL." }, "alert": { "permission": { "title": "Permissões insuficientes", - "message": "" + "message": "Você não tem permissão para confiar ou carregar certificados. Entre em contato com o seu administrador para carregar o certificado raiz necessário." }, "hostnameMismatch": { - "title": "", - "message": "" + "title": "Incompatibilidade de hostname", + "message": "O hostname no certificado não corresponde ao hostname ao qual você está se conectando. Isso pode indicar um risco de segurança, mas você ainda pode optar por confiar neste certificado." }, "extract": { - "title": "", - "message": "" + "title": "Falha na extração do certificado CA", + "message": "Apenas certificados autoassinados sem uma cadeia podem ser buscados automaticamente. Se você estiver usando um certificado autoassinado, certifique-se de fazer upload do certificado CA manualmente. Você pode encontrar instruções sobre como fazer isso em ." } }, "action": { "retry": { - "label": "" + "label": "Tentar criação novamente" }, "trust": { - "label": "" + "label": "Confiar no certificado" }, "upload": { - "label": "" + "label": "Enviar certificado" } }, "hostnameMismatch": { "confirm": { - "title": "", - "message": "" + "title": "Confiar na incompatibilidade de hostname", + "message": "Tem certeza de que deseja confiar no certificado com incompatibilidade de hostname?" }, "notification": { "success": { - "title": "", - "message": "" + "title": "Certificado confiável", + "message": "Hostname adicionado à lista de certificados confiáveis" }, "error": { - "title": "", - "message": "" + "title": "Falha ao confiar no certificado", + "message": "Não foi possível confiar no certificado com incompatibilidade de hostname" } } }, "selfSigned": { "confirm": { - "title": "", - "message": "" + "title": "Confiar no certificado autoassinado", + "message": "Tem certeza de que deseja confiar neste certificado autoassinado?" }, "notification": { "success": { - "title": "", - "message": "" + "title": "Certificado confiável", + "message": "Adicionar certificado a lista de certificados confiáveis" }, "error": { - "title": "", - "message": "" + "title": "Falha ao confiar no certificado", + "message": "Falha ao adicionar certificado à lista de certificados confiáveis" } } }, "details": { - "title": "", - "description": "", + "title": "Detalhes", + "description": "Revise as informações do certificado antes de decidir confiar nele.", "content": { "action": "Exibir conteúdo", - "title": "" + "title": "Certificado PEM" } } }, "request": { - "title": "", + "title": "Erro de solicitação", "description": { "connection": { - "hostUnreachable": "", - "networkUnreachable": "", - "refused": "", - "reset": "" + "hostUnreachable": "O servidor não pôde ser alcançado. Isso geralmente significa que o host está offline ou inacessível da sua rede.", + "networkUnreachable": "A rede está inacessível. Verifique sua conexão com a internet ou configuração de rede.", + "refused": "O servidor recusou a conexão. Ele pode não estar em execução ou está rejeitando solicitações na porta especificada.", + "reset": "A conexão foi fechada inesperadamente pelo servidor. Isso pode acontecer se o servidor estiver instável ou for reiniciado." }, "dns": { "notFound": "Não foi possível encontrar o endereço do servidor. Verifique se há erros de digitação ou nomes de domínio inválidos na URL.", - "timeout": "", - "noAnswer": "" + "timeout": "A consulta DNS expirou. Isso pode ser um problema temporário—tente novamente em alguns instantes.", + "noAnswer": "O servidor DNS não retornou uma resposta válida. O domínio pode existir, mas não possui registros válidos." }, "timeout": { - "aborted": "", - "timeout": "" + "aborted": "A solicitação foi abortada antes de ser concluída. Isso pode ser devido a uma ação do usuário ou tempo limite do sistema.", + "timeout": "A solicitação demorou muito para ser concluída e expirou. Verifique sua rede ou tente novamente mais tarde." } } } }, - "alertNotice": "", + "alertNotice": "O botão Salvar é habilitado após o estabelecimento de uma conexão bem-sucedida", "notification": { "success": { - "title": "", - "message": "" + "title": "Conexão bem-sucedida", + "message": "A conexão foi estabelecida com sucesso" }, "invalidUrl": { "title": "URL inválido", - "message": "" + "message": "A URL é inválida" }, "secretNotDefined": { - "title": "", - "message": "" + "title": "Credenciais ausentes", + "message": "Nem todas as credenciais foram fornecidas" }, "invalidCredentials": { - "title": "", - "message": "" + "title": "Credenciais inválidas", + "message": "As credenciais são inválidas" }, "commonError": { - "title": "", - "message": "" + "title": "Falha na conexão", + "message": "A conexão não pôde ser estabelecida" }, "badRequest": { - "title": "", - "message": "" + "title": "Solicitação inválida", + "message": "A solicitação estava malformada" }, "unauthorized": { - "title": "", - "message": "" + "title": "Não autorizado", + "message": "Credenciais provavelmente incorretas" }, "forbidden": { - "title": "", - "message": "" + "title": "Proibido", + "message": "Provavelmente faltam permissões" }, "notFound": { - "title": "", - "message": "" + "title": "Não encontrado", + "message": "Provavelmente URL ou caminho incorreto" }, "internalServerError": { - "title": "", - "message": "" + "title": "Erro interno do servidor", + "message": "O servidor encontrou um erro" }, "serviceUnavailable": { - "title": "", - "message": "" + "title": "Serviço indisponível", + "message": "O servidor está indisponível no momento" }, "connectionAborted": { - "title": "", - "message": "" + "title": "Conexão abortada", + "message": "A conexão foi abortada" }, "domainNotFound": { - "title": "", - "message": "" + "title": "Domínio não encontrado", + "message": "O domínio não pôde ser encontrado" }, "connectionRefused": { - "title": "", - "message": "" + "title": "Conexão recusada", + "message": "A conexão foi recusada" }, "invalidJson": { - "title": "", - "message": "" + "title": "JSON inválido", + "message": "A resposta não é um JSON válido" }, "wrongPath": { - "title": "", - "message": "" + "title": "Caminho incorreto", + "message": "O caminho provavelmente não está correto" }, "tooManyRequests": { - "title": "", - "message": "" + "title": "Muitas solicitações em um curto período", + "message": "Houve muitas requisições. Você provavelmente está sendo limitado por taxa ou rejeitado pelo sistema de destino" } } }, "secrets": { - "title": "", - "lastUpdated": "", + "title": "Secrets", + "lastUpdated": "Última atualização em {date}", "notSet": { - "label": "", - "tooltip": "" + "label": "Nenhum valor definido", + "tooltip": "Esta credencial obrigatória ainda não foi definida" }, - "secureNotice": "", + "secureNotice": "Esta credencial não pode ser recuperada após a criação", "reset": { - "title": "", - "message": "" + "title": "Redefinir credencial", + "message": "Tem certeza de que deseja redefinir esta credencial?" }, "noSecretsRequired": { - "segmentTitle": "", - "text": "" + "segmentTitle": "Sem credenciais", + "text": "Nenhuma credencial necessária para esta integração" }, "kind": { "username": { @@ -947,24 +947,24 @@ "newLabel": "Novo nome de usuário" }, "apiKey": { - "label": "", - "newLabel": "" + "label": "Chave de API", + "newLabel": "Nova chave de API" }, "password": { "label": "Senha", "newLabel": "Nova senha" }, "tokenId": { - "label": "", - "newLabel": "" + "label": "Token ID", + "newLabel": "Novo ID de token" }, "realm": { - "label": "", - "newLabel": "" + "label": "Realm", + "newLabel": "Novo realm" }, "personalAccessToken": { - "label": "", - "newLabel": "" + "label": "Token de acesso pessoal", + "newLabel": "Novo token de acesso pessoal" }, "topic": { "label": "Tópico", @@ -975,31 +975,31 @@ "newLabel": "Nova URL" }, "opnsenseApiKey": { - "label": "", - "newLabel": "" + "label": "Chave de API (Key)", + "newLabel": "Nova Chave de API (Key)" }, "opnsenseApiSecret": { - "label": "", - "newLabel": "" + "label": "Chave de API (Key)", + "newLabel": "Nova Chave de API (Key)" }, "githubAppId": { - "label": "", - "newLabel": "" + "label": "ID do Aplicativo", + "newLabel": "Novo ID de Aplicativo" }, "githubInstallationId": { - "label": "", - "newLabel": "" + "label": "ID de instalação", + "newLabel": "Novo ID de instalação" }, "privateKey": { - "label": "", - "newLabel": "" + "label": "Chave privada", + "newLabel": "Nova chave privada" } } }, "permission": { - "use": "", - "interact": "", - "full": "" + "use": "Selecionar integrações em itens", + "interact": "Interagir com integrações", + "full": "Acesso completo à integração" } }, "media": { @@ -1039,41 +1039,41 @@ "label": "Copiar URL" }, "open": { - "label": "" + "label": "Abrir mídia" } } }, "common": { - "success": "", - "beta": "", + "success": "Sucesso", + "beta": "Beta", "error": "Erro", "action": { "add": "Adicionar", "apply": "Aplicar", - "backToOverview": "", - "change": "", + "backToOverview": "Voltar à visão geral", + "change": "Alterar", "create": "Criar", - "createAnother": "", + "createAnother": "Criar e recomeçar", "edit": "Editar", - "import": "", + "import": "Importar", "insert": "Inserir", "remove": "Excluir", "save": "Salvar", "saveChanges": "Salvar alterações", "cancel": "Cancelar", "delete": "Apagar", - "discard": "", - "close": "", + "discard": "Descartar", + "close": "Fechar", "confirm": "Confirme", - "continue": "", + "continue": "Continuar", "previous": "Anterior", "next": "Próximo", - "checkoutDocs": "", - "checkLogs": "", + "checkoutDocs": "Confira a documentação", + "checkLogs": "Verifique os logs para mais detalhes", "tryAgain": "Tente novamente", - "loading": "" + "loading": "Carregando" }, - "here": "", + "here": "aqui", "iconPicker": { "label": "URL do ícone", "header": "Digite o nome ou os objetos para filtrar os ícones... O Homarr pesquisará {countIcons} ícones para você." @@ -1117,7 +1117,7 @@ "addLabel": "Adicionar {value}" }, "select": { - "placeholder": "", + "placeholder": "Selecionar um valor", "badge": { "recommended": "Recomendado" } @@ -1131,7 +1131,7 @@ "logout": "Sair", "login": "“Login”", "homeBoard": "Seu painel inicial", - "loggedOut": "", + "loggedOut": "Sessão encerrada", "updateAvailable": "{countUpdates} atualizações disponíveis: {tag}" } }, @@ -1166,7 +1166,7 @@ "custom": { "passwordsDoNotMatch": "Senhas não coincidem", "passwordRequirements": "A senha não atende aos requisitos", - "boardAlreadyExists": "Já existe um quadro com este nome", + "boardAlreadyExists": "Já existe um painel com este nome", "invalidFileType": "Formato de arquivo inválido, esperado {expected}", "invalidFileName": "Nome de arquivo inválido", "fileTooLarge": "O arquivo é muito grande, o tamanho máximo é {maxSize}", @@ -1196,12 +1196,12 @@ "label": "Classes CSS customizadas" }, "borderColor": { - "label": "" + "label": "Cor da borda" } }, "remove": { - "title": "", - "message": "" + "title": "Remover seção dinâmica", + "message": "Tem certeza de que deseja remover esta seção dinâmica? Os itens serão movidos para o mesmo local na seção pai." } }, "category": { @@ -1211,21 +1211,21 @@ } }, "action": { - "create": "", + "create": "Nova categoria", "edit": "Renomear categoria", - "remove": "", + "remove": "Remover categoria", "moveUp": "Subir", "moveDown": "Mover para baixo", - "createAbove": "", - "createBelow": "", - "openAllInNewTabs": "" + "createAbove": "Nova categoria acima", + "createBelow": "Nova categoria abaixo", + "openAllInNewTabs": "Abrir tudo em abas" }, "create": { - "title": "", - "submit": "" + "title": "Nova categoria", + "submit": "Adicionar categoria" }, "remove": { - "title": "", + "title": "Remover categoria", "message": "Tem certeza que deseja deletar a categoria {name}?" }, "edit": { @@ -1234,24 +1234,24 @@ }, "menu": { "label": { - "create": "", + "create": "Nova categoria", "changePosition": "Mudar de posição" } }, "openAllInNewTabs": { - "title": "", - "text": "" + "title": "Abrir tudo em abas", + "text": "Alguns navegadores podem bloquear a abertura em massa de abas por motivos de segurança. O Homarr não conseguiu abrir todas as janelas porque seu navegador bloqueou esta ação. Por favor, permita \"Abrir janelas pop-up\" e tente novamente." } } }, "item": { "action": { - "create": "", - "import": "", - "edit": "", - "moveResize": "", - "duplicate": "", - "remove": "" + "create": "Novo item", + "import": "Importar item", + "edit": "Editar item", + "moveResize": "Mover / redimensionar item", + "duplicate": "Duplicar item", + "remove": "Remover item" }, "menu": { "label": { @@ -1259,12 +1259,12 @@ } }, "create": { - "title": "", - "search": "", - "addToBoard": "" + "title": "Escolha o item a adicionar", + "search": "Filtrar itens", + "addToBoard": "Adicionar ao painel" }, "moveResize": { - "title": "", + "title": "Mover / redimensionar item", "field": { "width": { "label": "Largura" @@ -1273,261 +1273,261 @@ "label": "Altura" }, "xOffset": { - "label": "" + "label": "Deslocamento X" }, "yOffset": { - "label": "" + "label": "Deslocamento Y" } } }, "edit": { - "title": "", + "title": "Editar item", "advancedOptions": { - "label": "", - "title": "" + "label": "Opções avançadas", + "title": "Opções avançadas de itens" }, "field": { "integrations": { - "label": "" + "label": "Integrações" }, "title": { - "label": "" + "label": "Título" }, "customCssClasses": { - "label": "" + "label": "Classes CSS personalizadas" }, "borderColor": { - "label": "" + "label": "Cor da borda" } } }, "remove": { - "title": "", - "message": "" + "title": "Remover item", + "message": "Tem certeza que deseja remover esse item?" } }, "widget": { "app": { - "name": "", - "description": "", + "name": "Aplicativo", + "description": "Incorpora um aplicativo no quadro.", "option": { "appId": { - "label": "" + "label": "Escolher aplicativo" }, "openInNewTab": { - "label": "Abrir em novo separador" + "label": "Abrir em nova guia" }, "showTitle": { "label": "Exibir o nome do aplicativo" }, "pingEnabled": { - "label": "" + "label": "Habilitar verificação de status" }, "layout": { - "label": "", + "label": "Layout", "option": { - "row": "", - "row-reverse": "", - "column": "", - "column-reverse": "" + "row": "Horizontal", + "row-reverse": "Horizontal (invertido)", + "column": "Vertical", + "column-reverse": "Vertical (invertido)" } }, "descriptionDisplayMode": { - "label": "", - "description": "", + "label": "Modo de exibição da descrição", + "description": "Escolha como exibir a descrição do aplicativo", "option": { - "normal": "", - "tooltip": "", - "hidden": "" + "normal": "Dentro do widget", + "tooltip": "Como tooltip", + "hidden": "Oculto" } } }, "error": { "notFound": { - "label": "", - "tooltip": "" + "label": "Nenhum aplicativo", + "tooltip": "Você não tem nenhum aplicativo válido selecionado" } } }, "bookmarks": { - "name": "", - "description": "", + "name": "Marcadores", + "description": "Exibe múltiplos links de aplicativos", "option": { "title": { - "label": "" + "label": "Título" }, "layout": { - "label": "", + "label": "Layout", "option": { "row": { - "label": "" + "label": "Horizontal" }, "column": { - "label": "" + "label": "Vertical" }, "grid": { - "label": "" + "label": "Grade" }, "gridHorizontal": { - "label": "" + "label": "Grade horizontal" } } }, "hideTitle": { - "label": "" + "label": "Ocultar título" }, "hideIcon": { - "label": "" + "label": "Ocultar ícones" }, "hideHostname": { - "label": "" + "label": "Ocultar nomes de host" }, "openNewTab": { - "label": "" + "label": "Abrir em nova guia" }, "items": { - "label": "", - "add": "" + "label": "Marcadores", + "add": "Adicionar marcador" } } }, "dnsHoleSummary": { - "name": "", - "description": "", + "name": "Resumo do DNS Hole", + "description": "Exibe o resumo do seu DNS Hole", "option": { "layout": { - "label": "", + "label": "Layout", "option": { "row": { - "label": "" + "label": "Horizontal" }, "column": { - "label": "" + "label": "Vertical" }, "grid": { - "label": "" + "label": "Grade" } } }, "usePiHoleColors": { - "label": "" + "label": "Usar cores do Pi-Hole" } }, "error": { - "internalServerError": "", - "integrationsDisconnected": "" + "internalServerError": "Falha ao buscar resumo do DNS Hole", + "integrationsDisconnected": "Nenhum dado disponível, todas as integrações estão desconectadas" }, "data": { "adsBlockedToday": "Bloqueado hoje", "adsBlockedTodayPercentage": "Bloqueado hoje", "dnsQueriesToday": "Consultas hoje", - "domainsBeingBlocked": "" + "domainsBeingBlocked": "Domínios na lista de bloqueio" }, - "domainsTooltip": "" + "domainsTooltip": "Devido a múltiplas integrações, o Homarr não pode calcular o número exato de domínios sendo bloqueados" }, "dnsHoleControls": { - "name": "", + "name": "Controles do DNS Hole", "description": "Controle o PiHole ou o AdGuard em seu painel de controle", "option": { "layout": { - "label": "", + "label": "Layout", "option": { "row": { - "label": "" + "label": "Horizontal" }, "column": { - "label": "" + "label": "Vertical" }, "grid": { - "label": "" + "label": "Grade" } } }, "showToggleAllButtons": { - "label": "" + "label": "Exibir botões \"Alternar Todos\"" } }, "error": { - "internalServerError": "" + "internalServerError": "Falha ao gerenciar o DNS Hole" }, "controls": { - "enableAll": "", - "disableAll": "", - "setTimer": "", - "set": "", + "enableAll": "Habilitar todos", + "disableAll": "Desabilitar todos", + "setTimer": "Definir temporizador", + "set": "Definir", "enabled": "Ativado", "disabled": "Desativado", - "processing": "", - "disconnected": "", - "hours": "", - "minutes": "", - "unlimited": "" + "processing": "Processando", + "disconnected": "Desconectado", + "hours": "Horas", + "minutes": "Minutos", + "unlimited": "Deixe em branco para não limitar" } }, "clock": { - "name": "", + "name": "Data e hora", "description": "Apresenta a data e hora actuais.", "option": { "customTitleToggle": { - "label": "", + "label": "Exibição personalizada do título/cidade", "description": "Exiba um título personalizado ou o nome da cidade/país na parte superior do relógio." }, "customTitle": { - "label": "" + "label": "Título" }, "is24HourFormat": { - "label": "", - "description": "" + "label": "Formato de 24 horas", + "description": "Use o formato de 24 horas em vez do formato de 12 horas" }, "showSeconds": { - "label": "" + "label": "Exibir segundos" }, "useCustomTimezone": { - "label": "" + "label": "Usar um fuso horário fixo" }, "timezone": { "label": "Fuso-horário", - "description": "" + "description": "Escolha o fuso horário seguindo o padrão IANA" }, "showDate": { "label": "Exibir data" }, "dateFormat": { - "label": "", - "description": "" + "label": "Formato de data", + "description": "Como a data deve ser apresentada" }, "customTimeFormat": { - "label": "", - "description": "" + "label": "Formato de hora personalizado", + "description": "Usar ISO 8601 para formatar horas (Isso sobrescreverá outras opções)" }, "customDateFormat": { - "label": "", - "description": "" + "label": "Formato de data personalizado", + "description": "Usar ISO 8601 para formatar datas (Isso sobrescreverá outras opções)" } } }, "minecraftServerStatus": { - "name": "", - "description": "", + "name": "Status de servidor Minecraft", + "description": "Exibir o status de um servidor Minecraft", "option": { "title": { - "label": "" + "label": "Título" }, "domain": { - "label": "" + "label": "Endereço do servidor" }, "isBedrockServer": { - "label": "" + "label": "Servidor Bedrock" } }, "status": { - "online": "", - "offline": "" + "online": "Online", + "offline": "Offline" } }, "notebook": { "name": "Caderno de anotações", - "description": "", + "description": "Um widget de bloco de notas simples que suporta markdown", "option": { "showToolbar": { "label": "Mostrar a barra de ferramentas para ajudá-lo a escrever markdown" @@ -1557,7 +1557,7 @@ "checkList": "Lista de verificação", "increaseIndent": "Aumentar recuo", "decreaseIndent": "Diminuir recuo", - "link": "", + "link": "Link", "unlink": "Remover link", "image": "Incorporar imagem", "addTable": "Adicionar tabela", @@ -1585,18 +1585,18 @@ "width": "Largura", "height": "Altura" }, - "placeholder": "", + "placeholder": "Comece a escrever suas notas", "dismiss": { - "title": "", - "message": "", + "title": "Descartar alterações?", + "message": "Você tem alterações não salvas em seu bloco de notas. Tem certeza de que deseja descartá-las?", "action": { - "discard": "", - "keepEditing": "" + "discard": "Descartar alterações", + "keepEditing": "Continuar editando" } } }, "iframe": { - "name": "", + "name": "iFrame", "description": "Incorporar qualquer conteúdo da internet. Alguns sites podem restringir o acesso.", "option": { "embedUrl": { @@ -1628,14 +1628,14 @@ } }, "error": { - "noUrl": "", - "unsupportedProtocol": "", + "noUrl": "Nenhum URL de iFrame fornecido", + "unsupportedProtocol": "A URL fornecida está usando um protocolo não suportado. Use um dos seguintes protocolos: ({supportedProtocols})", "noBrowerSupport": "Seu navegador não suporta iframes. Atualize seu navegador." } }, "smartHome-entityState": { - "name": "", - "description": "", + "name": "Estado da Entidade", + "description": "Exibe o estado de uma entidade e permite alterná-lo opcionalmente", "option": { "entityId": { "label": "ID da entidade" @@ -1644,16 +1644,16 @@ "label": "Nome de exibição" }, "entityUnit": { - "label": "" + "label": "Unidade da Entidade" }, "clickable": { - "label": "" + "label": "Clicável" } } }, "smartHome-executeAutomation": { - "name": "", - "description": "", + "name": "Executar automação", + "description": "Acionar uma automação com um único clique", "option": { "displayName": { "label": "Nome de exibição" @@ -1667,32 +1667,32 @@ } }, "stockPrice": { - "name": "", - "description": "", + "name": "Preço das ações", + "description": "Exibe o preço atual das ações de uma empresa", "option": { "stock": { - "label": "" + "label": "Símbolo da ação" }, "timeRange": { - "label": "", + "label": "Intervalo de tempo", "option": { "1d": { - "label": "" + "label": "1 dia" }, "5d": { - "label": "" + "label": "5 dias" }, "1mo": { - "label": "" + "label": "1 mês" }, "3mo": { - "label": "" + "label": "3 meses" }, "6mo": { - "label": "" + "label": "6 meses" }, "ytd": { - "label": "" + "label": "Acumulado no ano (YTD)" }, "1y": { "label": "1 ano" @@ -1744,7 +1744,7 @@ }, "calendar": { "name": "Calendário", - "description": "", + "description": "Exibe eventos de suas integrações em uma visualização de calendário dentro de um período relativo específico", "duration": { "allDay": "Dia inteiro" }, @@ -1752,19 +1752,19 @@ "releaseType": { "label": "Tipo de libertação de Radarr", "options": { - "inCinemas": "", - "digitalRelease": "", - "physicalRelease": "" + "inCinemas": "Nos cinemas", + "digitalRelease": "Lançamento digital", + "physicalRelease": "Lançamento físico" } }, "filterPastMonths": { - "label": "" + "label": "Começar de" }, "filterFutureMonths": { - "label": "" + "label": "Terminar em" }, "showUnmonitored": { - "label": "" + "label": "Mostrar não monitorados" } } }, @@ -1773,17 +1773,17 @@ "description": "Apresenta a informação meteorológica actual de um local definido.", "option": { "isFormatFahrenheit": { - "label": "" + "label": "Temperatura em Fahrenheit" }, "disableTemperatureDecimals": { - "label": "" + "label": "Desativar decimais de temperatura" }, "showCurrentWindSpeed": { "label": "Exibir velocidade do vento atual", - "description": "" + "description": "Somente no clima atual" }, "useImperialSpeed": { - "label": "" + "label": "Usar unidade mph para velocidade do vento" }, "location": { "label": "Localização do tempo" @@ -1795,20 +1795,20 @@ "label": "Exibir previsão" }, "forecastDayCount": { - "label": "", - "description": "" + "label": "Quantidade de dias de previsão", + "description": "Quando o widget não é largo o suficiente, menos dias serão exibidos" }, "dateFormat": { - "label": "", - "description": "" + "label": "Formato de data", + "description": "Como a data deve ser exibida" } }, - "currentWindSpeed": "", + "currentWindSpeed": "{currentWindSpeed} {unit}", "dailyForecast": { - "sunrise": "", - "sunset": "", - "maxWindSpeed": "", - "maxWindGusts": "" + "sunrise": "Nascer do sol", + "sunset": "Pôr do sol", + "maxWindSpeed": "Velocidade máxima do vento: {maxWindSpeed} {unit}", + "maxWindGusts": "Rajadas máximas de vento: {maxWindGusts} {unit}" }, "kind": { "clear": "Limpar", @@ -1829,24 +1829,24 @@ }, "indexerManager": { "name": "Status do Gerenciador de Indexadores", - "description": "", + "description": "Status dos seus indexadores", "option": { "openIndexerSiteInNewTab": { - "label": "" + "label": "Abrir o site do indexador em uma nova guia" } }, "title": "Gerenciador de indexadores", "testAll": "Testar todos", "error": { - "internalServerError": "" + "internalServerError": "Falha ao buscar status dos indexadores" } }, "healthMonitoring": { "name": "Monitoramento da integridade do sistema", "description": "Exibe informações que mostram a saúde e status de seu(s) sistema(s).", "tab": { - "system": "", - "cluster": "" + "system": "Sistema", + "cluster": "Cluster" }, "option": { "fahrenheit": { @@ -1865,107 +1865,107 @@ "label": "Mostrar informações do sistema de arquivos" }, "defaultTab": { - "label": "" + "label": "Aba padrão" }, "visibleClusterSections": { - "label": "" + "label": "Seções de cluster visíveis" }, "sectionIndicatorRequirement": { - "label": "" + "label": "Requisito do indicador de seção" } }, "popover": { "information": "Informação", "processor": "Processador: {cpuModelName}", "memory": "Memória: {memory}GiB", - "memoryAvailable": "", - "version": "", - "uptime": "", - "loadAverage": "", - "minute": "", - "minutes": "", - "used": "", + "memoryAvailable": "Disponível: {memoryAvailable}GiB ({percent}%)", + "version": "Versão {version}", + "uptime": "Tempo de atividade: {months} mês(es), {days} dias, {hours} horas, {minutes} minutos", + "loadAverage": "Média de carga:", + "minute": "1 minuto", + "minutes": "{count} minutos", + "used": "Usado", "available": "Disponível", - "lastSeen": "" + "lastSeen": "Última atualização de status: {lastSeen}" }, "memory": {}, "error": { - "internalServerError": "" + "internalServerError": "Falha ao buscar status de saúde" }, "cluster": { "summary": { - "cpu": "", - "memory": "" + "cpu": "CPU", + "memory": "RAM" }, "resource": { "node": { - "name": "" + "name": "Nós" }, "qemu": { - "name": "" + "name": "VMs" }, "lxc": { - "name": "" + "name": "LXCs" }, "storage": { - "name": "" + "name": "Armazenamento" } }, "popover": { "rightSection": { - "node": "", - "vmId": "", - "plugin": "" + "node": "Nós", + "vmId": "ID da VM", + "plugin": "Plugin" }, "detail": { - "cpu": "", - "memory": "", - "storage": "", - "uptime": "", - "haState": "", + "cpu": "Núcleos", + "memory": "Memória", + "storage": "Armazenamento", + "uptime": "Tempo de atividade", + "haState": "Estado HA", "storageType": { - "local": "", - "shared": "" + "local": "Armazenamento local", + "shared": "Armazenamento compartilhado" } } }, "table": { "header": { "name": "Nome", - "cpu": "", - "memory": "", - "node": "" + "cpu": "CPU", + "memory": "RAM", + "node": "Nó" } } } }, "dockerContainers": { "name": "Estatísticas do Docker", - "description": "", + "description": "Estatísticas dos seus contêineres (Esse widget só pode ser adicionado com privilégios de administrador)", "option": { "enableRowSorting": { - "label": "" + "label": "Ativar ordenação de itens" }, "defaultSort": { - "label": "", + "label": "Coluna usada para ordenação por padrão", "option": { "name": "Nome", - "state": "", + "state": "Estado", "cpuUsage": "Uso da CPU", - "memoryUsage": "" + "memoryUsage": "Uso da Memória" } }, "descendingDefaultSort": { - "label": "" + "label": "Inverter ordenação" } }, "error": { - "internalServerError": "" + "internalServerError": "Erro ao obter as estatísticas dos contêineres" } }, "coolify": { - "name": "", - "description": "", + "name": "Coolify", + "description": "Visão geral da sua instância Coolify com servidores e aplicativos", "option": { "showServers": { "label": "Exibir servidores" @@ -1978,41 +1978,96 @@ } }, "empty": { - "servers": "", - "applications": "", - "services": "" + "servers": "Nenhum servidor encontrado", + "applications": "Nenhum aplicativo encontrado", + "services": "Nenhum serviço encontrado" }, "footer": { - "updated": "" + "updated": "Atualizado em {when}" }, + "error": { + "noIntegration": "Nenhuma integração Coolify configurada", + "internalServerError": "Falha ao buscar dados do Coolify" + }, + "server": { + "buildServer": "Build" + }, + "instances": { + "title": "Instâncias" + } + }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", "error": { "noIntegration": "", "internalServerError": "" - }, - "server": { - "buildServer": "" - }, - "instances": { - "title": "" } }, "common": { "location": { - "query": "", - "latitude": "", - "longitude": "", - "disabledTooltip": "", - "unknownLocation": "", + "query": "Cidade / CEP", + "latitude": "Latitude", + "longitude": "Longitude", + "disabledTooltip": "Por favor, insira uma cidade ou um CEP", + "unknownLocation": "Localização desconhecida", "search": "Pesquisa", "table": { "header": { - "city": "", - "country": "", - "coordinates": "", - "population": "" + "city": "Cidade", + "country": "País", + "coordinates": "Coordenadas", + "population": "População" }, "action": { - "select": "" + "select": "Selecione {city}, {countryCode}" }, "population": { "fallback": "Desconhecido" @@ -2020,17 +2075,17 @@ } }, "integration": { - "noData": "", - "description": "" + "noData": "Nenhuma integração encontrada", + "description": "Clique para criar um aplicativo", "quickCreate": "Criar aplicativo em tempo real" }, "error": { - "noIntegration": "", - "noData": "" + "noIntegration": "Nenhuma integração selecionada", + "noData": "Nenhum dado de integração disponível" }, "option": {} }, @@ -2043,232 +2098,278 @@ }, "hasAutoPlay": { "label": "Reprodução automática", - "description": "" + "description": "A reprodução automática só funciona quando está no mudo devido a restrições do navegador" }, "isMuted": { - "label": "" + "label": "Mudo" }, "hasControls": { - "label": "" + "label": "Exibir controles" } }, "error": { - "noUrl": "", - "forYoutubeUseIframe": "" + "noUrl": "Nenhum URL de vídeo fornecido", + "forYoutubeUseIframe": "Para vídeos do Youtube, use a opção de iFrame" } }, "mediaServer": { - "name": "", - "description": "", + "name": "Streams atuais do servidor de mídia", + "description": "Exibe os streams atuais em seus servidores de mídia", "option": { "showOnlyPlaying": { - "label": "", - "description": "" + "label": "Exibir apenas o que está sendo reproduzido", + "description": "Desabilitar isso não funcionará para o Plex" } }, "items": { - "currentlyPlaying": "", - "user": "", + "currentlyPlaying": "Reproduzindo agora", + "user": "Usuário", "name": "Nome", - "id": "", + "id": "Id", "metadata": { - "title": "", + "title": "Estatísticas para nerds", "video": { - "title": "", - "resolution": "" + "title": "Vídeo", + "resolution": "Resolução" }, "audio": { - "title": "", - "channelCount": "", - "codec": "" + "title": "Áudio", + "channelCount": "Canais de áudio", + "codec": "Codificador de áudio" }, "transcoding": { - "title": "", - "container": "", - "resolution": "", - "target": "" + "title": "Transcodificação", + "container": "Contêiner", + "resolution": "Resolução", + "target": "Codec de destino" } } } }, - "downloads": { + "immich-serverStats": { "name": "", "description": "", "option": { - "columns": { - "label": "" + "showUsers": { + "label": "", + "description": "" }, - "enableRowSorting": { - "label": "" + "showPhotos": { + "label": "", + "description": "" }, - "defaultSort": { - "label": "" + "showVideos": { + "label": "", + "description": "" }, - "descendingDefaultSort": { - "label": "" - }, - "showCompletedUsenet": { - "label": "" - }, - "showCompletedTorrent": { - "label": "" - }, - "showCompletedHttp": { - "label": "" - }, - "activeTorrentThreshold": { - "label": "" - }, - "categoryFilter": { - "label": "" - }, - "filterIsWhitelist": { - "label": "" - }, - "applyFilterToRatio": { - "label": "" - }, - "limitPerIntegration": { + "showStorage": { "label": "", "description": "" } }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, + "downloads": { + "name": "Cliente de Download", + "description": "Permite visualizar e gerenciar seus Downloads de clientes Torrent e Usenet.", + "option": { + "columns": { + "label": "Colunas para exibir" + }, + "enableRowSorting": { + "label": "Habilitar ordenação de itens" + }, + "defaultSort": { + "label": "Coluna usada para ordenação por padrão" + }, + "descendingDefaultSort": { + "label": "Inverter ordenação" + }, + "showCompletedUsenet": { + "label": "Exibir entradas usenet marcadas como concluídas" + }, + "showCompletedTorrent": { + "label": "Exibir entradas torrent marcadas como concluídas" + }, + "showCompletedHttp": { + "label": "Exibir entradas diversas marcadas como concluídas" + }, + "activeTorrentThreshold": { + "label": "Ocultar torrents concluídos abaixo deste limite (em kiB/s)" + }, + "categoryFilter": { + "label": "Categorias/rótulos para filtrar" + }, + "filterIsWhitelist": { + "label": "Filtrar como lista de permissões" + }, + "applyFilterToRatio": { + "label": "Usar filtro para calcular Proporção" + }, + "limitPerIntegration": { + "label": "Limitar itens por integração", + "description": "Isso limitará o número de itens exibidos por integração, não globalmente" + } + }, "errors": { - "noColumns": "", - "noCommunications": "" + "noColumns": "Selecionar Colunas em Itens", + "noCommunications": "Não foi possível carregar dados da integração" }, "items": { "actions": { - "columnTitle": "" + "columnTitle": "Controles" }, "added": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Adicionado", + "detailsTitle": "Data adicionada" }, "category": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Extras", + "detailsTitle": "Categorias (ou informações extras)" }, "downSpeed": { "columnTitle": "Para baixo", "detailsTitle": "Velocidade de Transferência" }, "index": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "#", + "detailsTitle": "Índice atual no cliente" }, "id": { - "columnTitle": "" + "columnTitle": "Id" }, "integration": { "columnTitle": "Integração" }, "name": { - "columnTitle": "" + "columnTitle": "Nome do trabalho" }, "progress": { "columnTitle": "Progresso", - "detailsTitle": "" + "detailsTitle": "Baixar progresso" }, "ratio": { "columnTitle": "Razão", - "detailsTitle": "" + "detailsTitle": "Relação de torrent (recebido/enviado)" }, "received": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Total baixado", + "detailsTitle": "Total baixado" }, "sent": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Total enviado", + "detailsTitle": "Total enviado" }, "size": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Tamanho do arquivo", + "detailsTitle": "Tamanho total da seleção/arquivos" }, "state": { "columnTitle": "Estado", - "detailsTitle": "" + "detailsTitle": "Estado do trabalho" }, "time": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Tempo de conclusão", + "detailsTitle": "Tempo desde/até a conclusão" }, "type": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Tipo", + "detailsTitle": "Tipo de cliente de download" }, "upSpeed": { "columnTitle": "Para cima", - "detailsTitle": "" + "detailsTitle": "Velocidade de envio" } }, "states": { "downloading": "Baixando", - "queued": "", + "queued": "Em fila", "paused": "Pausado", "completed": "Concluído", - "failed": "", - "processing": "", - "leeching": "", - "stalled": "", + "failed": "Falhou", + "processing": "Processando", + "leeching": "Baixando (Leeching)", + "stalled": "Parado", "unknown": "Desconhecido", - "seeding": "" + "seeding": "Compartilhando (Seeding)" }, "actions": { "clients": { - "modalTitle": "", - "pause": "", - "resume": "" + "modalTitle": "Lista de clientes de download", + "pause": "Pausar todos os clientes/itens", + "resume": "Retomar todos os clientes/itens" }, "client": { - "pause": "", - "resume": "" + "pause": "Pausar cliente", + "resume": "Retomar cliente" }, "item": { - "pause": "", - "resume": "", + "pause": "Pausar item", + "resume": "Pausar item", "delete": { - "title": "", - "modalTitle": "", - "entry": "", - "entryAndFiles": "" + "title": "Excluir item", + "modalTitle": "Tem certeza de que deseja excluir este trabalho?", + "entry": "Excluir entrada", + "entryAndFiles": "Excluir entrada e arquivo(s)" } } }, - "globalRatio": "" + "globalRatio": "Proporção global" }, "mediaReleases": { - "name": "", - "description": "", + "name": "Lançamentos de mídias", + "description": "Exibe mídias recém-adicionadas ou lançamentos futuros de diferentes integrações", "option": { "layout": { - "label": "", + "label": "Layout", "option": { "backdrop": { - "label": "" + "label": "Backdrop" }, "poster": { - "label": "" + "label": "Pôster" } } }, "showDescriptionTooltip": { - "label": "" + "label": "Exibir dica de descrição" }, "showType": { - "label": "" + "label": "Exibir emblema de tipo de mídia" }, "showSource": { - "label": "" + "label": "Exibir integração de origem" } }, "length": { - "duration": "" + "duration": "{length} minutos" } }, "mediaRequests-requestList": { - "name": "", + "name": "Lista de Solicitações de Mídia", "description": "Veja uma lista de todas as solicitações de mídia da sua instância do Overseerr ou Jellyseerr", "option": { "linksTargetNewTab": { @@ -2276,31 +2377,31 @@ } }, "pending": { - "approve": "", - "approving": "", - "decline": "" + "approve": "Aprovar solicitação", + "approving": "Aprovando solicitação...", + "decline": "Recusar solicitação" }, "availability": { "unknown": "Desconhecido", - "pending": "", - "processing": "", - "requested": "", + "pending": "Pendente", + "processing": "Processando", + "requested": "Solicitado", "partiallyAvailable": "Parcial", "available": "Disponível", - "blacklisted": "", - "deleted": "" + "blacklisted": "Na lista negra", + "deleted": "Excluído" }, "status": { - "pending": "", - "approved": "", - "declined": "", - "failed": "", - "completed": "" + "pending": "Pendente", + "approved": "Aprovado", + "declined": "Rejeitado", + "failed": "Falhou", + "completed": "Concluído" }, - "toBeDetermined": "" + "toBeDetermined": "TBD" }, "mediaRequests-requestStats": { - "name": "", + "name": "Estatísticas de Solicitações de Mídia", "description": "Estatísticas sobre suas solicitações de mídia", "option": {}, "titles": { @@ -2308,56 +2409,56 @@ "main": "Estatísticas de mídia", "approved": "Já aprovado", "pending": "Aprovações pendentes", - "processing": "", - "declined": "", - "available": "", + "processing": "Sendo processado", + "declined": "Já recusado", + "available": "Já disponível", "tv": "Solicitações de TV", "movie": "Solicitações de filmes", - "total": "" + "total": "Total" }, "users": { "main": "Principais usuários", - "requests": "" + "requests": "Solicitações" } } }, "mediaTranscoding": { - "name": "", - "description": "", + "name": "Transcodificação de mídia", + "description": "Estatísticas, fila atual e status dos workers de transcodificação de mídia", "option": { "defaultView": { - "label": "" + "label": "Visualização padrão" }, "queuePageSize": { - "label": "" + "label": "Tamanho da página da fila" } }, "tab": { - "workers": "", + "workers": "Workers", "queue": "Fila", "statistics": "Estatísticas" }, - "currentIndex": "", + "currentIndex": "{start}-{end} de {total}", "healthCheck": { - "title": "", - "queued": "", + "title": "Verificação de saúde", + "queued": "Em fila", "status": { - "healthy": "", - "unhealthy": "" + "healthy": "Saudável", + "unhealthy": "Não saudável" } }, "panel": { "statistics": { "empty": "Vazio", - "transcodes": "", - "transcodesCount": "", - "healthChecksCount": "", - "filesCount": "", - "savedSpace": "", - "healthChecks": "", - "videoCodecs": "", - "videoContainers": "", - "videoResolutions": "" + "transcodes": "Transcodificações", + "transcodesCount": "Transcodificações", + "healthChecksCount": "Verificações de saúde", + "filesCount": "Arquivos", + "savedSpace": "Espaço economizado", + "healthChecks": "Verificações de saúde", + "videoCodecs": "Codificadores", + "videoContainers": "Contêineres", + "videoResolutions": "Resoluções" }, "workers": { "empty": "Vazio", @@ -2366,7 +2467,7 @@ "eta": "TED", "progress": "Progresso", "transcode": "Transcodificar", - "healthCheck": "" + "healthCheck": "Verificação de saúde" } }, "queue": { @@ -2375,148 +2476,148 @@ "file": "Ficheiro", "size": "Tamanho", "transcode": "Transcodificar", - "healthCheck": "" + "healthCheck": "Verificação de saúde" } } } }, "rssFeed": { - "name": "", - "description": "", + "name": "Feeds RSS", + "description": "Monitora e exibe um ou mais feeds RSS, ATOM ou JSON genéricos", "option": { "feedUrls": { - "label": "" + "label": "URLs de feed" }, "enableRtl": { - "label": "" + "label": "Habilitar RTL" }, "textLinesClamp": { - "label": "" + "label": "Limite de linhas da descrição" }, "maximumAmountPosts": { - "label": "" + "label": "Limite de quantidade de posts" }, "hideDescription": { - "label": "" + "label": "Ocultar descrição" } } }, "releases": { - "name": "", - "description": "", + "name": "Lançamentos", + "description": "Exibe uma lista da versão atual dos repositórios fornecidos com a expressão regular de versão fornecida.", "option": { "newReleaseWithin": { - "label": "", - "description": "" + "label": "Novo lançamento dentro de", + "description": "Exemplo de uso: 1w (1 semana), 10M (10 meses). Tipos de unidades aceitas: h (horas), d (dias), w (semanas), M (meses), y (anos). Deixe em branco para não destacar novos lançamentos." }, "staleReleaseWithin": { - "label": "", - "description": "" + "label": "Lançamento Antigo Dentro de", + "description": "Exemplo de uso: 1w (1 semana), 10M (10 meses). Tipos de unidades aceitas: h (horas), d (dias), w (semanas), M (meses), y (anos). Deixe em branco para não destacar versões antigas." }, "showOnlyHighlighted": { - "label": "", - "description": "" + "label": "Exibir apenas destacados", + "description": "Exibir apenas lançamentos novos ou antigos. Conforme acima." }, "showDetails": { - "label": "" + "label": "Exibir detalhes" }, "showOnlyIcon": { - "label": "" + "label": "Exibir apenas ícones" }, "topReleases": { - "label": "", - "description": "" + "label": "Principais lançamentos", + "description": "O número máximo de lançamentos recentes a exibir. Zero significa sem limite." }, "repositories": { - "label": "", + "label": "Repositórios", "addRepository": { - "label": "" + "label": "Adicionar repositório" }, "importRepositories": { "label": "Importar do Docker", "loading": "Carregando imagens do Docker", "noImagesFound": "Nenhuma imagem do Docker encontrada", - "listFoundImages": "", - "listAlreadyImportedImages": "", - "allImagesAlreadyImported": "", + "listFoundImages": "Lista de imagens encontradas", + "listAlreadyImportedImages": "Lista de imagens já importadas", + "allImagesAlreadyImported": "Todas as imagens já importadas", "onlyAdminCanImport": "Apenas administradores podem importar do Docker", - "selectAll": "", - "deselectAll": "" + "selectAll": "Selecionar tudo", + "deselectAll": "Desmarcar tudo" }, "provider": { - "label": "" + "label": "Provedor" }, "identifier": { - "label": "", - "placeholder": "" + "label": "Identificador", + "placeholder": "Nome ou Proprietário/Nome" }, "name": { "label": "Nome" }, "versionFilter": { - "label": "", + "label": "Filtro de versão", "prefix": { - "label": "" + "label": "Prefixo" }, "precision": { - "label": "", + "label": "Precisão", "options": { - "none": "" + "none": "Nenhum(a)" } }, "suffix": { - "label": "" + "label": "Sufixo" }, "regex": { - "label": "" + "label": "Expressão regular (RegEx)" } }, "edit": { - "label": "" + "label": "Editar" }, "editForm": { - "title": "", + "title": "Editar repositório", "cancel": { - "label": "" + "label": "Cancelar" }, "confirm": { - "label": "" + "label": "Confirmar" } }, "importForm": { "title": "Importar do Docker" }, "example": { - "label": "" + "label": "Exemplo" }, - "invalid": "", + "invalid": "Definição de repositório inválida, verifique os valores", "noProvider": { - "label": "", - "tooltip": "" + "label": "Nenhum provedor", + "tooltip": "O provedor não pôde ser analisado, defina-o manualmente após importar as imagens" } } }, - "not-found": "", - "pre-release": "", - "archived": "", - "forked": "", - "starsCount": "", - "forksCount": "", - "issuesCount": "", - "markViewed": "", - "openProjectPage": "", - "openReleasePage": "", - "releaseDescription": "", - "projectDescription": "", - "created": "", + "not-found": "Não encontrado", + "pre-release": "Pré-lançamento", + "archived": "Arquivado", + "forked": "Fork", + "starsCount": "Estrelas", + "forksCount": "Forks", + "issuesCount": "Issues abertas", + "markViewed": "Marcar como visualizado", + "openProjectPage": "Abrir página do projeto", + "openReleasePage": "Abrir página do lançamento", + "releaseDescription": "Descrição do lançamento", + "projectDescription": "Descrição do projeto", + "created": "Criado", "error": { - "label": "", + "label": "Erro", "messages": { - "invalidIdentifier": "", - "noMatchingVersion": "", - "noReleasesFound": "", - "noProviderSeleceted": "", - "noProviderResponse": "" + "invalidIdentifier": "Identificador inválido", + "noMatchingVersion": "Nenhuma versão correspondente encontrada", + "noReleasesFound": "Nenhum lançamento encontrado", + "noProviderSeleceted": "Nenhum provedor selecionado", + "noProviderResponse": "Nenhuma resposta do provedor" } } }, @@ -2524,232 +2625,232 @@ "option": {}, "card": { "vpn": { - "countConnected": "" + "countConnected": "{count} conectados" } }, "error": { - "integrationsDisconnected": "", - "unknownContentOption": "" + "integrationsDisconnected": "Nenhum dado disponível, todas as integrações estão desconectadas", + "unknownContentOption": "Opção de conteúdo desconhecida para o widget de resumo do controlador de rede: " }, - "name": "", - "description": "" + "name": "Resumo do Controlador de Rede", + "description": "Exibe o resumo de um Controlador de Rede (como UniFi Controller)" }, "networkControllerStatus": { "card": { "variants": { "wired": { - "name": "" + "name": "Com fio" }, "wifi": { - "name": "" + "name": "Wi-Fi" } }, "users": { - "label": "" + "label": "Usuários" }, "guests": { - "label": "" + "label": "Convidados" } }, "option": { "content": { "option": { "wifi": { - "label": "" + "label": "Wi-Fi" }, "wired": { - "label": "" + "label": "Com fio" } }, - "label": "" + "label": "Conteúdo do widget" } }, "error": { - "integrationsDisconnected": "", - "unknownContentOption": "" + "integrationsDisconnected": "Nenhum dado disponível, todas as integrações estão desconectadas", + "unknownContentOption": "Opção de conteúdo desconhecida para o widget de status de rede: " }, - "name": "", - "description": "" + "name": "Status da Rede", + "description": "Exibir dispositivos conectados em uma rede" }, "networkController": { "error": { - "internalServerError": "" + "internalServerError": "Falha ao buscar resumo do Controlador de Rede" } }, "firewall": { - "name": "", - "description": "", + "name": "Monitoramento do Firewall", + "description": "Exibe um resumo dos firewalls", "tab": { - "system": "", - "interfaces": "" + "system": "Sistema", + "interfaces": "Interfaces" }, "error": { - "internalServerError": "" + "internalServerError": "Não foi possível obter dados do firewall" }, "option": { - "interfaces": "" + "interfaces": "Interfaces de rede a serem exibidas" }, "widget": { "fwname": "Nome", - "version": "", - "versiontitle": "", + "version": "Versão", + "versiontitle": "Versões", "cputitle": "Uso da CPU", - "memorytitle": "", - "cpu": "", - "memory": "", + "memorytitle": "Uso da Memória", + "cpu": "CPU", + "memory": "Memória", "interfaces": { "name": "nome", - "trans": "", - "recv": "", - "title": "" + "trans": "Transmitido", + "recv": "Recebido", + "title": "Interfaces de rede" } } }, "notifications": { - "name": "", - "description": "", - "noItems": "", + "name": "Notificações", + "description": "Exibe histórico de notificações de uma integração", + "noItems": "Nenhuma notificação para exibir.", "option": {} }, "systemResources": { - "name": "", + "name": "Recursos do Sistema", "description": "Utilização da CPU, Memória, Disco e outro hardware do seu sistema", "option": { "hasShadow": { - "label": "" + "label": "Habilitar sombreamento do gráfico" }, "visibleCharts": { - "label": "", - "description": "", + "label": "Gráficos visíveis", + "description": "Selecione os gráficos que você deseja que estejam visíveis.", "option": { - "cpu": "", - "memory": "", - "network": "" + "cpu": "CPU", + "memory": "Memória", + "network": "Rede" } }, "labelDisplayMode": { - "label": "", + "label": "Modo de exibição do rótulo", "option": { - "textWithIcon": "", - "text": "", - "icon": "", - "hidden": "" + "textWithIcon": "Exibir texto com ícone", + "text": "Exibir apenas texto", + "icon": "Exibir apenas ícones", + "hidden": "Ocultar rótulo" } } }, "card": { - "cpu": "", - "memory": "", - "network": "", - "up": "", - "down": "" + "cpu": "CPU", + "memory": "MEM", + "network": "REDE", + "up": "ENVIO", + "down": "RECEBIDO" } }, "systemDisks": { - "name": "", - "description": "", + "name": "Discos do sistema", + "description": "Uso de disco do seu sistema", "option": { "showTemperatureIfAvailable": { - "label": "" + "label": "Mostrar temperatura se disponível" }, "displayMode": { - "label": "", + "label": "Modo de exibição", "option": { "percentage": { - "label": "" + "label": "Porcentagem (ex: 76%)" }, "absolute": { - "label": "" + "label": "Valores absolutos (ex: 800GB / 1TB)" }, "free": { - "label": "" + "label": "Porcentagem de espaço livre (ex: 24% livre)" } } }, "showBackgroundBar": { - "label": "" + "label": "Exibir barra de uso em segundo plano" } }, "status": { - "unhealthy": "" + "unhealthy": "Não saudável" } } }, "widgetPreview": { "toggle": { - "enabled": "", - "disabled": "" + "enabled": "Modo de edição habilitado", + "disabled": "Modo de edição desabilitado" }, "dimensions": { - "title": "" + "title": "Alterar dimensões" } }, "board": { "action": { "duplicate": { - "title": "", - "message": "", + "title": "Duplicar painel", + "message": "Isso duplicará o painel {name} com todo o seu conteúdo. Se os widgets fizerem referência a integrações que você não tem permissão para usar, eles serão removidos.", "notification": { "success": { - "title": "", - "message": "" + "title": "Painel duplicado", + "message": "O painel foi duplicado com sucesso" }, "error": { - "title": "", - "message": "" + "title": "Não foi possível duplicar o painel", + "message": "O painel não pôde ser duplicado" } } }, "edit": { "notification": { "success": { - "title": "", - "message": "" + "title": "Alterações aplicadas com sucesso", + "message": "O painel foi salvo com sucesso" }, "error": { - "title": "", - "message": "" + "title": "Não foi possível aplicar as alterações", + "message": "O painel não pôde ser salvo" } }, "confirmLeave": { - "title": "", - "message": "" + "title": "Alterações não salvas", + "message": "Você tem alterações não salvas, tem certeza de que deseja sair?" } }, "oldImport": { - "label": "", + "label": "Importar do Homarr anterior à versão 1.0.0", "notification": { "success": { - "title": "", - "message": "" + "title": "Importação bem-sucedida", + "message": "O painel foi importado com sucesso" }, "error": { - "title": "", - "message": "" + "title": "Falha na importação", + "message": "O painel não pôde ser importado, verifique os logs para mais detalhes" } }, "form": { "file": { - "label": "", - "invalidError": "" + "label": "Selecionar arquivo JSON", + "invalidError": "Arquivo de configuração inválido" }, "apps": { "label": "Aplicativos", "avoidDuplicates": { - "label": "", - "description": "" + "label": "Evitar duplicatas", + "description": "Ignora aplicativos onde já existe um aplicativo com o mesmo href" }, "onlyImportApps": { - "label": "", - "description": "Só adiciona os aplicativos, o quadro precisa ser recriado manualmente" + "label": "Importar apenas aplicativos", + "description": "Só adiciona os aplicativos, o painel precisa ser recriado manualmente" } }, "name": { - "label": "Nome do quadro" + "label": "Nome do painel" }, "screenSize": { - "label": "", - "description": "", + "label": "Tamanho da tela", + "description": "Nas versões anteriores à 1.0 existiam três modos diferentes, então você podia escolher a quantidade de colunas para cada tamanho de tela.", "option": { "sm": "Pequeno", "md": "Médio", @@ -2757,16 +2858,16 @@ } }, "sidebarBehavior": { - "label": "", - "description": "", + "label": "Comportamento da barra lateral", + "description": "As barras laterais foram removidas na versão 1.0. Você pode selecionar o que deve acontecer com os itens dentro delas.", "option": { "lastSection": { - "label": "", - "description": "" + "label": "Última seção", + "description": "A barra lateral será exibida abaixo da última seção" }, "removeItems": { - "label": "", - "description": "" + "label": "Remover itens", + "description": "Os itens presentes na barra lateral serão removidos" } } } @@ -2781,56 +2882,56 @@ }, "field": { "pageTitle": { - "label": "" + "label": "Título da página" }, "metaTitle": { - "label": "" + "label": "Meta-título" }, "logoImageUrl": { - "label": "" + "label": "URL da imagem de logo" }, "faviconImageUrl": { - "label": "" + "label": "URL da imagem do favicon" }, "backgroundImageUrl": { - "label": "", - "placeholder": "", + "label": "URL da imagem do plano de fundo", + "placeholder": "Comece a digitar para pesquisar imagens locais", "group": { - "your": "", - "other": "" + "your": "Suas imagens", + "other": "Outras imagens" } }, "backgroundImageAttachment": { "label": "Anexo de imagem de fundo", "option": { "fixed": { - "label": "", - "description": "" + "label": "Fixo", + "description": "O plano de fundo permanece na mesma posição." }, "scroll": { - "label": "", - "description": "" + "label": "Rolar", + "description": "O plano de fundo rola com o mouse." } } }, "backgroundImageRepeat": { - "label": "", + "label": "Repetição da imagem de fundo", "option": { "repeat": { - "label": "", - "description": "" + "label": "Repetir", + "description": "A imagem é repetida o quanto for necessário para cobrir toda a área de pintura da imagem de fundo." }, "no-repeat": { - "label": "", - "description": "" + "label": "Não repetir", + "description": "A imagem não é repetida e pode não preencher todo o espaço." }, "repeat-x": { - "label": "", - "description": "" + "label": "Repetir X", + "description": "Igual a 'Repetir' mas apenas no eixo horizontal." }, "repeat-y": { - "label": "", - "description": "" + "label": "Repetir Y", + "description": "Igual a 'Repetir' mas apenas no eixo vertical." } } }, @@ -2838,12 +2939,12 @@ "label": "Tamanho da imagem de fundo", "option": { "cover": { - "label": "", - "description": "" + "label": "Cobrir", + "description": "Dimensiona a imagem o menor possível para cobrir toda a janela cortando o espaço excessivo." }, "contain": { - "label": "", - "description": "" + "label": "Incluir", + "description": "Dimensione a imagem o máximo possível dentro do seu contêiner, sem recortá-la ou distorcê-la." } } }, @@ -2854,38 +2955,38 @@ "label": "Cor secundária" }, "opacity": { - "label": "" + "label": "Opacidade" }, "iconColor": { - "label": "" + "label": "Cor do ícone" }, "clearColor": { - "label": "" + "label": "Limpar cor" }, "customCss": { - "label": "", + "label": "CSS personalizado para este painel", "description": "Além disso, personalize seu painel usando CSS, recomendado apenas para usuários experientes", "customClassesAlert": { - "title": "", - "description": "" + "title": "Classes personalizadas", + "description": "Você pode adicionar classes personalizadas aos itens do seu painel nas opções avançadas de cada item e usá-las no CSS personalizado acima." } }, "disableStatus": { - "label": "", - "description": "" + "label": "Desabilitar status do aplicativo", + "description": "Desabilita a verificação de status para todos os aplicativos neste painel" }, "columnCount": { - "label": "" + "label": "Contagem de coluna" }, "itemRadius": { - "label": "", - "description": "", + "label": "Raio do item", + "description": "Altera o arredondamento dos blocos no seu painel", "option": { - "xs": "", - "sm": "", - "md": "", - "lg": "", - "xl": "" + "xs": "Muito pequeno", + "sm": "Pequeno", + "md": "Médio", + "lg": "Grande", + "xl": "Muito grande" } }, "name": { @@ -2893,25 +2994,25 @@ }, "isPublic": { "label": "Público", - "description": "" + "description": "Painéis públicos são acessíveis a todos, mesmo sem uma conta." } }, "content": { "metaTitle": "Quadro {boardName}" }, "setting": { - "title": "Configurações para o quadro {boardName}", + "title": "Configurações para o painel {boardName}", "section": { "general": { "title": "Geral", - "unrecognizedLink": "" + "unrecognizedLink": "O link fornecido não é reconhecido e não será exibido, mas ainda pode funcionar." }, "layout": { - "title": "", + "title": "Layout", "responsive": { - "title": "", + "title": "Layouts responsivos", "action": { - "add": "" + "add": "Adicionar layout" } } }, @@ -2919,26 +3020,26 @@ "title": "Antecedentes" }, "appearance": { - "title": "" + "title": "Aparência" }, "customCss": { - "title": "" + "title": "CSS personalizado" }, "behavior": { - "title": "" + "title": "Comportamento" }, "access": { - "title": "", + "title": "Controle de acesso", "permission": { "item": { "view": { - "label": "Exibir quadro" + "label": "Exibir painel" }, "modify": { - "label": "" + "label": "Editar painel" }, "full": { - "label": "" + "label": "Acesso completo" } } } @@ -2947,41 +3048,41 @@ "title": "Zona de risco", "action": { "rename": { - "label": "Renomear quadro", - "description": "", + "label": "Renomear painel", + "description": "Alterar o nome quebrará quaisquer links para este painel.", "button": "Alterar nome", "modal": { - "title": "Renomear quadro" + "title": "Renomear painel" } }, "visibility": { - "label": "", + "label": "Editar visibilidade do painel", "description": { - "public": "", - "private": "" + "public": "Este painel está público atualmente.", + "private": "Este painel está privado atualmente." }, "button": { - "public": "", - "private": "" + "public": "Tornar privado", + "private": "Tornar público" }, "confirm": { "public": { - "title": "", - "description": "" + "title": "Tornar painel privado", + "description": "Tem certeza que deseja tornar esse painel privado? Isso ocultará o painel do público. Os links para convidados serão desativados." }, "private": { - "title": "", - "description": "" + "title": "Tornar painel público", + "description": "Tem certeza que deseja tornar esse painel público? Isso tornará o painel acessível a todos." } } }, "delete": { - "label": "", - "description": "", - "button": "", + "label": "Excluir este painel", + "description": "Uma vez que você exclui um painel, não há como voltar atrás. Por favor, tenha certeza.", + "button": "Excluir este painel", "confirm": { - "title": "Excluir quadro", - "description": "" + "title": "Excluir painel", + "description": "Tem certeza de que deseja excluir este painel? Isso excluirá permanentemente o painel e todo o seu conteúdo." } } } @@ -2990,33 +3091,33 @@ }, "error": { "noBoard": { - "title": "", - "description": "", - "link": "", - "notice": "Para fazer esta página desaparecer, crie um quadro e defina-o como quadro inicial" + "title": "Bem-vindo ao Homarr", + "description": "Um painel elegante e moderno que coloca todos os seus aplicativos e serviços ao seu alcance.", + "link": "Crie seu primeiro painel", + "notice": "Para fazer esta página desaparecer, crie um painel e defina-o como painel inicial" }, "notFound": { - "title": "", - "description": "", - "link": "", - "notice": "" + "title": "Quadro não encontrado", + "description": "O painel especificado não foi encontrado ou você não tem acesso a ele.", + "link": "Visualizar todos os painéis", + "notice": "Verifique o link ou entre em contato com um administrador se você acha que deveria estar acessível" }, "homeBoard": { - "title": "", + "title": "Nenhum painel inicial estabelecido", "admin": { - "description": "", - "link": "", - "notice": "" + "description": "Você ainda não definiu um painel inicial para o servidor.", + "link": "Configurar painel inicial do servidor", + "notice": "Para fazer essa página desaparecer para todos os usuários, defina um painel inicial para o servidor" }, "user": { - "description": "", - "link": "", - "notice": "" + "description": "Você ainda não definiu um painel inicial.", + "link": "Configure seu quadro inicial", + "notice": "Para fazer essa página desaparecer, especifique o quadro inicial em suas preferências" }, "anonymous": { - "description": "", - "link": "", - "notice": "" + "description": "O administrador do servidor ainda não definiu um quadro inicial.", + "link": "Visualizar painéis públicos", + "notice": "Para fazer essa página desaparecer, peça ao administrador do servidor para definir um quadro inicial para o servidor" } } } @@ -3027,39 +3128,39 @@ "label": "Nome" }, "columnCount": { - "label": "" + "label": "Contagem de colunas" }, "breakpoint": { - "label": "", - "description": "" + "label": "Breakpoint", + "description": "O layout será usado em todas as telas maiores que este breakpoint até o próximo breakpoint maior." } } }, "management": { - "metaTitle": "", + "metaTitle": "Gerenciamento", "title": { "morning": "Bom dia, {username}", "afternoon": "Boa tarde, {username}", "evening": "Boa noite, {username}" }, "notFound": { - "title": "", - "text": "" + "title": "Não encontrado", + "text": "Não foi possível encontrar o recurso solicitado" }, "navbar": { "items": { "home": "Início", "boards": "Placas", "apps": "Aplicativos", - "integrations": "", - "searchEngies": "", - "medias": "", + "integrations": "Integrações", + "searchEngies": "Mecanismos de busca", + "medias": "Mídias", "users": { "label": "Usuários", "items": { "manage": "Gerenciar", "invites": "Convites", - "groups": "" + "groups": "Grupos" } }, "tools": { @@ -3067,10 +3168,10 @@ "items": { "docker": "Docker", "kubernetes": "Kubernetes", - "logs": "", - "api": "", - "certificates": "", - "tasks": "" + "logs": "Logs", + "api": "API", + "certificates": "Certificados", + "tasks": "Tarefas" } }, "settings": "Configurações", @@ -3078,9 +3179,9 @@ "label": "Ajuda", "items": { "documentation": "Documentação", - "submitIssue": "", + "submitIssue": "Enviar um problema", "discord": "Discórdia da comunidade", - "sourceCode": "" + "sourceCode": "Código-fonte" } }, "about": "Sobre" @@ -3092,51 +3193,51 @@ "board": "Placas", "user": "Usuários", "invite": "Convites", - "integration": "", + "integration": "Integrações", "app": "Aplicativos", - "group": "", - "searchEngine": "", - "media": "" + "group": "Grupos", + "searchEngine": "Mecanismos de busca", + "media": "Mídias" }, "statisticLabel": { "boards": "Placas", - "resources": "", - "authentication": "", - "authorization": "" + "resources": "Recursos", + "authentication": "Autenticação", + "authorization": "Autorização" }, "heroBanner": { - "title": "", - "subtitle": "" + "title": "Bem-vindo de volta ao seu", + "subtitle": "Quadro {app}" } }, "board": { "title": "Suas placas", "action": { "new": { - "label": "" + "label": "Novo quadro" }, "open": { - "label": "" + "label": "Abrir quadro" }, "settings": { "label": "Configurações" }, "setHomeBoard": { - "label": "", + "label": "Definir como quadro inicial", "badge": { "label": "Início", - "tooltip": "" + "tooltip": "Este quadro será exibido como seu quadro inicial" } }, "setMobileHomeBoard": { - "label": "", + "label": "Definir como painel para dispositivos móveis", "badge": { - "label": "", - "tooltip": "" + "label": "Dispositivos móveis", + "tooltip": "Esse painel será exibido como padrão para dispositivos móveis" } }, "duplicate": { - "label": "" + "label": "Quadro duplicado" }, "delete": { "label": "Excluir permanentemente", @@ -3147,8 +3248,8 @@ } }, "visibility": { - "public": "", - "private": "" + "public": "Este quadro é publico", + "private": "Este quadro é privado" }, "modal": { "createBoard": { @@ -3161,24 +3262,24 @@ } }, "media": { - "includeFromAllUsers": "" + "includeFromAllUsers": "Incluir mídia para todos os usuários" }, "user": { - "back": "", - "fieldsDisabledExternalProvider": "", + "back": "Voltar aos usuários", + "fieldsDisabledExternalProvider": "Alguns campos estão desabilitados porque são gerenciados por um provedor de autenticação externo.", "setting": { "general": { "title": "Geral", "item": { - "language": "", + "language": "Idioma & Região", "board": { - "title": "", + "title": "Quadro inicial", "type": { - "general": "", - "mobile": "" + "general": "Geral", + "mobile": "Dispositivos móveis" } }, - "search": "", + "search": "Buscar", "firstDayOfWeek": "Primeiro dia da semana", "accessibility": "Acessibilidade" } @@ -3199,46 +3300,46 @@ }, "create": { "metaTitle": "Criar usuário", - "title": "", + "title": "Criar novo usuário", "step": { "personalInformation": { - "label": "" + "label": "Informações pessoais" }, "security": { "label": "Segurança" }, "groups": { - "label": "", - "title": "", - "description": "" + "label": "Grupos", + "title": "Selecione todos os grupos dos quais o usuário deve ser membro", + "description": "O grupo {everyoneGroup} é atribuído a todos os usuários e não pode ser removido." }, "review": { - "label": "" + "label": "Revisão" }, "completed": { - "title": "" + "title": "Usuário criado" }, "error": { - "title": "" + "title": "Falha ao criar usuário" } }, "action": { - "createAnother": "", - "back": "" + "createAnother": "Criar outro usuário", + "back": "Retornar à lista de usuários" } }, "invite": { "title": "Gerenciar convites de usuários", "action": { "new": { - "title": "", + "title": "Novo convite", "description": "Após a expiração, um convite não será mais válido e o destinatário do convite não poderá criar uma conta." }, "copy": { - "title": "", - "description": "", + "title": "Copiar convite", + "description": "Seu convite foi gerado. Após o fechamento deste modal, você não poderá mais copiar este link. Caso não deseje mais convidar essa pessoa, você pode excluir este convite a qualquer momento.", "link": "Link do convite", - "button": "" + "button": "Copiar e fechar" }, "delete": { "title": "Excluir convite", @@ -3247,7 +3348,7 @@ }, "field": { "id": { - "label": "" + "label": "ID" }, "creator": { "label": "Criador" @@ -3256,36 +3357,36 @@ "label": "Data de expiração" }, "token": { - "label": "" + "label": "Token" } } } }, "group": { - "back": "", + "back": "Voltar aos grupos", "setting": { "general": { "title": "Geral", "owner": "Dono", - "ownerOfGroup": "", - "ownerOfGroupDeleted": "" + "ownerOfGroup": "Proprietário deste grupo", + "ownerOfGroupDeleted": "O proprietário deste grupo foi excluído. Atualmente não possui proprietário." }, "setting": { - "title": "", - "alert": "", + "title": "Configurações", + "alert": "As configurações do grupo são priorizadas pela ordem dos grupos na lista. As configurações superiores substituem as configurações inferiores.", "board": { - "title": "" + "title": "Painéis" } }, "members": { - "title": "", - "search": "", - "notFound": "" + "title": "Membros", + "search": "Encontrar um membro", + "notFound": "Nenhum membro encontrado" }, "permissions": { - "title": "", + "title": "Permissões", "form": { - "unsavedChanges": "" + "unsavedChanges": "Você tem alterações não salvas!" } } } @@ -3294,198 +3395,201 @@ "title": "Configurações", "notification": { "success": { - "message": "" + "message": "Configurações salvas com sucesso" }, "error": { - "message": "" + "message": "Erro ao salvar permissões" } }, "section": { "analytics": { - "title": "", + "title": "Análises", "general": { - "title": "", - "text": "" + "title": "Enviar análises anônimas", + "text": "O Homarr enviará análises anonimizadas usando o software de código aberto Umami. Quando habilitado, coletamos: versão do Homarr, tipo de banco de dados (MySQL/PostgreSQL/SQLite), status Docker/Kubernetes, métodos de autenticação habilitados e a quantidade de cada recurso. Todos os dados são anônimos e agregados - nenhuma informação pessoal, URLs, nomes ou dados identificáveis são coletados. Isso ajuda nossa equipe de código aberto a entender padrões de uso e priorizar o desenvolvimento." }, "widgetData": { - "title": "", - "text": "" + "title": "Dados de widgets", + "text": "Envia quais widgets (e suas quantidades) você configurou. Não inclui URLs, nomes ou quaisquer outros dados." }, "integrationData": { - "title": "", - "text": "" + "title": "Dados de integrações", + "text": "Envia quais integrações (e suas quantidades) você configurou. Não inclui URLs, nomes ou quaisquer outros dados." }, "usersData": { - "title": "", - "text": "" + "title": "Dados dos usuários", + "text": "Envia a quantidade de usuários e se você ativou SSO" } }, "crawlingAndIndexing": { - "title": "", - "warning": "", + "title": "Rastreamento e Indexação", + "warning": "Ativar ou desativar qualquer configuração aqui afetará significativamente a forma como os mecanismos de pesquisa indexam e rastreiam sua página. Qualquer configuração é uma solicitação e cabe ao rastreador aplicar essas configurações. Qualquer modificação pode levar vários dias ou semanas para serem aplicadas. Algumas configurações podem ser específicas do mecanismo de busca.", "noIndex": { - "title": "", - "text": "" + "title": "Não indexar", + "text": "Não indexe o site nos mecanismos de busca e não o exiba em nenhum resultado de pesquisa" }, "noFollow": { - "title": "", - "text": "" + "title": "Não seguir", + "text": "Não siga nenhum link durante a indexação. Desabilitar isso fará com que os rastreadores tentem seguir todos os links no Homarr." }, "noTranslate": { - "title": "", - "text": "" + "title": "Não traduzir", + "text": "Quando o idioma do site provavelmente não é aquele que o usuário provavelmente deseja ler, o Google mostrará um link de tradução nos resultados da pesquisa" }, "noSiteLinksSearchBox": { - "title": "", - "text": "" + "title": "Sem caixa de pesquisa de links do site", + "text": "O Google criará uma caixa de pesquisa com os links rastreados, juntamente com outros links diretos. Habilitar isso pedirá ao Google para desabilitar essa caixa." } }, "board": { "title": "Placas", "homeBoard": { - "label": "", - "mobileLabel": "", - "description": "" + "label": "Painel inicial global", + "mobileLabel": "Painel para dispositivos móveis (global)", + "description": "Apenas painéis públicos estão disponíveis para seleção" }, "status": { - "title": "", + "title": "Status de aplicativo", "enableStatusByDefault": { - "label": "", - "description": "" + "label": "Ativar status por padrão", + "description": "Ao adicionar um item de aplicativo, o status será ativado por padrão" }, "forceDisableStatus": { - "label": "", - "description": "" + "label": "Forçar status de desativação", + "description": "O status dos aplicativos será desativado para todos os usuários e não poderá ser ativado" } } }, "user": { - "title": "", + "title": "Usuários", "enableGravatar": { - "label": "", - "description": "" + "label": "Ativar Gravatar", + "description": "Usa avatares de usuário do Libravatar/Gravatar quando nenhum avatar personalizado está definido e um e-mail está configurado" } }, "search": { - "title": "", + "title": "Buscar", "defaultSearchEngine": { - "label": "", - "description": "" + "label": "Mecanismo de busca padrão global", + "description": "Mecanismos de busca de integração não podem ser selecionados aqui" } }, "appearance": { "title": "Aparência", "defaultColorScheme": { - "label": "", + "label": "Esquema de cores padrão", "options": { - "light": "", - "dark": "" + "light": "Claro", + "dark": "Escuro" } } }, "culture": { - "title": "", + "title": "Cultura", "defaultLocale": { - "label": "" + "label": "Idioma padrão" } } } }, "tool": { "tasks": { - "title": "", + "title": "Tarefas", "status": { - "idle": "", + "idle": "Ocioso", "running": "Em execução", "error": "Erro", - "disabled": "" + "disabled": "Desabilitado" }, "job": { "minecraftServerStatus": { - "label": "" + "label": "Status do servidor Minecraft" }, "iconsUpdater": { - "label": "" + "label": "Atualizador de Ícones" }, "analytics": { - "label": "" + "label": "Análises" }, "smartHomeEntityState": { - "label": "" + "label": "Estado de Entidade do Smart Home" }, "ping": { - "label": "" + "label": "Pings" }, "mediaServer": { "label": "Servidor de Mídia" }, "mediaOrganizer": { - "label": "" + "label": "Organizadores de Mídia" }, "downloads": { - "label": "" + "label": "Downloads" }, "mediaRequestStats": { - "label": "" + "label": "Estatísticas de solicitações de mídia" }, "mediaRequestList": { - "label": "" + "label": "Lista de solicitações de mídia" }, "rssFeeds": { - "label": "" + "label": "Feeds RSS" }, "indexerManager": { - "label": "" + "label": "Gerenciador de Indexadores" }, "healthMonitoring": { - "label": "" + "label": "Monitoramento de saúde" }, "dnsHole": { - "label": "" + "label": "Dados do DNS Hole" }, "updateChecker": { - "label": "" + "label": "Verificador de atualizações" }, "mediaTranscoding": { - "label": "" + "label": "Transcodificação de mídia" }, "networkController": { - "label": "" + "label": "Controlador de rede" }, "refreshNotifications": { - "label": "" + "label": "Atualizador de notificações" }, "dockerContainers": { "label": "Contêineres do Docker" }, "firewallCpu": { - "label": "" + "label": "CPU do Firewall" }, "firewallMemory": { - "label": "" + "label": "Memória do Firewall" }, "firewallVersion": { - "label": "" + "label": "Versão do Firewall" }, "firewallInterfaces": { - "label": "" + "label": "Interfaces de firewall" }, "weather": { + "label": "Clima" + }, + "tracearr": { "label": "" } }, "interval": { - "seconds": "", - "minutes": "", - "hours": "", - "midnight": "", - "weeklyMonday": "", + "seconds": "A cada {interval, plural, =1 {segundo} other {# segundos}}", + "minutes": "A cada {interval, plural, =1 {minuto} other {# minutos}}", + "hours": "A cada {interval, plural, =1 {hora} other {# horas}}", + "midnight": "Todo dia à meia-noite", + "weeklyMonday": "Toda semana na segunda-feira", "update": { "success": { - "message": "" + "message": "Intervalo atualizado com sucesso" }, "error": { - "message": "" + "message": "Erro ao atualizar intervalo" } } }, @@ -3497,62 +3601,62 @@ "label": "Nome" }, "interval": { - "label": "" + "label": "Intervalo de agendamento" }, "lastExecution": { - "label": "" + "label": "Última Execução" }, "actions": { - "label": "" + "label": "Ações" } }, "table": { - "search": "" + "search": "Buscar {count} tarefas..." }, "action": { "refresh": { - "label": "" + "label": "Atualizar" } }, "refresh": { "success": { - "message": "" + "message": "Tarefas atualizadas com sucesso" }, "error": { - "message": "" + "message": "Erro ao atualizar tarefas" } }, "trigger": { "success": { - "message": "" + "message": "Tarefa acionada com sucesso" }, "error": { - "message": "" + "message": "Falha ao acionar tarefa" } }, "enable": { "success": { - "message": "" + "message": "Tarefa habilitada com sucesso" } }, "disable": { "success": { - "message": "" + "message": "Tarefa desabilitada com sucesso" } }, "toggle": { "error": { - "message": "" + "message": "Falha ao alternar status da tarefa" } } }, "api": { - "title": "", + "title": "API", "modal": { "createApiToken": { - "title": "", - "description": "", - "button": "" + "title": "Token de API criado", + "description": "O token de API foi criado. Atenção, esse token é encriptado no banco de dados e jamais poderá ser transferido novamente a você. Se você perder este token, você não será mais capaz de recuperar este token específico.", + "button": "Copiar e fechar" } }, "tab": { @@ -3560,22 +3664,22 @@ "label": "Documentação" }, "apiKey": { - "label": "", - "title": "", + "label": "Autenticação", + "title": "Chaves de API", "button": { - "createApiToken": "" + "createApiToken": "Criar token de API" }, "modal": { "delete": { - "title": "", - "text": "" + "title": "Remover token de API", + "text": "Isso excluirá permanentemente o token de API. Clientes de API que usam este token não poderão mais autenticar e executar solicitações de API. Esta ação não pode ser desfeita." } }, "table": { "header": { - "id": "", - "createdBy": "", - "actions": "" + "id": "ID", + "createdBy": "Criado por", + "actions": "Ações" } } } @@ -3583,47 +3687,47 @@ } }, "about": { - "version": "", - "text": "", + "version": "Versão {version}", + "text": "O Homarr é um projeto de código aberto impulsionado pela comunidade e mantido por voluntários. Graças a essas pessoas, o Homarr tem sido um projeto em crescimento desde 2021. Nossa equipe trabalha remotamente em vários países diferentes no Homarr, em seu tempo livre e sem remuneração.", "accordion": { "contributors": { - "title": "", - "subtitle": "" + "title": "Contribuidores", + "subtitle": "{count} mantendo código e Homarr" }, "translators": { - "title": "", - "subtitle": "" + "title": "Tradutores", + "subtitle": "{count} traduções contribuídas em vários idiomas" }, "libraries": { - "title": "", - "subtitle": "" + "title": "Bibliotecas", + "subtitle": "{count} usadas no código do Homarr" }, "hotkeys": { - "title": "", - "subtitle": "", + "title": "Teclas de atalho", + "subtitle": "Atalhos de teclado para melhorar seu fluxo de trabalho", "field": { - "shortcut": "", - "action": "" + "shortcut": "Atalhos", + "action": "Ação" }, "action": { - "toggleBoardEdit": "", - "toggleColorScheme": "", - "saveNotebook": "", - "openSpotlight": "" + "toggleBoardEdit": "Alternar para o modo de edição do quadro", + "toggleColorScheme": "Alternar entre modo claro/escuro", + "saveNotebook": "Salvar bloco de notas (apenas dentro do widget de bloco de notas)", + "openSpotlight": "Abrir busca" }, - "note": "" + "note": "Dica: Mod refere-se tanto à tecla Ctrl quanto à tecla ⌘ no macOS" } } } } }, "docker": { - "title": "", + "title": "Contêineres", "table": { - "updated": "", - "search": "", - "selected": "", - "footer": "" + "updated": "Atualizado em {when}", + "search": "Buscar {count} contêineres", + "selected": "{selectCount} de {totalCount} contêineres selecionados", + "footer": "Total de contêineres: {count}" }, "field": { "name": { @@ -3636,17 +3740,17 @@ "running": "Em execução", "paused": "Pausado", "restarting": "Recomeço", - "exited": "", + "exited": "Finalizado", "removing": "Remoção", - "dead": "" + "dead": "Morto" } }, "stats": { "cpu": { - "label": "" + "label": "CPU" }, "memory": { - "label": "" + "label": "Memória" } }, "containerImage": { @@ -3657,17 +3761,17 @@ } }, "action": { - "title": "", + "title": "Ações", "start": { "label": "Iniciar", "notification": { "success": { - "title": "", - "message": "" + "title": "Contêineres iniciados", + "message": "Os contêineres foram iniciados com sucesso" }, "error": { - "title": "", - "message": "" + "title": "Os contêineres não foram iniciados", + "message": "Os contêineres não puderam ser iniciados" } } }, @@ -3675,12 +3779,12 @@ "label": "Parar", "notification": { "success": { - "title": "", - "message": "" + "title": "Os contêineres foram parados", + "message": "Os contêineres foram parados com sucesso" }, "error": { - "title": "", - "message": "" + "title": "Os contêineres não foram parados", + "message": "Os contêineres não puderam ser parados" } } }, @@ -3688,12 +3792,12 @@ "label": "Reiniciar", "notification": { "success": { - "title": "", - "message": "" + "title": "Contêineres reiniciados", + "message": "Os contêineres foram reiniciados com sucesso" }, "error": { - "title": "", - "message": "" + "title": "Contêineres não reiniciados", + "message": "Os contêineres não puderam ser reiniciados" } } }, @@ -3701,38 +3805,38 @@ "label": "Excluir", "notification": { "success": { - "title": "", - "message": "" + "title": "Contêineres removidos", + "message": "Os contêineres foram removidos com sucesso" }, "error": { - "title": "", - "message": "" + "title": "Contêineres não removidos", + "message": "Os contêineres não puderam ser removidos" } } }, "refresh": { - "label": "", + "label": "Atualizar", "notification": { "success": { - "title": "", - "message": "" + "title": "Os contêineres foram atualizados", + "message": "Você está agora visualizando os dados mais recentes" }, "error": { - "title": "", - "message": "" + "title": "Os contêineres não foram atualizados", + "message": "Algo deu errado enquanto atualizava os contêineres" } } }, "addToHomarr": { - "label": "", + "label": "Adicionar ao Homarr", "notification": { "success": { - "title": "", - "message": "" + "title": "Adicionado ao Homarr", + "message": "Os aplicativos selecionados foram adicionados ao Homarr" }, "error": { - "title": "", - "message": "" + "title": "Não foi possivel adicionar ao Homarr", + "message": "Os aplicativos selecionados não puderam ser adicionados ao Homarr" } }, "modal": { @@ -3746,238 +3850,238 @@ }, "kubernetes": { "cluster": { - "title": "", - "label": "", - "providers": "", - "version": "", - "architecture": "", + "title": "Painel do Cluster", + "label": "Cluster", + "providers": "Provedores", + "version": "Versão", + "architecture": "Arquitetura", "capacity": { - "title": "", + "title": "Capacidade", "resource": { - "reserved": "", - "used": "" + "reserved": "Reservado", + "used": "Usado" } }, "resources": { - "title": "", - "nodes": "", - "namespaces": "", - "ingresses": "", - "services": "", - "pods": "", - "configmaps": "", - "secrets": "", - "volumes": "" + "title": "Recursos", + "nodes": "Nós", + "namespaces": "Namespaces", + "ingresses": "Ingresses", + "services": "Serviços", + "pods": "Pods", + "configmaps": "ConfigMaps", + "secrets": "Secrets", + "volumes": "Volumes" } }, "nodes": { - "label": "", + "label": "Nós", "field": { "name": { - "label": "" + "label": "Nome" }, "state": { - "label": "", + "label": "Estado", "option": { - "ready": "", - "NotReady": "" + "ready": "Pronto", + "NotReady": "Não está pronto" } }, "cpu": { - "label": "" + "label": "CPU" }, "memory": { - "label": "" + "label": "RAM" }, "pods": { - "label": "" + "label": "Pods" }, "operatingSystem": { - "label": "" + "label": "SO" }, "architecture": { - "label": "" + "label": "Arquitetura" }, "kubernetesVersion": { "label": "Versão do Kubernetes" }, "creationTimestamp": { - "label": "" + "label": "Criado" } }, "table": { - "search": "" + "search": "Buscar {count} nós" } }, "namespaces": { - "label": "", + "label": "Namespaces", "field": { "name": { - "label": "" + "label": "Nome" }, "state": { - "label": "", + "label": "Estado", "option": { - "active": "", - "terminating": "" + "active": "Ativo", + "terminating": "Terminando" } }, "creationTimestamp": { - "label": "" + "label": "Criado" } }, "table": { - "search": "" + "search": "Buscar {count} namespaces" } }, "ingresses": { - "label": "", + "label": "Ingresses", "field": { "name": { - "label": "" + "label": "Nome" }, "namespace": { - "label": "" + "label": "Namespace" }, "className": { - "label": "" + "label": "Nome da classe" }, "rulesAndPaths": { - "label": "" + "label": "Regras & caminhos" }, "creationTimestamp": { - "label": "" + "label": "Criado" } }, "table": { - "search": "" + "search": "Buscar {count} ingresses" } }, "services": { - "label": "", + "label": "Serviços", "field": { "name": { - "label": "" + "label": "Nome" }, "namespace": { - "label": "" + "label": "Namespace" }, "type": { - "label": "" + "label": "Tipo" }, "ports": { - "label": "" + "label": "Portas" }, "targetPorts": { - "label": "" + "label": "Portas de destino" }, "clusterIP": { - "label": "" + "label": "IP do Cluster" }, "creationTimestamp": { - "label": "" + "label": "Criado" } }, "table": { - "search": "" + "search": "Buscar {count} serviços" } }, "pods": { - "label": "", + "label": "Pods", "field": { "name": { - "label": "" + "label": "Nome" }, "namespace": { - "label": "" + "label": "Namespace" }, "image": { - "label": "" + "label": "Imagem" }, "applicationType": { - "label": "" + "label": "Tipos de aplicações" }, "status": { "label": "Status" }, "creationTimestamp": { - "label": "" + "label": "Criado" } }, "table": { - "search": "" + "search": "Buscar {count} pods" } }, "secrets": { - "label": "", + "label": "Secrets", "field": { "name": { - "label": "" + "label": "Nome" }, "namespace": { - "label": "" + "label": "namespace" }, "type": { - "label": "" + "label": "tipo" }, "creationTimestamp": { - "label": "" + "label": "Criado" } }, "table": { - "search": "" + "search": "Buscar {count} secrets" } }, "configmaps": { - "label": "", + "label": "ConfigMaps", "field": { "name": { - "label": "" + "label": "Nome" }, "namespace": { - "label": "" + "label": "namespace" }, "creationTimestamp": { - "label": "" + "label": "Criado" } }, "table": { - "search": "" + "search": "Buscar {count} configMaps" } }, "volumes": { - "label": "", + "label": "Volumes", "field": { "name": { - "label": "" + "label": "Nome" }, "namespace": { - "label": "" + "label": "Namespace" }, "accessModes": { - "label": "" + "label": "Modos de acesso" }, "storage": { - "label": "" + "label": "Armazenamento" }, "storageClassName": { - "label": "" + "label": "Nome da classe de armazenamento" }, "volumeMode": { - "label": "" + "label": "Modo do volume" }, "volumeName": { - "label": "" + "label": "Nome do volume" }, "status": { "label": "Status" }, "creationTimestamp": { - "label": "" + "label": "Criado" } }, "table": { - "search": "" + "search": "Buscar {count} volumes" } }, "error": { @@ -3985,9 +4089,9 @@ } }, "permission": { - "title": "", + "title": "Permissões", "userSelect": { - "title": "" + "title": "Adicionar permissão de usuário" }, "groupSelect": { "title": "Adicionar permissão de grupo" @@ -3995,7 +4099,7 @@ "tab": { "user": "Usuários", "group": "Grupos", - "inherited": "" + "inherited": "Grupos herdados" }, "field": { "user": { @@ -4029,7 +4133,7 @@ } }, "search-engines": { - "label": "", + "label": "Mecanismos de busca", "new": { "label": "Novo" }, @@ -4078,34 +4182,34 @@ "label": "Nós" }, "namespaces": { - "label": "" + "label": "Namespaces" }, "ingresses": { - "label": "" + "label": "Ingresses" }, "services": { "label": "Serviços" }, "pods": { - "label": "" + "label": "pods" }, "configmaps": { - "label": "" + "label": "ConfigMaps" }, "secrets": { - "label": "" + "label": "Secrets" }, "volumes": { - "label": "" + "label": "Volumes" } }, "logs": { - "label": "" + "label": "Logs" }, "certificates": { "label": "Certificados", "hostnames": { - "label": "" + "label": "Hostnames" } } }, @@ -4118,14 +4222,14 @@ } }, "search": { - "placeholder": "", - "nothingFound": "", + "placeholder": "Buscar por qualquer coisa", + "nothingFound": "Nada encontrado", "error": { - "fetch": "" + "fetch": "Ocorreu um erro ao buscar os dados" }, "mode": { "appIntegrationBoard": { - "help": "Buscar por aplicativos, integrações ou quadros", + "help": "Buscar por aplicativos, integrações ou painéis", "group": { "app": { "title": "Aplicativos", @@ -4139,7 +4243,7 @@ } }, "detail": { - "title": "" + "title": "Selecione uma ação para o aplicativo" } } }, @@ -4151,17 +4255,17 @@ "label": "Abrir quadro" }, "homeBoard": { - "label": "" + "label": "Definir como quadro inicial" }, "mobileBoard": { - "label": "" + "label": "Definir como painel para dispositivos móveis" }, "settings": { "label": "Abrir configurações" } }, "detail": { - "title": "" + "title": "Selecione uma ação para o quadro" } } }, @@ -4171,7 +4275,7 @@ } }, "command": { - "help": "", + "help": "Ativar modo de comando", "group": { "localCommand": { "title": "Comandos locais" @@ -4192,7 +4296,7 @@ } }, "newBoard": { - "label": "" + "label": "Criar um novo quadro" }, "importBoard": { "label": "Importe um quadro" @@ -4222,15 +4326,15 @@ } }, "media": { - "requestMovie": "", - "requestSeries": "", - "openIn": "" + "requestMovie": "Solicitar filme", + "requestSeries": "Solicitar série", + "openIn": "Abrir em {kind}" }, "external": { "help": "Usar um mecanismo de busca externo", "group": { "searchEngine": { - "title": "", + "title": "Mecanismos de busca", "children": { "action": { "search": { @@ -4238,10 +4342,10 @@ } }, "detail": { - "title": "" + "title": "Selecione uma ação para o mecanismo de busca" }, "searchResults": { - "title": "" + "title": "Selecione um resultado de pesquisa para ações" } }, "option": { @@ -4281,7 +4385,7 @@ "label": "Documentação" }, "submitIssue": { - "label": "" + "label": "Reportar um problema" }, "discord": { "label": "Discórdia da comunidade" @@ -4293,7 +4397,7 @@ "home": { "group": { "search": { - "title": "", + "title": "Buscar", "option": { "other": { "label": "Pesquise com outro mecanismo de busca" @@ -4303,7 +4407,7 @@ "description": "Defina um mecanismo de busca padrão nas preferências" }, "search": { - "label": "" + "label": "Buscar por \"{query}\" com {name}" }, "from-integration": { "description": "Comece a digitar para pesquisar" @@ -4325,7 +4429,7 @@ "label": "Gerenciar página inicial" }, "manageBoard": { - "label": "Gerenciar quadros" + "label": "Gerenciar painéis" }, "manageApp": { "label": "Gerenciar aplicativos" @@ -4334,7 +4438,7 @@ "label": "Gerenciar integrações" }, "manageSearchEngine": { - "label": "Gerenciar ferramentas de busca" + "label": "Gerenciar mecanismos de busca" }, "manageMedia": { "label": "Gerencias mídias" @@ -4355,7 +4459,7 @@ "label": "Swagger API" }, "manageLog": { - "label": "" + "label": "Exibir logs" }, "manageTask": { "label": "Gerenciar tarefas" @@ -4388,7 +4492,7 @@ } }, "detail": { - "title": "" + "title": "Selecione uma ação para o usuário" } } }, @@ -4407,7 +4511,7 @@ } }, "detail": { - "title": "" + "title": "Selecione uma ação para o grupo" } } } @@ -4415,16 +4519,16 @@ } }, "engine": { - "search": "", + "search": "Encontrar um mecanismo de busca", "field": { "name": { "label": "Nome" }, "short": { - "label": "" + "label": "Abreviação" }, "urlTemplate": { - "label": "" + "label": "Modelo de busca de URL" }, "description": { "label": "Descrição" @@ -4432,55 +4536,55 @@ }, "page": { "list": { - "title": "", + "title": "Mecanismos de busca", "noResults": { - "title": "", - "action": "" + "title": "Ainda não existem mecanismos de busca", + "action": "Crie seu primeiro mecanismo de busca" }, - "interactive": "" + "interactive": "Interativo, usa uma integração" }, "create": { - "title": "", + "title": "Novo mecanismo de busca", "notification": { "success": { - "title": "", - "message": "" + "title": "Mecanismo de busca criado", + "message": "O mecanismo de busca foi criado com sucesso" }, "error": { - "title": "", - "message": "" + "title": "O mecanismo de busca não foi criado", + "message": "O mecanismo de busca não pôde ser criado" } } }, "edit": { - "title": "", + "title": "Editar mecanismo de busca", "notification": { "success": { "title": "Mudanças aplicadas com sucesso", - "message": "" + "message": "O mecanismo de busca foi salvo com sucesso" }, "error": { - "title": "", - "message": "" + "title": "Não foi possível aplicar as mudanças", + "message": "O mecanismo de busca não pôde ser salvo" } }, - "configControl": "", + "configControl": "Configuração", "searchEngineType": { - "generic": "", - "fromIntegration": "" + "generic": "Genérico", + "fromIntegration": "De integração" } }, "delete": { - "title": "", - "message": "", + "title": "Excluir mecanismo de busca", + "message": "Tem certeza que deseja excluir o mecanismo de busca {name}?", "notification": { "success": { - "title": "", - "message": "" + "title": "Mecanismo de busca excluído", + "message": "O mecanismo de busca foi excluído com sucesso" }, "error": { - "title": "", - "message": "" + "title": "Mecanismo de busca não deletado", + "message": "O mecanismo de busca não pôde ser deletado" } } } @@ -4488,15 +4592,15 @@ "media": { "request": { "modal": { - "title": "", + "title": "Solicitar \"{name}\"", "table": { "header": { - "season": "", - "episodes": "" + "season": "Temporada", + "episodes": "Episódios" } }, "button": { - "send": "" + "send": "Enviar solicitação" } } } @@ -4506,46 +4610,46 @@ "certificate": { "field": { "hostname": { - "label": "" + "label": "Hostname" }, "subject": { - "label": "" + "label": "Assunto" }, "issuer": { - "label": "" + "label": "Emissor" }, "validFrom": { - "label": "" + "label": "Válido desde" }, "validTo": { - "label": "" + "label": "Válido até" }, "serialNumber": { - "label": "" + "label": "Número de série" }, "fingerprint": { - "label": "" + "label": "Impressão digital" } }, "page": { "list": { - "title": "", - "description": "", + "title": "Certificados confiáveis", + "description": "Usado pelo Homarr para solicitar dados de integrações.", "noResults": { - "title": "" + "title": "Ainda não existem certificados" }, "invalid": { - "title": "", - "description": "" + "title": "Certificado inválido", + "description": "Falha ao analisar certificado" }, - "expires": "", - "toHostnames": "" + "expires": "Expira em {when}", + "toHostnames": "Hostnames confiáveis" }, "hostnames": { - "title": "", - "description": "", + "title": "Hostnames de certificados confiáveis", + "description": "Alguns certificados não permitem o domínio específico que o Homarr usa para solicitá-los, por isso todos os hostnames confiáveis com suas impressões digitais de certificado são usados para contornar essas restrições.", "noResults": { - "title": "" + "title": "Ainda não existem hostnames" }, "toCertificates": "Certificados" } @@ -4579,16 +4683,16 @@ } }, "removeHostname": { - "label": "", - "confirm": "", + "label": "Remover hostname confiável", + "confirm": "Tem certeza que deseja remover este hostname confiável? Isso pode fazer com que algumas integrações parem de funcionar.", "notification": { "success": { - "title": "", - "message": "" + "title": "Hostname removido", + "message": "O hostname foi removido com sucesso" }, "error": { - "title": "", - "message": "" + "title": "Hostname não removido", + "message": "O hostname não pôde ser removido" } } } @@ -4597,9 +4701,9 @@ "log": { "level": { "option": { - "debug": "", + "debug": "Debug", "info": "Informação", - "warn": "", + "warn": "Aviso", "error": "Erro" } } diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index b55b08910..c97064d78 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index 28760572d..1639b85c4 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -612,17 +612,17 @@ "select": { "label": "Выбрать приложение", "notFound": "Приложения не найдены", - "search": "", - "noResults": "", - "action": "", - "title": "" + "search": "Поиск приложения", + "noResults": "Нет результатов", + "action": "Выбрать {app}", + "title": "Выберите приложение для добавления на панель" }, "create": { - "title": "", - "description": "", - "action": "" + "title": "Создать приложение", + "description": "Создать новое приложение ", + "action": "Открыть создание приложения" }, - "add": "" + "add": "Добавить приложение" } }, "integration": { @@ -649,14 +649,14 @@ "app": { "option": { "existing": { - "title": "", - "label": "" + "title": "Существующее", + "label": "Выберите существующее приложение" }, "new": { - "title": "", + "title": "Новое", "url": { - "label": "", - "description": "" + "label": "URL приложения", + "description": "URL, который откроется при переходе к приложению с панели" } } } @@ -676,9 +676,9 @@ }, "app": { "action": { - "add": "", - "remove": "", - "select": "" + "add": "Привязать приложение", + "remove": "Отвязать", + "select": "Выберите приложение для привязки" } } }, @@ -709,14 +709,14 @@ "description": "Интеграцию \"{kind}\" можно использовать с поисковыми системами. Включите эту опцию для автоматической настройки поисковой системы." }, "app": { - "sectionTitle": "" + "sectionTitle": "Привязанное приложение" }, "createApp": { - "label": "", - "description": "" + "label": "Создать приложение", + "description": "Создать приложение с тем же названием и значком, что и у интеграции. Оставьте поле ниже пустым, чтобы использовать URL интеграции." }, "appHref": { - "placeholder": "" + "placeholder": "Свой URL приложения" } }, "action": { @@ -730,125 +730,125 @@ "error": { "common": { "cause": { - "title": "" + "title": "Причина с подробностями" } }, "unknown": { - "title": "", - "description": "" + "title": "Неизвестная ошибка", + "description": "Произошла неизвестная ошибка. Раскройте причину ниже для получения подробностей" }, "parse": { - "title": "", - "description": "" + "title": "Ошибка разбора", + "description": "Не удалось разобрать ответ. Убедитесь, что URL указывает на базовый адрес сервиса." }, "authorization": { - "title": "", - "description": "" + "title": "Ошибка авторизации", + "description": "Запрос не был авторизован. Убедитесь, что учётные данные верны и имеют достаточные права доступа." }, "statusCode": { - "title": "", - "description": "", - "otherDescription": "", + "title": "Ошибка ответа", + "description": "Получен неожиданный ответ {statusCode} ({reason}) от . Убедитесь, что URL указывает на базовый адрес интеграции.", + "otherDescription": "Получен неожиданный ответ {statusCode} от . Убедитесь, что URL указывает на базовый адрес интеграции.", "reason": { - "badRequest": "", - "notFound": "", - "tooManyRequests": "", - "internalServerError": "", - "serviceUnavailable": "", - "gatewayTimeout": "" + "badRequest": "Неверный запрос", + "notFound": "Не найдено", + "tooManyRequests": "Слишком много запросов", + "internalServerError": "Внутренняя ошибка сервера", + "serviceUnavailable": "Сервис недоступен", + "gatewayTimeout": "Тайм-аут шлюза" } }, "certificate": { - "title": "", + "title": "Ошибка сертификата", "description": { - "expired": "", - "notYetValid": "", - "untrusted": "", - "hostnameMismatch": "" + "expired": "Срок действия сертификата истёк.", + "notYetValid": "Сертификат ещё не вступил в силу.", + "untrusted": "Сертификат не является доверенным.", + "hostnameMismatch": "Имя хоста в сертификате не совпадает с URL." }, "alert": { "permission": { - "title": "", - "message": "" + "title": "Недостаточно прав", + "message": "У вас нет прав для добавления доверенных сертификатов или их загрузки. Обратитесь к администратору для загрузки необходимого корневого сертификата." }, "hostnameMismatch": { - "title": "", - "message": "" + "title": "Несовпадение имени хоста", + "message": "Имя хоста в сертификате не совпадает с именем хоста, к которому вы подключаетесь. Это может указывать на угрозу безопасности, но вы всё равно можете добавить этот сертификат в доверенные." }, "extract": { - "title": "", - "message": "" + "title": "Не удалось извлечь CA-сертификат", + "message": "Автоматически можно получить только самоподписанные сертификаты без цепочки. Если вы используете самоподписанный сертификат, загрузите CA-сертификат вручную. Инструкции доступны ." } }, "action": { "retry": { - "label": "" + "label": "Повторить создание" }, "trust": { - "label": "" + "label": "Доверять сертификату" }, "upload": { - "label": "" + "label": "Загрузить сертификат" } }, "hostnameMismatch": { "confirm": { - "title": "", - "message": "" + "title": "Доверять при несовпадении имени хоста", + "message": "Вы уверены, что хотите доверять сертификату с несовпадающим именем хоста?" }, "notification": { "success": { - "title": "", - "message": "" + "title": "Сертификат добавлен в доверенные", + "message": "Имя хоста добавлено в список доверенных сертификатов" }, "error": { - "title": "", - "message": "" + "title": "Не удалось добавить сертификат в доверенные", + "message": "Не удалось добавить сертификат с несовпадающим именем хоста в доверенные" } } }, "selfSigned": { "confirm": { - "title": "", - "message": "" + "title": "Доверять самоподписанному сертификату", + "message": "Вы уверены, что хотите доверять этому самоподписанному сертификату?" }, "notification": { "success": { - "title": "", - "message": "" + "title": "Сертификат добавлен в доверенные", + "message": "Сертификат добавлен в список доверенных сертификатов" }, "error": { - "title": "", - "message": "" + "title": "Не удалось добавить сертификат в доверенные", + "message": "Не удалось добавить сертификат в список доверенных сертификатов" } } }, "details": { - "title": "", - "description": "", + "title": "Подробности", + "description": "Ознакомьтесь с информацией о сертификате, прежде чем принимать решение о доверии.", "content": { - "action": "", - "title": "" + "action": "Показать содержимое", + "title": "PEM-сертификат" } } }, "request": { - "title": "", + "title": "Ошибка запроса", "description": { "connection": { - "hostUnreachable": "", - "networkUnreachable": "", - "refused": "", - "reset": "" + "hostUnreachable": "Не удалось связаться с сервером. Обычно это означает, что хост выключен или недоступен из вашей сети.", + "networkUnreachable": "Сеть недоступна. Проверьте подключение к интернету или сетевые настройки.", + "refused": "Сервер отклонил подключение. Возможно, он не запущен или отклоняет запросы на указанном порту.", + "reset": "Соединение было неожиданно закрыто сервером. Это может произойти, если сервер нестабилен или перезапускается." }, "dns": { - "notFound": "", - "timeout": "", - "noAnswer": "" + "notFound": "Не удалось найти адрес сервера. Проверьте URL на опечатки или недопустимые доменные имена.", + "timeout": "Истекло время ожидания DNS-запроса. Это может быть временной проблемой — попробуйте ещё раз через несколько минут.", + "noAnswer": "DNS-сервер не вернул корректный ответ. Домен может существовать, но не имеет действительных записей." }, "timeout": { - "aborted": "", - "timeout": "" + "aborted": "Запрос был прерван до завершения. Это может быть вызвано действием пользователя или системным тайм-аутом.", + "timeout": "Время ожидания запроса истекло. Проверьте сеть или попробуйте позже." } } } @@ -920,8 +920,8 @@ "message": "Возможно, указан неверный путь" }, "tooManyRequests": { - "title": "", - "message": "" + "title": "Слишком много запросов за короткое время", + "message": "Отправлено слишком много запросов. Вероятно, целевая система ограничивает частоту запросов или отклоняет их" } } }, @@ -963,36 +963,36 @@ "newLabel": "Новая область" }, "personalAccessToken": { - "label": "", - "newLabel": "" + "label": "Персональный токен доступа", + "newLabel": "Новый персональный токен доступа" }, "topic": { - "label": "", - "newLabel": "" + "label": "Тема", + "newLabel": "Новая тема" }, "url": { - "label": "", - "newLabel": "" + "label": "URL", + "newLabel": "Новый URL" }, "opnsenseApiKey": { - "label": "", - "newLabel": "" + "label": "API-ключ (Key)", + "newLabel": "Новый API-ключ (Key)" }, "opnsenseApiSecret": { - "label": "", - "newLabel": "" + "label": "API-ключ (Secret)", + "newLabel": "Новый API-ключ (Secret)" }, "githubAppId": { - "label": "", - "newLabel": "" + "label": "App Id", + "newLabel": "Новый App Id" }, "githubInstallationId": { - "label": "", - "newLabel": "" + "label": "Installation Id", + "newLabel": "Новый Installation Id" }, "privateKey": { - "label": "", - "newLabel": "" + "label": "Приватный ключ", + "newLabel": "Новый приватный ключ" } } }, @@ -1044,14 +1044,14 @@ } }, "common": { - "success": "", + "success": "Успешно", "beta": "Бета", "error": "Ошибка", "action": { "add": "Добавить", "apply": "Применить", "backToOverview": "Вернуться к обзору", - "change": "", + "change": "Изменить", "create": "Создать", "createAnother": "Создать и начать заново", "edit": "Редактировать", @@ -1063,7 +1063,7 @@ "cancel": "Отмена", "delete": "Удалить", "discard": "Отменить", - "close": "", + "close": "Закрыть", "confirm": "Подтвердить", "continue": "Продолжить", "previous": "Назад", @@ -1138,9 +1138,9 @@ "dangerZone": "Опасная зона", "noResults": "Ничего не найдено", "unsavedChanges": "У вас есть несохранённые изменения!", - "servers": "", - "applications": "", - "services": "", + "servers": "Серверы", + "applications": "Приложения", + "services": "Сервисы", "preview": { "show": "Показать предпросмотр", "hide": "Скрыть предпросмотр" @@ -1177,8 +1177,8 @@ }, "unit": { "speed": { - "kilometersPerHour": "", - "milesPerHour": "" + "kilometersPerHour": "км/ч", + "milesPerHour": "миль/ч" } } }, @@ -1190,10 +1190,10 @@ }, "option": { "title": { - "label": "" + "label": "Заголовок" }, "customCssClasses": { - "label": "" + "label": "Пользовательские CSS классы" }, "borderColor": { "label": "Цвет границы" @@ -1291,13 +1291,13 @@ "label": "Интеграции" }, "title": { - "label": "" + "label": "Заголовок" }, "customCssClasses": { "label": "Пользовательские CSS классы" }, "borderColor": { - "label": "" + "label": "Цвет границы" } } }, @@ -1324,21 +1324,21 @@ "label": "Включить простую проверку доступности" }, "layout": { - "label": "", + "label": "Расположение", "option": { - "row": "", - "row-reverse": "", - "column": "", - "column-reverse": "" + "row": "Горизонтально", + "row-reverse": "Горизонтально (наоборот)", + "column": "Вертикально", + "column-reverse": "Вертикально (наоборот)" } }, "descriptionDisplayMode": { - "label": "", - "description": "", + "label": "Режим отображения описания", + "description": "Выберите, как отображать описание", "option": { - "normal": "", - "tooltip": "", - "hidden": "" + "normal": "Внутри виджета", + "tooltip": "Как подсказка", + "hidden": "Скрыто" } } }, @@ -1369,12 +1369,12 @@ "label": "Сетка" }, "gridHorizontal": { - "label": "" + "label": "Горизонтальная сетка" } } }, "hideTitle": { - "label": "" + "label": "Скрыть заголовок" }, "hideIcon": { "label": "Скрывать иконки" @@ -1451,8 +1451,8 @@ "internalServerError": "Не удалось управлять DNS-фильтром" }, "controls": { - "enableAll": "Включить защиту", - "disableAll": "Отключить защиту", + "enableAll": "Включить всё", + "disableAll": "Отключить всё", "setTimer": "Установить таймер", "set": "Установить", "enabled": "Включено", @@ -1526,7 +1526,7 @@ } }, "notebook": { - "name": "Заметки", + "name": "Блокнот", "description": "Простой виджет заметок с поддержкой markdown", "option": { "showToolbar": { @@ -1577,7 +1577,7 @@ "right": "По правому краю" }, "popover": { - "clearColor": "Очистить цвет", + "clearColor": "Сбросить цвет", "source": "Источник", "widthPlaceholder": "Значение в % или пикселях", "columns": "Столбцы", @@ -1585,13 +1585,13 @@ "width": "Ширина", "height": "Высота" }, - "placeholder": "", + "placeholder": "Начните писать заметки", "dismiss": { - "title": "", - "message": "", + "title": "Отменить изменения?", + "message": "У вас есть несохранённые изменения в блокноте. Вы уверены, что хотите их отменить?", "action": { - "discard": "", - "keepEditing": "" + "discard": "Отменить изменения", + "keepEditing": "Продолжить редактирование" } } }, @@ -1667,76 +1667,76 @@ } }, "stockPrice": { - "name": "", - "description": "", + "name": "Цена акций", + "description": "Отображает текущую цену акций компании", "option": { "stock": { - "label": "" + "label": "Тикер акции" }, "timeRange": { - "label": "", + "label": "Временной диапазон", "option": { "1d": { - "label": "" + "label": "1 день" }, "5d": { - "label": "" + "label": "5 дней" }, "1mo": { - "label": "" + "label": "1 месяц" }, "3mo": { - "label": "" + "label": "3 месяца" }, "6mo": { - "label": "" + "label": "6 месяцев" }, "ytd": { - "label": "" + "label": "С начала года" }, "1y": { - "label": "" + "label": "1 год" }, "2y": { - "label": "" + "label": "2 года" }, "5y": { - "label": "" + "label": "5 лет" }, "10y": { - "label": "" + "label": "10 лет" }, "max": { - "label": "" + "label": "Максимум" } } }, "timeInterval": { - "label": "", + "label": "Временной интервал", "option": { "5m": { - "label": "" + "label": "5 минут" }, "15m": { - "label": "" + "label": "15 минут" }, "30m": { - "label": "" + "label": "30 минут" }, "1h": { - "label": "" + "label": "1 час" }, "1d": { - "label": "" + "label": "1 день" }, "5d": { - "label": "" + "label": "5 дней" }, "1wk": { - "label": "" + "label": "1 неделя" }, "1mo": { - "label": "" + "label": "1 месяц" } } } @@ -1746,7 +1746,7 @@ "name": "Календарь", "description": "Отображает события из ваших интеграций в календаре в определённом временном периоде", "duration": { - "allDay": "" + "allDay": "Весь день" }, "option": { "releaseType": { @@ -1764,7 +1764,7 @@ "label": "Заканчивая" }, "showUnmonitored": { - "label": "" + "label": "Показывать неотслеживаемые" } } }, @@ -1783,7 +1783,7 @@ "description": "Только для текущей погоды" }, "useImperialSpeed": { - "label": "" + "label": "Использовать мили/ч для скорости ветра" }, "location": { "label": "Местоположение" @@ -1803,12 +1803,12 @@ "description": "Как должна отображаться дата" } }, - "currentWindSpeed": "{currentWindSpeed} км/ч", + "currentWindSpeed": "{currentWindSpeed} {unit}", "dailyForecast": { "sunrise": "Восход", "sunset": "Закат", - "maxWindSpeed": "Макс. скорость ветра: {maxWindSpeed} км/ч", - "maxWindGusts": "Макс. порывы ветра: {maxWindGusts} км/ч" + "maxWindSpeed": "Макс. скорость ветра: {maxWindSpeed} {unit}", + "maxWindGusts": "Макс. порывы ветра: {maxWindGusts} {unit}" }, "kind": { "clear": "Ясно", @@ -1850,7 +1850,7 @@ }, "option": { "fahrenheit": { - "label": "Температура CPU в градусах Фаренгейта" + "label": "Температура ЦП в градусах Фаренгейта" }, "cpu": { "label": "Показывать информацию о процессоре" @@ -1859,7 +1859,7 @@ "label": "Показать информацию о памяти" }, "showUptime": { - "label": "" + "label": "Показывать время работы" }, "fileSystem": { "label": "Показать информацию о файловой системе" @@ -1868,7 +1868,7 @@ "label": "Вкладка по умолчанию" }, "visibleClusterSections": { - "label": "" + "label": "Видимые секции кластера" }, "sectionIndicatorRequirement": { "label": "Пороговое значение индикатора раздела" @@ -1940,60 +1940,115 @@ } }, "dockerContainers": { - "name": "", - "description": "", + "name": "Статистика Docker", + "description": "Статистика контейнеров (этот виджет можно добавить только с правами администратора)", "option": { "enableRowSorting": { - "label": "" + "label": "Включить сортировку элементов" }, "defaultSort": { - "label": "", + "label": "Столбец сортировки по умолчанию", "option": { - "name": "", - "state": "", - "cpuUsage": "", - "memoryUsage": "" + "name": "Имя", + "state": "Состояние", + "cpuUsage": "Использование ЦП", + "memoryUsage": "Использование памяти" } }, "descendingDefaultSort": { - "label": "" + "label": "Обратная сортировка" } }, "error": { - "internalServerError": "" + "internalServerError": "Не удалось получить статистику контейнеров" } }, "coolify": { - "name": "", - "description": "", + "name": "Coolify", + "description": "Обзор вашего экземпляра Coolify с серверами и приложениями", "option": { "showServers": { - "label": "" + "label": "Показывать серверы" }, "showApplications": { - "label": "" + "label": "Показывать приложения" }, "showServices": { - "label": "" + "label": "Показывать сервисы" } }, "empty": { - "servers": "", - "applications": "", - "services": "" + "servers": "Серверы не найдены", + "applications": "Приложения не найдены", + "services": "Сервисы не найдены" }, "footer": { - "updated": "" + "updated": "Обновлено {when}" }, + "error": { + "noIntegration": "Интеграция с Coolify не настроена", + "internalServerError": "Не удалось получить данные Coolify" + }, + "server": { + "buildServer": "Сборка" + }, + "instances": { + "title": "Экземпляры" + } + }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", "error": { "noIntegration": "", "internalServerError": "" - }, - "server": { - "buildServer": "" - }, - "instances": { - "title": "" } }, "common": { @@ -2062,35 +2117,81 @@ "description": "Отображает текущие сеансы воспроизведения на медиасерверах", "option": { "showOnlyPlaying": { - "label": "", - "description": "" + "label": "Показывать только воспроизводимое", + "description": "Отключение этой опции не работает для Plex" } }, "items": { - "currentlyPlaying": "", + "currentlyPlaying": "Сейчас воспроизводится", "user": "Пользователь", "name": "Название", "id": "Id", "metadata": { - "title": "", + "title": "Техническая информация", "video": { - "title": "", - "resolution": "" + "title": "Видео", + "resolution": "Разрешение" }, "audio": { - "title": "", - "channelCount": "", - "codec": "" + "title": "Аудио", + "channelCount": "Аудиоканалы", + "codec": "Аудиокодек" }, "transcoding": { - "title": "", - "container": "", - "resolution": "", - "target": "" + "title": "Транскодирование", + "container": "Контейнер", + "resolution": "Разрешение", + "target": "Целевой кодек" } } } }, + "immich-serverStats": { + "name": "Статистика сервера Immich", + "description": "Информация о вашем экземпляре Immich", + "option": { + "showUsers": { + "label": "Показать пользователей", + "description": "Показать количество пользователей на вашем экземпляре" + }, + "showPhotos": { + "label": "Показать фото", + "description": "Показать количество фотографий на вашем экземпляре" + }, + "showVideos": { + "label": "Показать видео", + "description": "Показать количество видео на вашем экземпляре" + }, + "showStorage": { + "label": "Показать хранилище", + "description": "Показать общий объём используемого хранилища" + } + }, + "users": "Пользователи", + "photos": "Фото", + "videos": "Видео", + "storage": "Занято" + }, + "immich-albumCarousel": { + "name": "Альбом Immich", + "option": { + "albumId": { + "label": "ID альбома", + "description": "Уникальный идентификатор вашего альбома Immich. Его можно найти, открыв альбом и скопировав уникальную строку из URL, например 'a21aca09-9f05-47dc-b1a1-7b53c547226e'" + }, + "rotationIntervalSeconds": { + "label": "Интервал в секундах", + "description": "Переключать фотографии в альбоме каждые X секунд. Минимум 1. Максимум 3600." + }, + "showPhotoInfo": { + "label": "Показать информацию о фото", + "description": "Отображать дату снимка и текущий номер в нижней части слайд-шоу" + } + }, + "description": "Слайд-шоу фотографий из вашего альбома Immich", + "noAlbumSelected": "Альбом не выбран — отредактируйте виджет и выберите альбом", + "noPhotos": "В этом альбоме нет фотографий" + }, "downloads": { "name": "Загрузки", "description": "Позволяет просматривать и управлять загрузками как из торрент-клиентов, так и из Usenet-клиентов.", @@ -2114,7 +2215,7 @@ "label": "Показывать завершённые торренты" }, "showCompletedHttp": { - "label": "" + "label": "Показывать завершённые записи категории «Разное»" }, "activeTorrentThreshold": { "label": "Скрывать завершённые торренты ниже этого порога (в КиБ/с)" @@ -2129,8 +2230,8 @@ "label": "Использовать фильтр при расчёте рейтинга" }, "limitPerIntegration": { - "label": "", - "description": "" + "label": "Лимит элементов на интеграцию", + "description": "Ограничивает количество отображаемых элементов для каждой интеграции, а не глобально" } }, "errors": { @@ -2239,32 +2340,32 @@ "globalRatio": "Общий рейтинг" }, "mediaReleases": { - "name": "", - "description": "", + "name": "Медиарелизы", + "description": "Отображает новые или предстоящие релизы из различных интеграций", "option": { "layout": { - "label": "", + "label": "Макет", "option": { "backdrop": { - "label": "" + "label": "Фон" }, "poster": { - "label": "" + "label": "Постер" } } }, "showDescriptionTooltip": { - "label": "" + "label": "Показывать подсказку с описанием" }, "showType": { - "label": "" + "label": "Показывать тип медиа" }, "showSource": { - "label": "" + "label": "Показывать источник интеграции" } }, "length": { - "duration": "" + "duration": "{length} мин" } }, "mediaRequests-requestList": { @@ -2284,18 +2385,18 @@ "unknown": "Неизвестно", "pending": "В ожидании", "processing": "Обработка", - "requested": "", + "requested": "Запрошено", "partiallyAvailable": "Частично доступно", "available": "Доступно", - "blacklisted": "", - "deleted": "" + "blacklisted": "В чёрном списке", + "deleted": "Удалено" }, "status": { "pending": "В ожидании", "approved": "Одобрено", "declined": "Отклонено", "failed": "Ошибка", - "completed": "" + "completed": "Завершено" }, "toBeDetermined": "Будет определено позже" }, @@ -2350,10 +2451,10 @@ "statistics": { "empty": "Пусто", "transcodes": "Перекодировано", - "transcodesCount": "Перекодировано: {value}", - "healthChecksCount": "Проверок: {value}", - "filesCount": "Файлов: {value}", - "savedSpace": "Сэкономлено места: {value}", + "transcodesCount": "Перекодировано", + "healthChecksCount": "Проверок", + "filesCount": "Файлов", + "savedSpace": "Сэкономлено места", "healthChecks": "Проверки работоспособности", "videoCodecs": "Кодеки", "videoContainers": "Контейнеры", @@ -2397,126 +2498,126 @@ "label": "Максимальное количество записей" }, "hideDescription": { - "label": "" + "label": "Скрыть описание" } } }, "releases": { - "name": "", - "description": "", + "name": "Релизы", + "description": "Отображает список текущих версий указанных репозиториев с заданным регулярным выражением версии.", "option": { "newReleaseWithin": { - "label": "", - "description": "" + "label": "Новый релиз в пределах", + "description": "Пример: 1w (1 неделя), 10M (10 месяцев). Допустимые единицы: h (часы), d (дни), w (недели), M (месяцы), y (годы). Оставьте пустым, чтобы не выделять новые релизы." }, "staleReleaseWithin": { - "label": "", - "description": "" + "label": "Устаревший релиз в пределах", + "description": "Пример: 1w (1 неделя), 10M (10 месяцев). Допустимые единицы: h (часы), d (дни), w (недели), M (месяцы), y (годы). Оставьте пустым, чтобы не выделять устаревшие релизы." }, "showOnlyHighlighted": { - "label": "", - "description": "" + "label": "Показывать только выделенные", + "description": "Показывать только новые или устаревшие релизы в соответствии с настройками выше." }, "showDetails": { - "label": "" + "label": "Показывать подробности" }, "showOnlyIcon": { - "label": "" + "label": "Показывать только иконку" }, "topReleases": { - "label": "", - "description": "" + "label": "Количество релизов", + "description": "Максимальное количество последних релизов для отображения. Ноль - без ограничений." }, "repositories": { - "label": "", + "label": "Репозитории", "addRepository": { - "label": "" + "label": "Добавить репозиторий" }, "importRepositories": { - "label": "", - "loading": "", - "noImagesFound": "", - "listFoundImages": "", - "listAlreadyImportedImages": "", - "allImagesAlreadyImported": "", - "onlyAdminCanImport": "", - "selectAll": "", - "deselectAll": "" + "label": "Импорт из Docker", + "loading": "Загрузка образов Docker", + "noImagesFound": "Образы Docker не найдены", + "listFoundImages": "Список найденных образов", + "listAlreadyImportedImages": "Список уже импортированных образов", + "allImagesAlreadyImported": "Все образы уже импортированы", + "onlyAdminCanImport": "Только администраторы могут импортировать из Docker", + "selectAll": "Выбрать все", + "deselectAll": "Снять выделение" }, "provider": { - "label": "" + "label": "Провайдер" }, "identifier": { - "label": "", - "placeholder": "" + "label": "Идентификатор", + "placeholder": "Имя или Владелец/Имя" }, "name": { - "label": "" + "label": "Название" }, "versionFilter": { - "label": "", + "label": "Фильтр версий", "prefix": { - "label": "" + "label": "Префикс" }, "precision": { - "label": "", + "label": "Точность", "options": { - "none": "" + "none": "Нет" } }, "suffix": { - "label": "" + "label": "Суффикс" }, "regex": { - "label": "" + "label": "Регулярное выражение" } }, "edit": { - "label": "" + "label": "Редактировать" }, "editForm": { - "title": "", + "title": "Редактирование репозитория", "cancel": { - "label": "" + "label": "Отмена" }, "confirm": { - "label": "" + "label": "Подтвердить" } }, "importForm": { - "title": "" + "title": "Импорт из Docker" }, "example": { - "label": "" + "label": "Пример" }, - "invalid": "", + "invalid": "Неверное определение репозитория, проверьте значения", "noProvider": { - "label": "", - "tooltip": "" + "label": "Нет провайдера", + "tooltip": "Не удалось определить провайдер, укажите его вручную после импорта образов" } } }, - "not-found": "", - "pre-release": "", - "archived": "", - "forked": "", - "starsCount": "", - "forksCount": "", - "issuesCount": "", - "markViewed": "", - "openProjectPage": "", - "openReleasePage": "", - "releaseDescription": "", - "projectDescription": "", - "created": "", + "not-found": "Не найдено", + "pre-release": "Предварительный релиз", + "archived": "В архиве", + "forked": "Форк", + "starsCount": "Звёзды", + "forksCount": "Форки", + "issuesCount": "Открытые issues", + "markViewed": "Отметить как просмотренное", + "openProjectPage": "Открыть страницу проекта", + "openReleasePage": "Открыть страницу релиза", + "releaseDescription": "Описание релиза", + "projectDescription": "Описание проекта", + "created": "Создано", "error": { - "label": "", + "label": "Ошибка", "messages": { - "invalidIdentifier": "", - "noMatchingVersion": "", - "noReleasesFound": "", - "noProviderSeleceted": "", - "noProviderResponse": "" + "invalidIdentifier": "Неверный идентификатор", + "noMatchingVersion": "Подходящая версия не найдена", + "noReleasesFound": "Релизы не найдены", + "noProviderSeleceted": "Провайдер не выбран", + "noProviderResponse": "Нет ответа от провайдера" } } }, @@ -2524,154 +2625,154 @@ "option": {}, "card": { "vpn": { - "countConnected": "" + "countConnected": "{count} подключено" } }, "error": { - "integrationsDisconnected": "", - "unknownContentOption": "" + "integrationsDisconnected": "Нет данных, все интеграции отключены", + "unknownContentOption": "Неизвестный параметр содержимого для виджета сводки сетевого контроллера: " }, - "name": "", - "description": "" + "name": "Сводка сетевого контроллера", + "description": "Отображает сводку сетевого контроллера (например, UniFi Controller)" }, "networkControllerStatus": { "card": { "variants": { "wired": { - "name": "" + "name": "Проводное" }, "wifi": { - "name": "" + "name": "Wi-Fi" } }, "users": { - "label": "" + "label": "Пользователи" }, "guests": { - "label": "" + "label": "Гости" } }, "option": { "content": { "option": { "wifi": { - "label": "" + "label": "Wi-Fi" }, "wired": { - "label": "" + "label": "Проводное" } }, - "label": "" + "label": "Содержимое виджета" } }, "error": { - "integrationsDisconnected": "", - "unknownContentOption": "" + "integrationsDisconnected": "Нет данных, все интеграции отключены", + "unknownContentOption": "Неизвестный параметр содержимого для виджета состояния сети: " }, - "name": "", - "description": "" + "name": "Состояние сети", + "description": "Отображает подключённые устройства в сети" }, "networkController": { "error": { - "internalServerError": "" + "internalServerError": "Не удалось получить сводку сетевого контроллера" } }, "firewall": { - "name": "", - "description": "", + "name": "Мониторинг межсетевого экрана", + "description": "Отображает сводку межсетевых экранов", "tab": { - "system": "", - "interfaces": "" + "system": "Система", + "interfaces": "Интерфейсы" }, "error": { - "internalServerError": "" + "internalServerError": "Не удалось получить данные от межсетевого экрана" }, "option": { - "interfaces": "" + "interfaces": "Сетевые интерфейсы для отображения" }, "widget": { - "fwname": "", - "version": "", - "versiontitle": "", - "cputitle": "", - "memorytitle": "", - "cpu": "", - "memory": "", + "fwname": "Название", + "version": "Версия", + "versiontitle": "Версии", + "cputitle": "Использование ЦП", + "memorytitle": "Использование памяти", + "cpu": "ЦП", + "memory": "Память", "interfaces": { - "name": "", - "trans": "", - "recv": "", - "title": "" + "name": "Название", + "trans": "Отправлено", + "recv": "Получено", + "title": "Сетевые интерфейсы" } } }, "notifications": { - "name": "", - "description": "", - "noItems": "", + "name": "Уведомления", + "description": "Отображает историю уведомлений из интеграции", + "noItems": "Нет уведомлений для отображения.", "option": {} }, "systemResources": { - "name": "", - "description": "", + "name": "Системные ресурсы", + "description": "Использование ЦП, памяти, сети и другого оборудования вашей системы", "option": { "hasShadow": { - "label": "" + "label": "Включить затенение графиков" }, "visibleCharts": { - "label": "", - "description": "", + "label": "Видимые графики", + "description": "Выберите графики, которые вы хотите отображать.", "option": { - "cpu": "", - "memory": "", - "network": "" + "cpu": "ЦП", + "memory": "Память", + "network": "Сеть" } }, "labelDisplayMode": { - "label": "", + "label": "Режим отображения меток", "option": { - "textWithIcon": "", - "text": "", - "icon": "", - "hidden": "" + "textWithIcon": "Текст с иконкой", + "text": "Только текст", + "icon": "Только иконка", + "hidden": "Скрыть метку" } } }, "card": { - "cpu": "", - "memory": "", - "network": "", - "up": "", - "down": "" + "cpu": "ЦП", + "memory": "ОЗУ", + "network": "Сеть", + "up": "Исх.", + "down": "Вх." } }, "systemDisks": { - "name": "", - "description": "", + "name": "Системные диски", + "description": "Использование дисков вашей системы", "option": { "showTemperatureIfAvailable": { - "label": "" + "label": "Показывать температуру, если доступна" }, "displayMode": { - "label": "", + "label": "Режим отображения", "option": { "percentage": { - "label": "" + "label": "В процентах (например, 76%)" }, "absolute": { - "label": "" + "label": "Абсолютные значения (например, 800 ГБ / 1 ТБ)" }, "free": { - "label": "" + "label": "Процент свободного места (например, 24% свободно)" } } }, "showBackgroundBar": { - "label": "" + "label": "Показывать фоновую шкалу использования" } }, "status": { - "unhealthy": "" + "unhealthy": "Неисправен" } } }, @@ -2794,10 +2895,10 @@ }, "backgroundImageUrl": { "label": "URL фонового изображения", - "placeholder": "", + "placeholder": "Начните вводить для поиска локальных изображений", "group": { - "your": "", - "other": "" + "your": "Ваши изображения", + "other": "Другие изображения" } }, "backgroundImageAttachment": { @@ -2860,7 +2961,7 @@ "label": "Цвет значка" }, "clearColor": { - "label": "" + "label": "Сбросить цвет" }, "customCss": { "label": "Пользовательский CSS для этой панели", @@ -3066,7 +3167,7 @@ "label": "Инструменты", "items": { "docker": "Docker", - "kubernetes": "", + "kubernetes": "Kubernetes", "logs": "Логи", "api": "API", "certificates": "Сертификаты", @@ -3095,8 +3196,8 @@ "integration": "Интеграции", "app": "Приложения", "group": "Группы", - "searchEngine": "", - "media": "" + "searchEngine": "Поисковые системы", + "media": "Медиа" }, "statisticLabel": { "boards": "Панели", @@ -3105,8 +3206,8 @@ "authorization": "Авторизация" }, "heroBanner": { - "title": "", - "subtitle": "" + "title": "С возвращением на вашу", + "subtitle": "{app} Панель" } }, "board": { @@ -3305,7 +3406,7 @@ "title": "Аналитика", "general": { "title": "Отправлять анонимную аналитику", - "text": "Homarr использует открытое программное обеспечение Umami для сбора обезличенных данных об использовании. Сбор данных никогда не включает личную информацию и полностью соответствует GDPR и CCPA. Мы рекомендуем включить аналитику, так как это помогает нашей команде выявлять проблемы и определять приоритеты в разработке." + "text": "Homarr отправляет обезличенную аналитику с помощью открытого ПО Umami. При включении собираются: версия Homarr, тип базы данных (MySQL/PostgreSQL/SQLite), статус Docker/Kubernetes, включённые методы аутентификации и количество используемых функций. Все данные анонимны и агрегированы - личная информация, URL-адреса, имена и другие идентифицирующие данные никогда не собираются. Это помогает нашей команде понимать типичные сценарии использования и определять приоритеты в разработке." }, "widgetData": { "title": "Данные о виджетах", @@ -3360,10 +3461,10 @@ } }, "user": { - "title": "", + "title": "Пользователи", "enableGravatar": { - "label": "", - "description": "" + "label": "Включить Gravatar", + "description": "Использовать аватары Libravatar/Gravatar, если пользовательский аватар не задан и указан адрес электронной почты" } }, "search": { @@ -3398,7 +3499,7 @@ "idle": "Ожидание", "running": "Выполняется", "error": "Ошибка", - "disabled": "" + "disabled": "Отключено" }, "job": { "minecraftServerStatus": { @@ -3450,99 +3551,102 @@ "label": "Перекодирование медиафайлов" }, "networkController": { - "label": "" + "label": "Сетевой контроллер" }, "refreshNotifications": { - "label": "" + "label": "Обновление уведомлений" }, "dockerContainers": { - "label": "" + "label": "Контейнеры Docker" }, "firewallCpu": { - "label": "" + "label": "ЦП межсетевого экрана" }, "firewallMemory": { - "label": "" + "label": "Память межсетевого экрана" }, "firewallVersion": { - "label": "" + "label": "Версия межсетевого экрана" }, "firewallInterfaces": { - "label": "" + "label": "Интерфейсы межсетевого экрана" }, "weather": { + "label": "Погода" + }, + "tracearr": { "label": "" } }, "interval": { - "seconds": "", - "minutes": "", - "hours": "", - "midnight": "", - "weeklyMonday": "", + "seconds": "Каждые {interval, plural, =1 {секунду} other {# секунд}}", + "minutes": "Каждые {interval, plural, =1 {минуту} other {# минут}}", + "hours": "Каждые {interval, plural, =1 {час} other {# часов}}", + "midnight": "Каждый день в полночь", + "weeklyMonday": "Каждую неделю в понедельник", "update": { "success": { - "message": "" + "message": "Интервал успешно обновлён" }, "error": { - "message": "" + "message": "Не удалось обновить интервал" } } }, "settings": { - "title": "" + "title": "Настройки задачи {jobName}" }, "field": { "name": { - "label": "" + "label": "Название" }, "interval": { - "label": "" + "label": "Интервал выполнения" }, "lastExecution": { - "label": "" + "label": "Последний запуск" }, "actions": { - "label": "" + "label": "Действия" } }, "table": { - "search": "" + "search": "Поиск среди {count} задач..." }, "action": { "refresh": { - "label": "" + "label": "Обновить" } }, "refresh": { "success": { - "message": "" + "message": "Задачи успешно обновлены" }, "error": { - "message": "" + "message": "Не удалось обновить задачи" } }, "trigger": { "success": { - "message": "" + "message": "Задача успешно запущена" }, "error": { - "message": "" + "message": "Не удалось запустить задачу" } }, "enable": { "success": { - "message": "" + "message": "Задача успешно включена" } }, "disable": { "success": { - "message": "" + "message": "Задача успешно отключена" } }, "toggle": { "error": { - "message": "" + "message": "Не удалось переключить статус задачи" } } }, @@ -3599,19 +3703,19 @@ "subtitle": "{count} используются в коде Homarr" }, "hotkeys": { - "title": "", - "subtitle": "", + "title": "Горячие клавиши", + "subtitle": "Сочетания клавиш для ускорения работы", "field": { - "shortcut": "", - "action": "" + "shortcut": "Сочетание", + "action": "Действие" }, "action": { - "toggleBoardEdit": "", - "toggleColorScheme": "", - "saveNotebook": "", - "openSpotlight": "" + "toggleBoardEdit": "Переключить режим редактирования панели", + "toggleColorScheme": "Переключить светлую/тёмную тему", + "saveNotebook": "Сохранить блокнот (только внутри виджета блокнота)", + "openSpotlight": "Открыть поиск" }, - "note": "" + "note": "Подсказка: Mod — это клавиша Ctrl или ⌘ на macOS" } } } @@ -3623,7 +3727,7 @@ "updated": "Обновлено {when}", "search": "Поиск среди {count} контейнеров", "selected": "Выбрано {selectCount} из {totalCount} контейнеров", - "footer": "" + "footer": "Всего {count} контейнеров" }, "field": { "name": { @@ -3643,10 +3747,10 @@ }, "stats": { "cpu": { - "label": "" + "label": "ЦП" }, "memory": { - "label": "" + "label": "Память" } }, "containerImage": { @@ -3657,7 +3761,7 @@ } }, "action": { - "title": "", + "title": "Действия", "start": { "label": "Запустить", "notification": { @@ -3746,242 +3850,242 @@ }, "kubernetes": { "cluster": { - "title": "", - "label": "", - "providers": "", - "version": "", - "architecture": "", + "title": "Панель кластера", + "label": "Кластер", + "providers": "Провайдеры", + "version": "Версия", + "architecture": "Архитектура", "capacity": { - "title": "", + "title": "Ёмкость", "resource": { - "reserved": "", - "used": "" + "reserved": "Зарезервировано", + "used": "Использовано" } }, "resources": { - "title": "", - "nodes": "", - "namespaces": "", - "ingresses": "", - "services": "", - "pods": "", - "configmaps": "", - "secrets": "", - "volumes": "" + "title": "Ресурсы", + "nodes": "Узлы", + "namespaces": "Пространства имён", + "ingresses": "Ingresses", + "services": "Сервисы", + "pods": "Поды", + "configmaps": "ConfigMaps", + "secrets": "Секреты", + "volumes": "Тома" } }, "nodes": { - "label": "", + "label": "Узлы", "field": { "name": { - "label": "" + "label": "Имя" }, "state": { - "label": "", + "label": "Состояние", "option": { - "ready": "", - "NotReady": "" + "ready": "Готов", + "NotReady": "Не готов" } }, "cpu": { - "label": "" + "label": "ЦП" }, "memory": { - "label": "" + "label": "Память" }, "pods": { - "label": "" + "label": "Поды" }, "operatingSystem": { - "label": "" + "label": "ОС" }, "architecture": { - "label": "" + "label": "Архитектура" }, "kubernetesVersion": { - "label": "" + "label": "Версия Kubernetes" }, "creationTimestamp": { - "label": "" + "label": "Создано" } }, "table": { - "search": "" + "search": "Поиск среди {count} узлов" } }, "namespaces": { - "label": "", + "label": "Пространства имён", "field": { "name": { - "label": "" + "label": "Имя" }, "state": { - "label": "", + "label": "Состояние", "option": { - "active": "", - "terminating": "" + "active": "Активно", + "terminating": "Завершается" } }, "creationTimestamp": { - "label": "" + "label": "Создано" } }, "table": { - "search": "" + "search": "Поиск среди {count} пространств имён" } }, "ingresses": { - "label": "", + "label": "Ingresses", "field": { "name": { - "label": "" + "label": "Имя" }, "namespace": { - "label": "" + "label": "Пространство имён" }, "className": { - "label": "" + "label": "Имя класса" }, "rulesAndPaths": { - "label": "" + "label": "Правила и пути" }, "creationTimestamp": { - "label": "" + "label": "Создано" } }, "table": { - "search": "" + "search": "Поиск среди {count} ingresses" } }, "services": { - "label": "", + "label": "Сервисы", "field": { "name": { - "label": "" + "label": "Имя" }, "namespace": { - "label": "" + "label": "Пространство имён" }, "type": { - "label": "" + "label": "Тип" }, "ports": { - "label": "" + "label": "Порты" }, "targetPorts": { - "label": "" + "label": "Целевые порты" }, "clusterIP": { - "label": "" + "label": "IP кластера" }, "creationTimestamp": { - "label": "" + "label": "Создано" } }, "table": { - "search": "" + "search": "Поиск среди {count} сервисов" } }, "pods": { - "label": "", + "label": "Поды", "field": { "name": { - "label": "" + "label": "Имя" }, "namespace": { - "label": "" + "label": "Пространство имён" }, "image": { - "label": "" + "label": "Образ" }, "applicationType": { - "label": "" + "label": "Тип приложения" }, "status": { - "label": "" + "label": "Статус" }, "creationTimestamp": { - "label": "" + "label": "Создано" } }, "table": { - "search": "" + "search": "Поиск среди {count} подов" } }, "secrets": { - "label": "", + "label": "Секреты", "field": { "name": { - "label": "" + "label": "Имя" }, "namespace": { - "label": "" + "label": "Пространство имён" }, "type": { - "label": "" + "label": "Тип" }, "creationTimestamp": { - "label": "" + "label": "Создано" } }, "table": { - "search": "" + "search": "Поиск среди {count} секретов" } }, "configmaps": { - "label": "", + "label": "ConfigMaps", "field": { "name": { - "label": "" + "label": "Имя" }, "namespace": { - "label": "" + "label": "Пространство имён" }, "creationTimestamp": { - "label": "" + "label": "Создано" } }, "table": { - "search": "" + "search": "Поиск среди {count} configMaps" } }, "volumes": { - "label": "", + "label": "Тома", "field": { "name": { - "label": "" + "label": "Имя" }, "namespace": { - "label": "" + "label": "Пространство имён" }, "accessModes": { - "label": "" + "label": "Режимы доступа" }, "storage": { - "label": "" + "label": "Хранилище" }, "storageClassName": { - "label": "" + "label": "Класс хранилища" }, "volumeMode": { - "label": "" + "label": "Режим тома" }, "volumeName": { - "label": "" + "label": "Имя тома" }, "status": { - "label": "" + "label": "Статус" }, "creationTimestamp": { - "label": "" + "label": "Создано" } }, "table": { - "search": "" + "search": "Поиск среди {count} томов" } }, "error": { - "internalServerError": "" + "internalServerError": "Не удалось получить данные Kubernetes" } }, "permission": { @@ -4067,36 +4171,36 @@ "tools": { "label": "Инструменты", "tasks": { - "label": "" + "label": "Задачи" }, "docker": { "label": "Docker" }, "kubernetes": { - "label": "", + "label": "Kubernetes", "nodes": { - "label": "" + "label": "Узлы" }, "namespaces": { - "label": "" + "label": "Пространства имён" }, "ingresses": { - "label": "" + "label": "Ingresses" }, "services": { - "label": "" + "label": "Сервисы" }, "pods": { - "label": "" + "label": "поды" }, "configmaps": { - "label": "" + "label": "ConfigMaps" }, "secrets": { - "label": "" + "label": "Секреты" }, "volumes": { - "label": "" + "label": "Тома" } }, "logs": { @@ -4105,7 +4209,7 @@ "certificates": { "label": "Сертификаты", "hostnames": { - "label": "" + "label": "Имена хостов" } } }, @@ -4472,7 +4576,7 @@ }, "delete": { "title": "Удаление поисковой системы", - "message": "Вы уверены, что хотите удалить поисковую систему '{name}'?", + "message": "Вы уверены, что хотите удалить поисковую систему {name}?", "notification": { "success": { "title": "Поисковая система удалена", @@ -4506,25 +4610,25 @@ "certificate": { "field": { "hostname": { - "label": "" + "label": "Имя хоста" }, "subject": { - "label": "" + "label": "Субъект" }, "issuer": { - "label": "" + "label": "Издатель" }, "validFrom": { - "label": "" + "label": "Действителен с" }, "validTo": { - "label": "" + "label": "Действителен до" }, "serialNumber": { - "label": "" + "label": "Серийный номер" }, "fingerprint": { - "label": "" + "label": "Отпечаток" } }, "page": { @@ -4535,19 +4639,19 @@ "title": "Доверенные сертификаты отсутствуют" }, "invalid": { - "title": "", - "description": "" + "title": "Недействительный сертификат", + "description": "Не удалось разобрать сертификат" }, "expires": "Истекает {when}", - "toHostnames": "" + "toHostnames": "Доверенные имена хостов" }, "hostnames": { - "title": "", - "description": "", + "title": "Доверенные имена хостов сертификатов", + "description": "Некоторые сертификаты не допускают использование конкретного домена, через который Homarr отправляет запросы. Поэтому все доверенные имена хостов с отпечатками сертификатов используются для обхода этих ограничений.", "noResults": { - "title": "" + "title": "Имена хостов пока отсутствуют" }, - "toCertificates": "" + "toCertificates": "Сертификаты" } }, "action": { @@ -4579,16 +4683,16 @@ } }, "removeHostname": { - "label": "", - "confirm": "", + "label": "Удалить доверенное имя хоста", + "confirm": "Вы уверены, что хотите удалить это доверенное имя хоста? Это может привести к прекращению работы некоторых интеграций.", "notification": { "success": { - "title": "", - "message": "" + "title": "Имя хоста удалено", + "message": "Имя хоста успешно удалено" }, "error": { - "title": "", - "message": "" + "title": "Не удалось удалить имя хоста", + "message": "Не удалось удалить имя хоста" } } } @@ -4597,10 +4701,10 @@ "log": { "level": { "option": { - "debug": "", - "info": "", - "warn": "", - "error": "" + "debug": "Отладка", + "info": "Информация", + "warn": "Предупреждение", + "error": "Ошибка" } } } diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 8a0f95372..207429c4d 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "Mesto / PSČ", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "Download klient", "description": "Umožňuje vám zobraziť a spravovať stiahnuté súbory z klientov Torrent aj Usenet.", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index 240939798..c98da18f2 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index 6f3adb90a..38ac40bd7 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index a44a851e5..732858cd4 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -649,14 +649,14 @@ "app": { "option": { "existing": { - "title": "", - "label": "" + "title": "Mevcut", + "label": "Mevcut uygulamayı seçin" }, "new": { - "title": "", + "title": "Yeni", "url": { - "label": "", - "description": "" + "label": "Uygulama url si", + "description": "Kontrol panelinden erişildiğinde uygulamanın açılacağı URL" } } } @@ -676,8 +676,8 @@ }, "app": { "action": { - "add": "", - "remove": "", + "add": "Bir uygulamayı bağla", + "remove": "Bağlantıyı kaldır", "select": "" } } @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "Şehir / Posta kodu", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "İndirme İstemcisi", "description": "Hem Torrent hem de Usenet istemcilerinden indirdiklerinizi görüntülemenizi ve yönetmenizi sağlar.", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "Hava Durumu" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index fe9f03c13..22c8bac56 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "Місто / Поштовий індекс", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "Завантаження", "description": "Дозволяє переглядати та керувати завантаженнями від клієнтів Torrent та Usenet.", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index 6c4b561d8..2a59c0256 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "", "description": "", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 7af7ebbf2..97bfe3b04 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -1996,6 +1996,61 @@ "title": "" } }, + "tracearr": { + "name": "", + "description": "", + "option": { + "showStreams": { + "label": "" + }, + "showStats": { + "label": "" + }, + "showRecentActivity": { + "label": "" + }, + "showViolations": { + "label": "" + } + }, + "stats": { + "activeStreams": "", + "totalUsers": "", + "transcodes": "", + "bandwidth": "" + }, + "streams": { + "empty": "", + "user": "", + "media": "", + "state": "", + "quality": "", + "device": "", + "progress": "", + "videoDecision": { + "directPlay": "", + "transcode": "", + "directStream": "" + } + }, + "recentActivity": { + "title": "", + "empty": "", + "watched": "", + "partial": "" + }, + "violations": { + "title": "", + "empty": "", + "rule": "", + "user": "" + }, + "noSectionsEnabled": "", + "error": { + "noIntegration": "", + "internalServerError": "" + } + }, "common": { "location": { "query": "城市 / 郵遞區號", @@ -2091,6 +2146,52 @@ } } }, + "immich-serverStats": { + "name": "", + "description": "", + "option": { + "showUsers": { + "label": "", + "description": "" + }, + "showPhotos": { + "label": "", + "description": "" + }, + "showVideos": { + "label": "", + "description": "" + }, + "showStorage": { + "label": "", + "description": "" + } + }, + "users": "", + "photos": "", + "videos": "", + "storage": "" + }, + "immich-albumCarousel": { + "name": "", + "option": { + "albumId": { + "label": "", + "description": "" + }, + "rotationIntervalSeconds": { + "label": "", + "description": "" + }, + "showPhotoInfo": { + "label": "", + "description": "" + } + }, + "description": "", + "noAlbumSelected": "", + "noPhotos": "" + }, "downloads": { "name": "下載器", "description": "允許查看和管理來自 Torrent 和 Usenet 的下載器", @@ -3472,6 +3573,9 @@ }, "weather": { "label": "" + }, + "tracearr": { + "label": "" } }, "interval": { diff --git a/packages/ui/package.json b/packages/ui/package.json index 778247965..512478be4 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -30,15 +30,15 @@ "@homarr/settings": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^8.3.13", - "@mantine/dates": "^8.3.13", - "@mantine/hooks": "^8.3.13", - "@tabler/icons-react": "^3.36.1", + "@mantine/core": "^8.3.16", + "@mantine/dates": "^8.3.16", + "@mantine/hooks": "^8.3.16", + "@tabler/icons-react": "^3.40.0", "crypto-js": "^4.2.0", "mantine-react-table": "2.0.0-beta.9", - "next": "16.1.4", - "react": "19.2.3", - "react-dom": "19.2.3", + "next": "16.1.6", + "react": "19.2.4", + "react-dom": "19.2.4", "svgson": "^5.3.1" }, "devDependencies": { @@ -47,7 +47,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/crypto-js": "^4.2.2", "@types/css-modules": "^1.0.5", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/validation/package.json b/packages/validation/package.json index 104c6eb13..7b91a5d3e 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -31,7 +31,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 85c0f6478..470ef406a 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -48,36 +48,36 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/charts": "^8.3.13", - "@mantine/core": "^8.3.13", - "@mantine/hooks": "^8.3.13", - "@tabler/icons-react": "^3.36.1", - "@tiptap/extension-color": "3.16.0", - "@tiptap/extension-highlight": "3.16.0", - "@tiptap/extension-image": "3.16.0", - "@tiptap/extension-link": "^3.16.0", - "@tiptap/extension-placeholder": "^3.16.0", - "@tiptap/extension-table": "3.16.0", - "@tiptap/extension-table-cell": "3.16.0", - "@tiptap/extension-table-header": "3.16.0", - "@tiptap/extension-table-row": "3.16.0", - "@tiptap/extension-task-item": "3.16.0", - "@tiptap/extension-task-list": "3.16.0", - "@tiptap/extension-text-align": "3.16.0", - "@tiptap/extension-text-style": "3.16.0", - "@tiptap/extension-underline": "3.16.0", - "@tiptap/react": "^3.16.0", - "@tiptap/starter-kit": "^3.16.0", + "@mantine/charts": "^8.3.16", + "@mantine/core": "^8.3.16", + "@mantine/hooks": "^8.3.16", + "@tabler/icons-react": "^3.40.0", + "@tiptap/extension-color": "3.20.1", + "@tiptap/extension-highlight": "3.20.1", + "@tiptap/extension-image": "3.20.1", + "@tiptap/extension-link": "^3.20.1", + "@tiptap/extension-placeholder": "^3.20.1", + "@tiptap/extension-table": "3.20.1", + "@tiptap/extension-table-cell": "3.20.1", + "@tiptap/extension-table-header": "3.20.1", + "@tiptap/extension-table-row": "3.20.1", + "@tiptap/extension-task-item": "3.20.1", + "@tiptap/extension-task-list": "3.20.1", + "@tiptap/extension-text-align": "3.20.1", + "@tiptap/extension-text-style": "3.20.1", + "@tiptap/extension-underline": "3.20.1", + "@tiptap/react": "^3.20.1", + "@tiptap/starter-kit": "^3.20.1", "clsx": "^2.1.1", "dayjs": "^1.11.19", "mantine-form-zod-resolver": "^1.3.0", "mantine-react-table": "2.0.0-beta.9", - "next": "16.1.4", - "react": "19.2.3", - "react-dom": "19.2.3", + "next": "16.1.6", + "react": "19.2.4", + "react-dom": "19.2.4", "react-markdown": "^10.1.0", "recharts": "^2.15.4", - "video.js": "^8.23.4", + "video.js": "^8.23.7", "zod": "^4.2.1" }, "devDependencies": { @@ -85,7 +85,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/video.js": "^7.3.58", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/packages/widgets/src/app/component.tsx b/packages/widgets/src/app/component.tsx index 8511eb7b0..1caa1ce56 100644 --- a/packages/widgets/src/app/component.tsx +++ b/packages/widgets/src/app/component.tsx @@ -131,7 +131,7 @@ export default function AppWidget({ options, isEditMode, height, width }: Widget {options.pingEnabled && !settings.forceDisableStatus && !board.disableStatus && app.href ? ( }> - + ) : null} diff --git a/packages/widgets/src/app/ping/ping-indicator.tsx b/packages/widgets/src/app/ping/ping-indicator.tsx index a74a6c79f..a6299ed95 100644 --- a/packages/widgets/src/app/ping/ping-indicator.tsx +++ b/packages/widgets/src/app/ping/ping-indicator.tsx @@ -7,13 +7,13 @@ import { clientApi } from "@homarr/api/client"; import { PingDot } from "./ping-dot"; interface PingIndicatorProps { - href: string; + appId: string; } -export const PingIndicator = ({ href }: PingIndicatorProps) => { +export const PingIndicator = ({ appId }: PingIndicatorProps) => { const [ping] = clientApi.widget.app.ping.useSuspenseQuery( { - url: href, + id: appId, }, { refetchOnMount: false, @@ -24,7 +24,7 @@ export const PingIndicator = ({ href }: PingIndicatorProps) => { const [pingResult, setPingResult] = useState(ping); clientApi.widget.app.updatedPing.useSubscription( - { url: href }, + { id: appId }, { onData(data) { setPingResult(data); diff --git a/packages/widgets/src/immich/album-carousel/component.module.css b/packages/widgets/src/immich/album-carousel/component.module.css new file mode 100644 index 000000000..9412b96dc --- /dev/null +++ b/packages/widgets/src/immich/album-carousel/component.module.css @@ -0,0 +1,52 @@ +.carouselContainer { + position: relative; + overflow: hidden; + background-color: var(--mantine-color-gray-9); + display: flex; + align-items: center; + justify-content: center; +} + +.carouselImage { + width: 100%; + height: 100%; + object-fit: cover; + background-color: var(--mantine-color-gray-8); +} + +.photoInfo { + position: absolute; + bottom: 0; + left: 0; + right: 0; + background: linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent); + color: white; + border-radius: 0; +} + +.dots { + position: absolute; + bottom: 12px; + left: 50%; + transform: translateX(-50%); + z-index: 10; +} + +.dot { + width: 8px; + height: 8px; + border-radius: 50%; + background-color: rgba(255, 255, 255, 0.5); + cursor: pointer; + transition: all 0.2s ease; + + &[data-active="true"] { + background-color: rgba(255, 255, 255, 1); + width: 24px; + border-radius: 4px; + } + + &:hover { + background-color: rgba(255, 255, 255, 0.8); + } +} diff --git a/packages/widgets/src/immich/album-carousel/component.tsx b/packages/widgets/src/immich/album-carousel/component.tsx new file mode 100644 index 000000000..a8a920d5d --- /dev/null +++ b/packages/widgets/src/immich/album-carousel/component.tsx @@ -0,0 +1,121 @@ +"use client"; + +import type { Dispatch, SetStateAction } from "react"; +import { useEffect, useState } from "react"; +import { Box, Center, Group, Image, Stack, Text } from "@mantine/core"; +import { IconAlertCircle, IconCalendar } from "@tabler/icons-react"; + +import { clientApi } from "@homarr/api/client"; +import { useI18n } from "@homarr/translation/client"; + +import type { WidgetComponentProps } from "../../definition"; +import classes from "./component.module.css"; + +export default function ImmichAlbumCarouselWidget({ + integrationIds, + options, +}: WidgetComponentProps<"immich-albumCarousel">) { + const [currentPhotoIndex, setCurrentPhotoIndex] = useState(0); + + if (!options.albumId) { + return ; + } + + const [album] = clientApi.widget.immich.getAlbum.useSuspenseQuery({ + integrationId: integrationIds[0] ?? "", + albumId: options.albumId, + }); + + if (album.assets.length === 0) { + return ; + } + + const photoAssets = album.assets.filter((asset) => asset.type === "IMAGE"); + + if (photoAssets.length === 0) { + return ; + } + + return ( + + ); +} + +interface CarouselProps { + assets: { + id: string; + deviceAssetId: string; + originalPath: string; + fileModifiedAt: string; + publicLink: string; + }[]; + currentIndex: number; + setCurrentIndex: Dispatch>; + rotationInterval: number; + showPhotoInfo: boolean; +} + +function Carousel({ assets, currentIndex, setCurrentIndex, rotationInterval, showPhotoInfo }: CarouselProps) { + useEffect(() => { + const interval = setInterval(() => { + setCurrentIndex((prev) => (prev + 1) % assets.length); + }, rotationInterval * 1000); + + return () => clearInterval(interval); + }, [assets.length, rotationInterval, setCurrentIndex]); + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const currentAsset = assets[currentIndex]!; + + return ( + + Album photo + + {showPhotoInfo && ( + + + + {new Date(currentAsset.fileModifiedAt).toLocaleDateString()} + + + {currentIndex + 1} / {assets.length} + + + )} + + ); +} + +function NoAlbumSelected() { + const t = useI18n(); + return ( +
+ + + + {t("widget.immich-albumCarousel.noAlbumSelected")} + + +
+ ); +} + +function NoPhotosInAlbum() { + const t = useI18n(); + return ( +
+ + + + {t("widget.immich-albumCarousel.noPhotos")} + + +
+ ); +} diff --git a/packages/widgets/src/immich/album-carousel/index.ts b/packages/widgets/src/immich/album-carousel/index.ts new file mode 100644 index 000000000..6ad37c50a --- /dev/null +++ b/packages/widgets/src/immich/album-carousel/index.ts @@ -0,0 +1,28 @@ +import { IconPhoto } from "@tabler/icons-react"; +import z from "zod"; + +import { createWidgetDefinition } from "../../definition"; +import { optionsBuilder } from "../../options"; + +export const { definition, componentLoader } = createWidgetDefinition("immich-albumCarousel", { + icon: IconPhoto, + supportedIntegrations: ["immich"], + integrationsRequired: true, + createOptions() { + return optionsBuilder.from((factory) => ({ + albumId: factory.text({ + defaultValue: "", + withDescription: true, + }), + rotationIntervalSeconds: factory.number({ + defaultValue: 5, + validate: z.number().min(1).max(3600), + withDescription: true, + }), + showPhotoInfo: factory.switch({ + defaultValue: false, + withDescription: true, + }), + })); + }, +}).withDynamicImport(() => import("./component")); diff --git a/packages/widgets/src/immich/server-stats/component.module.css b/packages/widgets/src/immich/server-stats/component.module.css new file mode 100644 index 000000000..9154643ff --- /dev/null +++ b/packages/widgets/src/immich/server-stats/component.module.css @@ -0,0 +1,20 @@ +.statItem { + padding: 12px; + border-radius: var(--mantine-radius-md); + background-color: var(--mantine-color-gray-0); + transition: all 0.2s ease; + + &:hover { + background-color: var(--mantine-color-gray-1); + } +} + +@media (prefers-color-scheme: dark) { + .statItem { + background-color: var(--mantine-color-dark-6); + + &:hover { + background-color: var(--mantine-color-dark-5); + } + } +} diff --git a/packages/widgets/src/immich/server-stats/component.tsx b/packages/widgets/src/immich/server-stats/component.tsx new file mode 100644 index 000000000..0240a27c4 --- /dev/null +++ b/packages/widgets/src/immich/server-stats/component.tsx @@ -0,0 +1,73 @@ +"use client"; + +import React from "react"; +import { Group, Stack, Text } from "@mantine/core"; +import { IconDatabase, IconPhoto, IconUsers, IconVideo } from "@tabler/icons-react"; + +import { clientApi } from "@homarr/api/client"; +import { humanFileSize } from "@homarr/common"; +import { useI18n } from "@homarr/translation/client"; + +import type { WidgetComponentProps } from "../../definition"; +import classes from "./component.module.css"; + +export default function ImmichServerStatsWidget({ + integrationIds, + options, +}: WidgetComponentProps<"immich-serverStats">) { + const t = useI18n(); + const [stats] = clientApi.widget.immich.getServerStats.useSuspenseQuery({ + integrationId: integrationIds[0] ?? "", + }); + + return ( + + {options.showUsers && ( + } label={t("widget.immich-serverStats.users")} value={stats.userCount} /> + )} + {options.showPhotos && ( + } + label={t("widget.immich-serverStats.photos")} + value={stats.photoCount} + /> + )} + {options.showVideos && ( + } + label={t("widget.immich-serverStats.videos")} + value={stats.videoCount} + /> + )} + {options.showStorage && ( + } + label={t("widget.immich-serverStats.storage")} + value={humanFileSize(stats.totalLibraryUsageInBytes)} + /> + )} + + ); +} + +interface StatItemProps { + icon: React.ReactNode; + label: string; + value: string | number; +} + +function StatItem({ icon, label, value }: StatItemProps) { + return ( + + + {icon} + + {label} + + + + {value} + + + ); +} diff --git a/packages/widgets/src/immich/server-stats/index.ts b/packages/widgets/src/immich/server-stats/index.ts new file mode 100644 index 000000000..61b07289a --- /dev/null +++ b/packages/widgets/src/immich/server-stats/index.ts @@ -0,0 +1,30 @@ +import { IconGraphFilled } from "@tabler/icons-react"; + +import { createWidgetDefinition } from "../../definition"; +import { optionsBuilder } from "../../options"; + +export const { definition, componentLoader } = createWidgetDefinition("immich-serverStats", { + icon: IconGraphFilled, + supportedIntegrations: ["immich"], + integrationsRequired: true, + createOptions() { + return optionsBuilder.from((factory) => ({ + showUsers: factory.switch({ + defaultValue: true, + withDescription: true, + }), + showPhotos: factory.switch({ + defaultValue: true, + withDescription: true, + }), + showVideos: factory.switch({ + defaultValue: true, + withDescription: true, + }), + showStorage: factory.switch({ + defaultValue: true, + withDescription: true, + }), + })); + }, +}).withDynamicImport(() => import("./component")); diff --git a/packages/widgets/src/index.tsx b/packages/widgets/src/index.tsx index ec075d467..6f5f2b03d 100644 --- a/packages/widgets/src/index.tsx +++ b/packages/widgets/src/index.tsx @@ -20,6 +20,8 @@ import * as downloads from "./downloads"; import * as firewall from "./firewall"; import * as healthMonitoring from "./health-monitoring"; import * as iframe from "./iframe"; +import * as immichAlbumCarousel from "./immich/album-carousel"; +import * as immichServerStats from "./immich/server-stats"; import type { WidgetImportRecord } from "./import"; import * as indexerManager from "./indexer-manager"; import * as mediaReleases from "./media-releases"; @@ -40,6 +42,7 @@ import * as smartHomeExecuteAutomation from "./smart-home/execute-automation"; import * as stockPrice from "./stocks"; import * as systemDisks from "./system-disks"; import * as systemResources from "./system-resources"; +import * as tracearr from "./tracearr"; import * as video from "./video"; import * as weather from "./weather"; @@ -79,6 +82,9 @@ export const widgetImports = { systemResources, coolify, systemDisks, + "immich-serverStats": immichServerStats, + "immich-albumCarousel": immichAlbumCarousel, + tracearr, } satisfies WidgetImportRecord; export type WidgetImports = typeof widgetImports; diff --git a/packages/widgets/src/releases/index.ts b/packages/widgets/src/releases/index.ts index 84c4f9998..8de5227ad 100644 --- a/packages/widgets/src/releases/index.ts +++ b/packages/widgets/src/releases/index.ts @@ -52,7 +52,7 @@ export const { definition, componentLoader } = createWidgetDefinition("releases" suffix: z.string().optional(), }) .optional(), - iconUrl: z.string().url().optional(), + iconUrl: z.string().optional(), }), ), }), diff --git a/packages/widgets/src/stocks/component.tsx b/packages/widgets/src/stocks/component.tsx index 8cfc58b07..e9d7b98ad 100644 --- a/packages/widgets/src/stocks/component.tsx +++ b/packages/widgets/src/stocks/component.tsx @@ -33,6 +33,7 @@ export default function StockPriceWidget({ options, width, height }: WidgetCompo const stockValuesMin = Math.min(...data.priceHistory); const stockGraphValues = data.priceHistory.map((value) => value - stockValuesMin + 50); + const trendColor = stockValuesChange > 0 ? "green.7" : stockValuesChange < 0 ? "red.7" : "gray.6"; return ( @@ -43,7 +44,7 @@ export default function StockPriceWidget({ options, width, height }: WidgetCompo h={height > 280 ? "75%" : "50%"} data={stockGraphValues} curveType="linear" - trendColors={{ positive: "green.7", negative: "red.7", neutral: "gray.6" }} + color={trendColor} fillOpacity={0.6} strokeWidth={2.5} /> diff --git a/packages/widgets/src/system-disks/component.tsx b/packages/widgets/src/system-disks/component.tsx index eab43f768..ba2d49c25 100644 --- a/packages/widgets/src/system-disks/component.tsx +++ b/packages/widgets/src/system-disks/component.tsx @@ -4,6 +4,7 @@ import { Box, Card, Group, Stack, useMantineColorScheme } from "@mantine/core"; import { clientApi } from "@homarr/api/client"; import { useRequiredBoard } from "@homarr/boards/context"; +import { humanFileSize } from "@homarr/common"; import { useI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../definition"; @@ -15,8 +16,13 @@ const getDisplayText = (item: { used: string; available: string; percentage: num switch (displayMode) { case "percentage": return `${Math.round(item.percentage)}%`; - case "absolute": - return `${item.used} / ${item.available}`; + case "absolute": { + const availableInBytes = Number(item.available); + const availableText = Number.isFinite(availableInBytes) + ? humanFileSize(Math.round(availableInBytes)) + : item.available; + return `${item.used} / ${availableText}`; + } case "free": return `${Math.round(100 - item.percentage)}% free`; default: diff --git a/packages/widgets/src/system-resources/index.ts b/packages/widgets/src/system-resources/index.ts index d89d6952f..8f7ade4c4 100644 --- a/packages/widgets/src/system-resources/index.ts +++ b/packages/widgets/src/system-resources/index.ts @@ -14,7 +14,7 @@ const labelDisplayModeOptions = { export const { definition, componentLoader } = createWidgetDefinition("systemResources", { icon: IconGraphFilled, - supportedIntegrations: ["dashDot", "openmediavault", "truenas", "unraid"], + supportedIntegrations: ["dashDot", "openmediavault", "truenas", "unraid", "glances"], createOptions() { return optionsBuilder.from((factory) => ({ hasShadow: factory.switch({ defaultValue: true }), diff --git a/packages/widgets/src/tracearr/component.tsx b/packages/widgets/src/tracearr/component.tsx new file mode 100644 index 000000000..1b26b6c67 --- /dev/null +++ b/packages/widgets/src/tracearr/component.tsx @@ -0,0 +1,131 @@ +"use client"; + +import { ScrollArea, Stack, Text } from "@mantine/core"; + +import { clientApi } from "@homarr/api/client"; +import type { TracearrDashboardData } from "@homarr/integrations/types"; +import { useScopedI18n } from "@homarr/translation/client"; + +import type { WidgetComponentProps } from "../definition"; +import { NoIntegrationDataError } from "../errors/no-data-integration"; +import { RecentActivityList } from "./recent-activity-section"; +import { StatsBar } from "./stats-section"; +import { StreamsList } from "./streams-section"; +import { ViolationsList } from "./violations-section"; + +export default function TracearrWidget({ + options, + integrationIds, + width, + isEditMode, +}: WidgetComponentProps<"tracearr">) { + if (integrationIds.length === 0) { + throw new NoIntegrationDataError(); + } + + return ; +} + +interface TracearrContentProps { + integrationIds: string[]; + options: WidgetComponentProps<"tracearr">["options"]; + width: number; + isEditMode: boolean; +} + +function TracearrContent({ integrationIds, options, width, isEditMode }: TracearrContentProps) { + const t = useScopedI18n("widget.tracearr"); + const [dashboardData] = clientApi.widget.tracearr.getDashboard.useSuspenseQuery({ integrationIds }); + + const utils = clientApi.useUtils(); + clientApi.widget.tracearr.subscribeToDashboard.useSubscription( + { integrationIds }, + { + enabled: !isEditMode, + onData(newData) { + utils.widget.tracearr.getDashboard.setData({ integrationIds }, (prevData) => { + if (!prevData) return prevData; + return prevData.map((instance) => + instance.integrationId === newData.integrationId + ? { ...instance, dashboard: newData.dashboard, updatedAt: newData.timestamp } + : instance, + ); + }); + }, + }, + ); + + // Merge data from all integrations + const combined = dashboardData.reduce( + (acc, item) => { + const { stats, streams, violations, recentActivity } = item.dashboard; + const vData = violations ?? { data: [], meta: { total: 0, page: 1, pageSize: 5 } }; + const aData = recentActivity ?? { data: [], meta: { total: 0, page: 1, pageSize: 5 } }; + + return { + stats: { + activeStreams: acc.stats.activeStreams + stats.activeStreams, + totalUsers: acc.stats.totalUsers + stats.totalUsers, + totalSessions: acc.stats.totalSessions + stats.totalSessions, + recentViolations: acc.stats.recentViolations + stats.recentViolations, + timestamp: stats.timestamp, + }, + streams: { + data: [...acc.streams.data, ...streams.data], + summary: { + total: acc.streams.summary.total + streams.summary.total, + transcodes: acc.streams.summary.transcodes + streams.summary.transcodes, + directStreams: acc.streams.summary.directStreams + streams.summary.directStreams, + directPlays: acc.streams.summary.directPlays + streams.summary.directPlays, + totalBitrate: streams.summary.totalBitrate, + byServer: [...acc.streams.summary.byServer, ...streams.summary.byServer], + }, + }, + violations: { + data: [...(acc.violations?.data ?? []), ...vData.data], + meta: { + total: (acc.violations?.meta.total ?? 0) + vData.meta.total, + page: 1, + pageSize: 5, + }, + }, + recentActivity: { + data: [...(acc.recentActivity?.data ?? []), ...aData.data], + meta: { + total: (acc.recentActivity?.meta.total ?? 0) + aData.meta.total, + page: 1, + pageSize: 5, + }, + }, + }; + }, + { + stats: { activeStreams: 0, totalUsers: 0, totalSessions: 0, recentViolations: 0, timestamp: "" }, + streams: { + data: [], + summary: { total: 0, transcodes: 0, directStreams: 0, directPlays: 0, totalBitrate: "0", byServer: [] }, + }, + violations: null, + recentActivity: null, + }, + ); + + const noSectionsEnabled = + !options.showStats && !options.showStreams && !options.showRecentActivity && !options.showViolations; + + return ( + + + {options.showStats && } + {options.showStreams && } + {options.showViolations && } + {options.showRecentActivity && } + {noSectionsEnabled && ( + + {t("noSectionsEnabled")} + + )} + + + ); +} diff --git a/packages/widgets/src/tracearr/index.ts b/packages/widgets/src/tracearr/index.ts new file mode 100644 index 000000000..44936cb67 --- /dev/null +++ b/packages/widgets/src/tracearr/index.ts @@ -0,0 +1,32 @@ +import { IconActivityHeartbeat, IconServerOff } from "@tabler/icons-react"; + +import { createWidgetDefinition } from "../definition"; +import { optionsBuilder } from "../options"; + +export const { definition, componentLoader } = createWidgetDefinition("tracearr", { + icon: IconActivityHeartbeat, + createOptions() { + return optionsBuilder.from((factory) => ({ + showStreams: factory.switch({ + defaultValue: true, + }), + showStats: factory.switch({ + defaultValue: true, + }), + + showRecentActivity: factory.switch({ + defaultValue: true, + }), + showViolations: factory.switch({ + defaultValue: true, + }), + })); + }, + supportedIntegrations: ["tracearr"], + errors: { + INTERNAL_SERVER_ERROR: { + icon: IconServerOff, + message: (t) => t("widget.tracearr.error.internalServerError"), + }, + }, +}).withDynamicImport(() => import("./component")); diff --git a/packages/widgets/src/tracearr/recent-activity-section.tsx b/packages/widgets/src/tracearr/recent-activity-section.tsx new file mode 100644 index 000000000..84fe35c3b --- /dev/null +++ b/packages/widgets/src/tracearr/recent-activity-section.tsx @@ -0,0 +1,56 @@ +import { Avatar, Badge, Group, Paper, Stack, Text } from "@mantine/core"; + +import type { TracearrHistorySession } from "@homarr/integrations/types"; +import { useScopedI18n } from "@homarr/translation/client"; + +export function RecentActivityList({ sessions }: { sessions: TracearrHistorySession[] }) { + const t = useScopedI18n("widget.tracearr"); + + return ( + + + {t("recentActivity.title")} + + {sessions.length === 0 ? ( + + {t("recentActivity.empty")} + + ) : ( + + {sessions.map((session) => { + const mediaLabel = + session.mediaType === "episode" && session.showTitle + ? `${session.showTitle} - S${session.seasonNumber ?? 0}E${session.episodeNumber ?? 0}` + : session.mediaTitle; + + return ( + + + + + + + {mediaLabel} + + + {session.user.username} • {session.serverName} + + + + + + {session.watched ? t("recentActivity.watched") : t("recentActivity.partial")} + + + {new Date(session.startedAt).toLocaleDateString()} + + + + + ); + })} + + )} + + ); +} diff --git a/packages/widgets/src/tracearr/stats-section.tsx b/packages/widgets/src/tracearr/stats-section.tsx new file mode 100644 index 000000000..efa2d8b32 --- /dev/null +++ b/packages/widgets/src/tracearr/stats-section.tsx @@ -0,0 +1,49 @@ +import { Group, Paper, SimpleGrid, Stack, Text } from "@mantine/core"; +import { IconDevices, IconNetwork, IconUsers, IconVideo } from "@tabler/icons-react"; + +import type { TracearrDashboardData } from "@homarr/integrations/types"; +import { useScopedI18n } from "@homarr/translation/client"; + +export function StatsBar({ + stats, + summary, + width, +}: { + stats: TracearrDashboardData["stats"]; + summary: TracearrDashboardData["streams"]["summary"]; + width: number; +}) { + const t = useScopedI18n("widget.tracearr"); + const cols = width > 400 ? 4 : width > 250 ? 2 : 1; + + return ( + + } label={t("stats.activeStreams")} value={stats.activeStreams} /> + } label={t("stats.totalUsers")} value={stats.totalUsers} /> + } + label={t("stats.transcodes")} + value={`${summary.transcodes}/${summary.total}`} + /> + } label={t("stats.bandwidth")} value={summary.totalBitrate} /> + + ); +} + +function StatCard({ icon, label, value }: { icon: React.ReactNode; label: string; value: string | number }) { + return ( + + + {icon} + + + {label} + + + {value} + + + + + ); +} diff --git a/packages/widgets/src/tracearr/streams-section.tsx b/packages/widgets/src/tracearr/streams-section.tsx new file mode 100644 index 000000000..e7908b7ba --- /dev/null +++ b/packages/widgets/src/tracearr/streams-section.tsx @@ -0,0 +1,128 @@ +import { Badge, Box, Group, Paper, Progress, Stack, Text, Tooltip } from "@mantine/core"; +import { IconPlayerPause, IconPlayerPlay } from "@tabler/icons-react"; + +import { formatDuration } from "@homarr/common"; +import type { TracearrStream } from "@homarr/integrations/types"; +import { useScopedI18n } from "@homarr/translation/client"; + +export function StreamsList({ streams, width }: { streams: TracearrStream[]; width: number }) { + const t = useScopedI18n("widget.tracearr"); + + if (streams.length === 0) { + return ( + + {t("streams.empty")} + + ); + } + + return ( + + {streams.map((stream) => ( + + ))} + + ); +} + +function StreamCard({ stream, compact }: { stream: TracearrStream; compact: boolean }) { + const t = useScopedI18n("widget.tracearr"); + const progressPercent = + stream.durationMs && stream.durationMs > 0 ? (stream.progressMs / stream.durationMs) * 100 : 0; + + const mediaLabel = + stream.mediaType === "episode" && stream.showTitle + ? `${stream.showTitle} - S${stream.seasonNumber ?? 0}E${stream.episodeNumber ?? 0} - ${stream.mediaTitle}` + : stream.mediaTitle; + + const videoDecisionLabel = + stream.videoDecision === "directplay" + ? t("streams.videoDecision.directPlay") + : stream.videoDecision === "transcode" + ? t("streams.videoDecision.transcode") + : stream.videoDecision === "copy" + ? t("streams.videoDecision.directStream") + : null; + + return ( + + {stream.posterUrl && ( + + )} + + + + {stream.state === "playing" ? ( + + ) : ( + + )} + + {stream.username} + + + + {stream.resolution && ( + + {stream.resolution} + + )} + {videoDecisionLabel && ( + + {videoDecisionLabel} + + )} + + + + + + {mediaLabel} + + + + {stream.durationMs && stream.durationMs > 0 && ( + + + + {formatDuration(stream.progressMs)} / {formatDuration(stream.durationMs)} + + + )} + + + {stream.device && ( + + {stream.player ?? stream.device} + + )} + + + + ); +} diff --git a/packages/widgets/src/tracearr/violations-section.tsx b/packages/widgets/src/tracearr/violations-section.tsx new file mode 100644 index 000000000..a35c5a933 --- /dev/null +++ b/packages/widgets/src/tracearr/violations-section.tsx @@ -0,0 +1,66 @@ +import { Avatar, Badge, Group, Paper, Stack, Text } from "@mantine/core"; +import { IconAlertTriangle } from "@tabler/icons-react"; + +import type { TracearrViolation } from "@homarr/integrations/types"; +import { useScopedI18n } from "@homarr/translation/client"; + +export function ViolationsList({ violations }: { violations: TracearrViolation[] }) { + const t = useScopedI18n("widget.tracearr"); + + return ( + + + {t("violations.title")} + + {violations.length === 0 ? ( + + {t("violations.empty")} + + ) : ( + + {violations.map((violation) => ( + + + + + + + + {violation.user.username} + + + {t("violations.rule")}: {violation.rule.name} + + + + + + {violation.severity} + + + {new Date(violation.createdAt).toLocaleDateString()} + + + + + ))} + + )} + + ); +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac7324f05..932cd93e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,21 +7,21 @@ settings: overrides: '@babel/helpers@<7.26.10': '>=7.28.6' '@babel/runtime@<7.26.10': '>=7.28.6' - axios@>=1.0.0 <1.8.2: '>=1.13.2' - brace-expansion@>=2.0.0 <=2.0.1: '>=4.0.1' - brace-expansion@>=1.0.0 <=1.1.11: '>=4.0.1' - esbuild@<=0.24.2: '>=0.27.2' + axios@>=1.0.0 <1.8.2: '>=1.13.6' + brace-expansion@>=2.0.0 <=2.0.1: '>=5.0.4' + brace-expansion@>=1.0.0 <=1.1.11: '>=5.0.4' + esbuild@<=0.24.2: '>=0.27.3' form-data@>=4.0.0 <4.0.4: '>=4.0.5' - hono@<4.6.5: '>=4.11.4' + hono@<4.6.5: '>=4.12.7' linkifyjs@<4.3.2: '>=4.3.2' nanoid@>=4.0.0 <5.0.9: '>=5.1.6' prismjs@<1.30.0: '>=1.30.0' - proxmox-api>undici: 7.18.2 - react-is: ^19.2.3 - rollup@>=4.0.0 <4.22.4: '>=4.55.2' + proxmox-api>undici: 7.19.2 + react-is: ^19.2.4 + rollup@>=4.0.0 <4.22.4: '>=4.59.0' sha.js@<=2.4.11: '>=2.4.12' - tar-fs@>=3.0.0 <3.0.9: '>=3.1.1' - tar-fs@>=2.0.0 <2.1.3: '>=3.1.1' + tar-fs@>=3.0.0 <3.0.9: '>=3.1.2' + tar-fs@>=2.0.0 <2.1.3: '>=3.1.2' tmp@<=0.2.3: '>=0.2.5' vite@>=5.0.0 <=5.4.18: '>=7.3.1' @@ -42,85 +42,85 @@ importers: version: link:tooling/prettier '@semantic-release/changelog': specifier: ^6.0.3 - version: 6.0.3(semantic-release@25.0.2(typescript@5.9.3)) + version: 6.0.3(semantic-release@25.0.3(typescript@5.9.3)) '@semantic-release/commit-analyzer': specifier: ^13.0.1 - version: 13.0.1(semantic-release@25.0.2(typescript@5.9.3)) + version: 13.0.1(semantic-release@25.0.3(typescript@5.9.3)) '@semantic-release/git': specifier: ^10.0.1 - version: 10.0.1(semantic-release@25.0.2(typescript@5.9.3)) + version: 10.0.1(semantic-release@25.0.3(typescript@5.9.3)) '@semantic-release/github': - specifier: ^12.0.2 - version: 12.0.2(semantic-release@25.0.2(typescript@5.9.3)) + specifier: ^12.0.6 + version: 12.0.6(semantic-release@25.0.3(typescript@5.9.3)) '@semantic-release/npm': - specifier: ^13.1.3 - version: 13.1.3(semantic-release@25.0.2(typescript@5.9.3)) + specifier: ^13.1.5 + version: 13.1.5(semantic-release@25.0.3(typescript@5.9.3)) '@semantic-release/release-notes-generator': specifier: ^14.1.0 - version: 14.1.0(semantic-release@25.0.2(typescript@5.9.3)) + version: 14.1.0(semantic-release@25.0.3(typescript@5.9.3)) '@testcontainers/redis': - specifier: ^11.11.0 - version: 11.11.0 + specifier: ^11.12.0 + version: 11.12.0 '@turbo/gen': - specifier: ^2.7.5 - version: 2.7.5(@swc/core@1.15.3)(@types/node@24.10.9)(typescript@5.9.3) + specifier: ^2.8.15 + version: 2.8.16(@types/node@24.12.0) '@vitejs/plugin-react': - specifier: ^5.1.2 - version: 5.1.2(vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) + specifier: ^5.1.4 + version: 5.1.4(vite@7.1.12(@types/node@24.12.0)(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1)) '@vitest/coverage-v8': - specifier: ^4.0.17 - version: 4.0.17(vitest@4.0.17) + specifier: ^4.0.18 + version: 4.0.18(vitest@4.0.18) '@vitest/ui': - specifier: ^4.0.17 - version: 4.0.17(vitest@4.0.17) + specifier: ^4.0.18 + version: 4.0.18(vitest@4.0.18) conventional-changelog-conventionalcommits: - specifier: ^9.1.0 - version: 9.1.0 + specifier: ^9.3.0 + version: 9.3.0 cross-env: specifier: ^10.1.0 version: 10.1.0 jsdom: - specifier: ^27.4.0 - version: 27.4.0(postcss@8.5.6) + specifier: ^28.1.0 + version: 28.1.0(@noble/hashes@2.0.1) json5: specifier: ^2.2.3 version: 2.2.3 prettier: - specifier: ^3.8.0 - version: 3.8.0 + specifier: ^3.8.1 + version: 3.8.1 semantic-release: - specifier: ^25.0.2 - version: 25.0.2(typescript@5.9.3) + specifier: ^25.0.3 + version: 25.0.3(typescript@5.9.3) testcontainers: - specifier: ^11.11.0 - version: 11.11.0 + specifier: ^11.12.0 + version: 11.12.0 turbo: - specifier: ^2.7.5 - version: 2.7.5 + specifier: ^2.8.15 + version: 2.8.16 typescript: specifier: ^5.9.3 version: 5.9.3 vite-tsconfig-paths: - specifier: ^6.0.4 - version: 6.0.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) + specifier: ^6.1.1 + version: 6.1.1(typescript@5.9.3)(vite@7.1.12(@types/node@24.12.0)(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1)) vitest: - specifier: ^4.0.17 - version: 4.0.17(@types/node@24.10.9)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + specifier: ^4.0.18 + version: 4.0.18(@types/node@24.12.0)(@vitest/ui@4.0.18)(jsdom@28.1.0(@noble/hashes@2.0.1))(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1) apps/nextjs: dependencies: '@dnd-kit/core': specifier: ^6.3.1 - version: 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@dnd-kit/modifiers': specifier: ^9.0.0 - version: 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + version: 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) '@dnd-kit/sortable': specifier: ^10.0.0 - version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) '@dnd-kit/utilities': specifier: ^3.2.2 - version: 3.2.2(react@19.2.3) + version: 3.2.2(react@19.2.4) '@homarr/analytics': specifier: workspace:^0.1.0 version: link:../../packages/analytics @@ -209,26 +209,26 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/widgets '@mantine/colors-generator': - specifier: ^8.3.13 - version: 8.3.13(chroma-js@3.2.0) + specifier: ^8.3.16 + version: 8.3.16(chroma-js@3.2.0) '@mantine/core': - specifier: ^8.3.13 - version: 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mantine/dropzone': - specifier: ^8.3.13 - version: 8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mantine/hooks': - specifier: ^8.3.13 - version: 8.3.13(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(react@19.2.4) '@mantine/modals': - specifier: ^8.3.13 - version: 8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mantine/tiptap': - specifier: ^8.3.13 - version: 8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(@tiptap/extension-link@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))(@tiptap/react@3.16.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(@tiptap/extension-link@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))(@tiptap/react@3.20.1(@floating-ui/dom@1.7.4)(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@million/lint': specifier: 1.0.14 - version: 1.0.14(webpack-sources@3.3.3) + version: 1.0.14(webpack-sources@3.3.4) '@tabler/icons-react': specifier: ^3.36.1 version: 3.36.1(react@19.2.3) @@ -236,26 +236,26 @@ importers: specifier: ^1.27.7 version: 1.27.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@tanstack/react-query': - specifier: ^5.90.19 - version: 5.90.19(react@19.2.3) + specifier: ^5.90.21 + version: 5.90.21(react@19.2.4) '@tanstack/react-query-devtools': - specifier: ^5.91.2 - version: 5.91.2(@tanstack/react-query@5.90.19(react@19.2.3))(react@19.2.3) + specifier: ^5.91.3 + version: 5.91.3(@tanstack/react-query@5.90.21(react@19.2.4))(react@19.2.4) '@tanstack/react-query-next-experimental': specifier: ^5.91.0 - version: 5.91.0(@tanstack/react-query@5.90.19(react@19.2.3))(next@16.1.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2))(react@19.2.3) + version: 5.91.0(@tanstack/react-query@5.90.21(react@19.2.4))(next@16.1.6(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(react@19.2.4) '@trpc/client': - specifier: ^11.8.1 - version: 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) + specifier: ^11.12.0 + version: 11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3) '@trpc/next': - specifier: ^11.8.1 - version: 11.8.1(@tanstack/react-query@5.90.19(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.8.1(@tanstack/react-query@5.90.19(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(next@16.1.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + specifier: ^11.12.0 + version: 11.12.0(@tanstack/react-query@5.90.21(react@19.2.4))(@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.12.0(@tanstack/react-query@5.90.21(react@19.2.4))(@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.12.0(typescript@5.9.3))(react@19.2.4)(typescript@5.9.3))(@trpc/server@11.12.0(typescript@5.9.3))(next@16.1.6(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@trpc/react-query': - specifier: ^11.8.1 - version: 11.8.1(@tanstack/react-query@5.90.19(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + specifier: ^11.12.0 + version: 11.12.0(@tanstack/react-query@5.90.21(react@19.2.4))(@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.12.0(typescript@5.9.3))(react@19.2.4)(typescript@5.9.3) '@trpc/server': - specifier: ^11.8.1 - version: 11.8.1(typescript@5.9.3) + specifier: ^11.12.0 + version: 11.12.0(typescript@5.9.3) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@6.0.0) @@ -278,26 +278,26 @@ importers: specifier: ^1.11.19 version: 1.11.19 dotenv: - specifier: ^17.2.3 - version: 17.2.3 + specifier: ^17.3.1 + version: 17.3.1 flag-icons: specifier: ^7.5.0 version: 7.5.0 glob: - specifier: ^13.0.0 - version: 13.0.0 + specifier: ^13.0.6 + version: 13.0.6 isomorphic-dompurify: - specifier: ^2.35.0 - version: 2.35.0(postcss@8.5.6) + specifier: ^3.1.0 + version: 3.1.0(@noble/hashes@2.0.1) jotai: - specifier: ^2.16.2 - version: 2.16.2(@babel/core@7.26.0)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3) + specifier: ^2.18.1 + version: 2.18.1(@babel/core@7.26.0)(@babel/template@7.28.6)(@types/react@19.2.14)(react@19.2.4) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(@tabler/icons-react@3.36.1(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.0.0-beta.9(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/dates@8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(@tabler/icons-react@3.40.0(react@19.2.4))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) next: - specifier: 16.1.4 - version: 16.1.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) + specifier: 16.1.6 + version: 16.1.6(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) postcss-preset-mantine: specifier: ^1.18.0 version: 1.18.0(postcss@8.5.6) @@ -305,29 +305,29 @@ importers: specifier: ^1.30.0 version: 1.30.0 react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) react-error-boundary: - specifier: ^6.1.0 - version: 6.1.0(react@19.2.3) + specifier: ^6.1.1 + version: 6.1.1(react@19.2.4) react-simple-code-editor: specifier: ^0.14.1 - version: 0.14.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 0.14.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) sass: - specifier: ^1.97.2 - version: 1.97.2 + specifier: ^1.97.3 + version: 1.97.3 superjson: specifier: 2.2.6 version: 2.2.6 swagger-ui-react: - specifier: ^5.31.0 - version: 5.31.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^5.32.0 + version: 5.32.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) use-deep-compare-effect: specifier: ^1.8.1 - version: 1.8.1(react@19.2.3) + version: 1.8.1(react@19.2.4) zod: specifier: ^4.2.1 version: 4.2.1 @@ -345,17 +345,17 @@ importers: specifier: 3.1.2 version: 3.1.2 '@types/node': - specifier: ^24.10.9 - version: 24.10.9 + specifier: ^24.12.0 + version: 24.12.0 '@types/prismjs': - specifier: ^1.26.5 - version: 1.26.5 + specifier: ^1.26.6 + version: 1.26.6 '@types/react': - specifier: 19.2.8 - version: 19.2.8 + specifier: 19.2.14 + version: 19.2.14 '@types/react-dom': specifier: 19.2.3 - version: 19.2.3(@types/react@19.2.8) + version: 19.2.3(@types/react@19.2.14) '@types/swagger-ui-react': specifier: ^5.18.0 version: 5.18.0 @@ -363,14 +363,14 @@ importers: specifier: ^9.2.1 version: 9.2.1 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 node-loader: specifier: ^2.1.0 - version: 2.1.0(webpack@5.94.0(@swc/core@1.15.3)) + version: 2.1.0(webpack@5.94.0) prettier: - specifier: ^3.8.0 - version: 3.8.0 + specifier: ^3.8.1 + version: 3.8.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -432,11 +432,11 @@ importers: specifier: ^1.11.19 version: 1.11.19 dotenv: - specifier: ^17.2.3 - version: 17.2.3 + specifier: ^17.3.1 + version: 17.3.1 fastify: - specifier: ^5.7.1 - version: 5.7.1 + specifier: ^5.8.2 + version: 5.8.2 superjson: specifier: 2.2.6 version: 2.2.6 @@ -454,20 +454,20 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^24.10.9 - version: 24.10.9 + specifier: ^24.12.0 + version: 24.12.0 dotenv-cli: specifier: ^11.0.0 version: 11.0.0 esbuild: - specifier: ^0.27.2 - version: 0.27.2 + specifier: ^0.27.3 + version: 0.27.3 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 prettier: - specifier: ^3.8.0 - version: 3.8.0 + specifier: ^3.8.1 + version: 3.8.1 tsx: specifier: 4.20.4 version: 4.20.4 @@ -502,8 +502,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/validation dotenv: - specifier: ^17.2.3 - version: 17.2.3 + specifier: ^17.3.1 + version: 17.3.1 tsx: specifier: 4.20.4 version: 4.20.4 @@ -524,26 +524,35 @@ importers: specifier: ^8.18.1 version: 8.18.1 esbuild: - specifier: ^0.27.2 - version: 0.27.2 + specifier: ^0.27.3 + version: 0.27.3 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 prettier: - specifier: ^3.8.0 - version: 3.8.0 + specifier: ^3.8.1 + version: 3.8.1 typescript: specifier: ^5.9.3 version: 5.9.3 packages/analytics: dependencies: + '@homarr/auth': + specifier: workspace:^0.1.0 + version: link:../auth + '@homarr/common': + specifier: workspace:^0.1.0 + version: link:../common '@homarr/core': specifier: workspace:^0.1.0 version: link:../core '@homarr/db': specifier: workspace:^0.1.0 version: link:../db + '@homarr/docker': + specifier: workspace:^0.1.0 + version: link:../docker '@homarr/server-settings': specifier: workspace:^0.1.0 version: link:../server-settings @@ -564,8 +573,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -633,38 +642,38 @@ importers: specifier: ^1.4.0 version: 1.4.0 '@tanstack/react-query': - specifier: ^5.90.19 - version: 5.90.19(react@19.2.3) + specifier: ^5.90.21 + version: 5.90.21(react@19.2.4) '@trpc/client': - specifier: ^11.8.1 - version: 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) + specifier: ^11.12.0 + version: 11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3) '@trpc/react-query': - specifier: ^11.8.1 - version: 11.8.1(@tanstack/react-query@5.90.19(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + specifier: ^11.12.0 + version: 11.12.0(@tanstack/react-query@5.90.21(react@19.2.4))(@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.12.0(typescript@5.9.3))(react@19.2.4)(typescript@5.9.3) '@trpc/server': - specifier: ^11.8.1 - version: 11.8.1(typescript@5.9.3) + specifier: ^11.12.0 + version: 11.12.0(typescript@5.9.3) '@trpc/tanstack-react-query': - specifier: ^11.8.1 - version: 11.8.1(@tanstack/react-query@5.90.19(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + specifier: ^11.12.0 + version: 11.12.0(@tanstack/react-query@5.90.21(react@19.2.4))(@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.12.0(typescript@5.9.3))(react@19.2.4)(typescript@5.9.3) lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 next: - specifier: 16.1.4 - version: 16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) + specifier: 16.1.6 + version: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) superjson: specifier: 2.2.6 version: 2.2.6 trpc-to-openapi: specifier: ^3.1.0 - version: 3.1.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.8.1(typescript@5.9.3))(zod-openapi@5.3.0(zod@4.2.1))(zod@4.2.1) + version: 3.1.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.12.0(typescript@5.9.3))(zod-openapi@5.3.0(zod@4.2.1))(zod@4.2.1) zod: specifier: ^4.2.1 version: 4.2.1 @@ -679,11 +688,11 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 prettier: - specifier: ^3.8.0 - version: 3.8.0 + specifier: ^3.8.1 + version: 3.8.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -718,20 +727,20 @@ importers: specifier: ^0.9.1 version: 0.9.1 ldapts: - specifier: 8.1.3 - version: 8.1.3 + specifier: 8.1.7 + version: 8.1.7 next: - specifier: 16.1.4 - version: 16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) + specifier: 16.1.6 + version: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) next-auth: specifier: 5.0.0-beta.30 - version: 5.0.0-beta.30(next@16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2))(react@19.2.3) + version: 5.0.0-beta.30(next@16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(react@19.2.4) react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) zod: specifier: ^4.2.1 version: 4.2.1 @@ -752,11 +761,11 @@ importers: specifier: 0.9.2 version: 0.9.2 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 prettier: - specifier: ^3.8.0 - version: 3.8.0 + specifier: ^3.8.1 + version: 3.8.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -767,11 +776,11 @@ importers: specifier: workspace:^0.1.0 version: link:../api react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -783,8 +792,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -807,8 +816,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation dotenv: - specifier: ^17.2.3 - version: 17.2.3 + specifier: ^17.3.1 + version: 17.3.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -820,11 +829,11 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript esbuild: - specifier: ^0.27.2 - version: 0.27.2 + specifier: ^0.27.3 + version: 0.27.3 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -835,23 +844,26 @@ importers: specifier: workspace:^0.1.0 version: link:../core '@paralleldrive/cuid2': - specifier: ^3.1.0 - version: 3.1.0 + specifier: ^3.3.0 + version: 3.3.0 + cookie: + specifier: 1.1.1 + version: 1.1.1 dayjs: specifier: ^1.11.19 version: 1.11.19 next: - specifier: 16.1.4 - version: 16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) + specifier: 16.1.6 + version: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) octokit: specifier: ^5.0.5 version: 5.0.5 react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) undici: specifier: 7.18.2 version: 7.18.2 @@ -872,8 +884,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -891,16 +903,16 @@ importers: version: 0.2.9 drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1) + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.19.1(@types/node@24.12.0))(pg@8.20.0) ioredis: - specifier: 5.9.2 - version: 5.9.2 + specifier: 5.10.0 + version: 5.10.0 mysql2: - specifier: 3.16.1 - version: 3.16.1 + specifier: 3.19.1 + version: 3.19.1(@types/node@24.12.0) pg: - specifier: ^8.17.1 - version: 8.17.1 + specifier: ^8.20.0 + version: 8.20.0 superjson: specifier: 2.2.6 version: 2.2.6 @@ -924,11 +936,11 @@ importers: specifier: 7.6.13 version: 7.6.13 '@types/pg': - specifier: ^8.16.0 - version: 8.16.0 + specifier: ^8.18.0 + version: 8.18.0 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -945,23 +957,23 @@ importers: specifier: workspace:^0.1.0 version: link:../cron-jobs '@tanstack/react-query': - specifier: ^5.90.19 - version: 5.90.19(react@19.2.3) + specifier: ^5.90.21 + version: 5.90.21(react@19.2.4) '@trpc/client': - specifier: ^11.8.1 - version: 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) + specifier: ^11.12.0 + version: 11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3) '@trpc/server': - specifier: ^11.8.1 - version: 11.8.1(typescript@5.9.3) + specifier: ^11.12.0 + version: 11.12.0(typescript@5.9.3) '@trpc/tanstack-react-query': - specifier: ^11.8.1 - version: 11.8.1(@tanstack/react-query@5.90.19(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + specifier: ^11.12.0 + version: 11.12.0(@tanstack/react-query@5.90.21(react@19.2.4))(@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.12.0(typescript@5.9.3))(react@19.2.4)(typescript@5.9.3) node-cron: specifier: ^4.2.1 version: 4.2.1 react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 zod: specifier: ^4.2.1 version: 4.2.1 @@ -979,11 +991,11 @@ importers: specifier: ^3.0.11 version: 3.0.11 '@types/react': - specifier: 19.2.8 - version: 19.2.8 + specifier: 19.2.14 + version: 19.2.14 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1004,8 +1016,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1074,8 +1086,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1108,8 +1120,8 @@ importers: specifier: ^3.0.11 version: 3.0.11 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1132,38 +1144,38 @@ importers: specifier: workspace:^0.1.0 version: link:../server-settings '@mantine/core': - specifier: ^8.3.13 - version: 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@paralleldrive/cuid2': - specifier: ^3.1.0 - version: 3.1.0 + specifier: ^3.3.0 + version: 3.3.0 '@testcontainers/mysql': - specifier: ^11.11.0 - version: 11.11.0 + specifier: ^11.12.0 + version: 11.12.0 '@testcontainers/postgresql': - specifier: ^11.11.0 - version: 11.11.0 + specifier: ^11.12.0 + version: 11.12.0 better-sqlite3: specifier: ^12.6.2 version: 12.6.2 dotenv: - specifier: ^17.2.3 - version: 17.2.3 + specifier: ^17.3.1 + version: 17.3.1 drizzle-kit: - specifier: ^0.31.8 - version: 0.31.8 + specifier: ^0.31.9 + version: 0.31.9 drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1) + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.19.1(@types/node@24.12.0))(pg@8.20.0) drizzle-zod: specifier: ^0.8.3 - version: 0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1))(zod@4.2.1) + version: 0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.19.1(@types/node@24.12.0))(pg@8.20.0))(zod@4.2.1) mysql2: - specifier: 3.16.1 - version: 3.16.1 + specifier: 3.19.1 + version: 3.19.1(@types/node@24.12.0) pg: - specifier: ^8.17.1 - version: 8.17.1 + specifier: ^8.20.0 + version: 8.20.0 superjson: specifier: 2.2.6 version: 2.2.6 @@ -1181,20 +1193,20 @@ importers: specifier: 7.6.13 version: 7.6.13 '@types/pg': - specifier: ^8.16.0 - version: 8.16.0 + specifier: ^8.18.0 + version: 8.18.0 dotenv-cli: specifier: ^11.0.0 version: 11.0.0 esbuild: - specifier: ^0.27.2 - version: 0.27.2 + specifier: ^0.27.3 + version: 0.27.3 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 prettier: - specifier: ^3.8.0 - version: 3.8.0 + specifier: ^3.8.1 + version: 3.8.1 tsx: specifier: 4.20.4 version: 4.20.4 @@ -1208,8 +1220,8 @@ importers: specifier: workspace:^0.1.0 version: link:../common fast-xml-parser: - specifier: ^5.3.3 - version: 5.3.3 + specifier: ^5.4.2 + version: 5.4.2 zod: specifier: ^4.2.1 version: 4.2.1 @@ -1224,8 +1236,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 tsx: specifier: 4.20.4 version: 4.20.4 @@ -1255,11 +1267,11 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/dockerode': - specifier: ^4.0.0 - version: 4.0.0 + specifier: ^4.0.1 + version: 4.0.1 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1276,11 +1288,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/form': - specifier: ^8.3.13 - version: 8.3.13(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(react@19.2.4) mantine-form-zod-resolver: specifier: ^1.3.0 - version: 1.3.0(@mantine/form@8.3.13(react@19.2.3))(zod@4.2.1) + version: 1.3.0(@mantine/form@8.3.16(react@19.2.4))(zod@4.2.1) zod: specifier: ^4.2.1 version: 4.2.1 @@ -1295,8 +1307,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1328,11 +1340,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^8.3.13 - version: 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 zod: specifier: ^4.2.1 version: 4.2.1 @@ -1347,8 +1359,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1375,8 +1387,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1409,8 +1421,8 @@ importers: specifier: 6.0.0 version: 6.0.0 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1418,11 +1430,11 @@ importers: packages/integrations: dependencies: '@ctrl/deluge': - specifier: ^7.5.0 - version: 7.5.0 + specifier: ^7.5.2 + version: 7.5.2 '@ctrl/qbittorrent': - specifier: ^9.11.0 - version: 9.11.0 + specifier: ^9.11.2 + version: 9.11.2 '@ctrl/transmission': specifier: ^7.4.0 version: 7.4.0 @@ -1456,12 +1468,15 @@ importers: '@homarr/validation': specifier: workspace:^0.1.0 version: link:../validation + '@immich/sdk': + specifier: ^2.5.6 + version: 2.5.6 '@jellyfin/sdk': specifier: ^0.13.0 version: 0.13.0(axios@1.12.2) '@octokit/auth-app': - specifier: ^8.1.2 - version: 8.1.2 + specifier: ^8.2.0 + version: 8.2.0 ical.js: specifier: ^2.2.1 version: 2.2.1 @@ -1478,8 +1493,8 @@ importers: specifier: 1.1.1 version: 1.1.1 tsdav: - specifier: ^2.1.6 - version: 2.1.6 + specifier: ^2.1.8 + version: 2.1.8 undici: specifier: 7.18.2 version: 7.18.2 @@ -1506,8 +1521,8 @@ importers: specifier: ^0.4.14 version: 0.4.14 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1521,14 +1536,14 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^8.3.13 - version: 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mantine/hooks': - specifier: ^8.3.13 - version: 8.3.13(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(react@19.2.4) react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1540,8 +1555,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1582,23 +1597,23 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^8.3.13 - version: 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tabler/icons-react': - specifier: ^3.36.1 - version: 3.36.1(react@19.2.3) + specifier: ^3.40.0 + version: 3.40.0(react@19.2.4) dayjs: specifier: ^1.11.19 version: 1.11.19 next: - specifier: 16.1.4 - version: 16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) + specifier: 16.1.6 + version: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) zod: specifier: ^4.2.1 version: 4.2.1 @@ -1613,8 +1628,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1625,11 +1640,11 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/notifications': - specifier: ^8.3.13 - version: 8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tabler/icons-react': - specifier: ^3.36.1 - version: 3.36.1(react@19.2.3) + specifier: ^3.40.0 + version: 3.40.0(react@19.2.4) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1641,8 +1656,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1683,23 +1698,23 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^8.3.13 - version: 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mantine/hooks': - specifier: ^8.3.13 - version: 8.3.13(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(react@19.2.4) adm-zip: specifier: 0.5.16 version: 0.5.16 next: - specifier: 16.1.4 - version: 16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) + specifier: 16.1.6 + version: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) superjson: specifier: 2.2.6 version: 2.2.6 @@ -1723,8 +1738,8 @@ importers: specifier: 0.5.7 version: 0.5.7 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1748,8 +1763,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1773,8 +1788,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1794,8 +1809,8 @@ importers: specifier: workspace:^ version: link:../definitions ioredis: - specifier: 5.9.2 - version: 5.9.2 + specifier: 5.10.0 + version: 5.10.0 superjson: specifier: 2.2.6 version: 2.2.6 @@ -1810,8 +1825,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1868,8 +1883,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1893,8 +1908,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1908,17 +1923,17 @@ importers: specifier: workspace:^0.1.0 version: link:../server-settings '@mantine/dates': - specifier: ^8.3.13 - version: 8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) next: - specifier: 16.1.4 - version: 16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) + specifier: 16.1.6 + version: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1930,8 +1945,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1969,32 +1984,32 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^8.3.13 - version: 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mantine/hooks': - specifier: ^8.3.13 - version: 8.3.13(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(react@19.2.4) '@mantine/spotlight': - specifier: ^8.3.13 - version: 8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tabler/icons-react': - specifier: ^3.36.1 - version: 3.36.1(react@19.2.3) + specifier: ^3.40.0 + version: 3.40.0(react@19.2.4) jotai: - specifier: ^2.16.2 - version: 2.16.2(@babel/core@7.28.5)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3) + specifier: ^2.18.1 + version: 2.18.1(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@19.2.14)(react@19.2.4) next: - specifier: 16.1.4 - version: 16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) + specifier: 16.1.6 + version: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) use-deep-compare-effect: specifier: ^1.8.1 - version: 1.8.1(react@19.2.3) + version: 1.8.1(react@19.2.4) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -2006,8 +2021,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2028,19 +2043,19 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(@tabler/icons-react@3.36.1(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.0.0-beta.9(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/dates@8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(@tabler/icons-react@3.40.0(react@19.2.4))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) next: - specifier: 16.1.4 - version: 16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) + specifier: 16.1.6 + version: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) next-intl: - specifier: 4.7.0 - version: 4.7.0(next@16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2))(react@19.2.3)(typescript@5.9.3) + specifier: 4.8.3 + version: 4.8.3(next@16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(react@19.2.4)(typescript@5.9.3) react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -2052,8 +2067,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2076,32 +2091,32 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^8.3.13 - version: 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mantine/dates': - specifier: ^8.3.13 - version: 8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mantine/hooks': - specifier: ^8.3.13 - version: 8.3.13(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(react@19.2.4) '@tabler/icons-react': - specifier: ^3.36.1 - version: 3.36.1(react@19.2.3) + specifier: ^3.40.0 + version: 3.40.0(react@19.2.4) crypto-js: specifier: ^4.2.0 version: 4.2.0 mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(@tabler/icons-react@3.36.1(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.0.0-beta.9(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/dates@8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(@tabler/icons-react@3.40.0(react@19.2.4))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) next: - specifier: 16.1.4 - version: 16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) + specifier: 16.1.6 + version: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) svgson: specifier: ^5.3.1 version: 5.3.1 @@ -2122,8 +2137,8 @@ importers: specifier: ^1.0.5 version: 1.0.5 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2153,8 +2168,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2163,10 +2178,10 @@ importers: dependencies: '@dnd-kit/core': specifier: ^6.3.1 - version: 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@dnd-kit/sortable': specifier: ^10.0.0 - version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) '@homarr/api': specifier: workspace:^0.1.0 version: link:../api @@ -2231,65 +2246,65 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/charts': - specifier: ^8.3.13 - version: 8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(recharts@2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3)) + specifier: ^8.3.16 + version: 8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(recharts@2.15.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) '@mantine/core': - specifier: ^8.3.13 - version: 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mantine/hooks': - specifier: ^8.3.13 - version: 8.3.13(react@19.2.3) + specifier: ^8.3.16 + version: 8.3.16(react@19.2.4) '@tabler/icons-react': - specifier: ^3.36.1 - version: 3.36.1(react@19.2.3) + specifier: ^3.40.0 + version: 3.40.0(react@19.2.4) '@tiptap/extension-color': - specifier: 3.16.0 - version: 3.16.0(@tiptap/extension-text-style@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))) + specifier: 3.20.1 + version: 3.20.1(@tiptap/extension-text-style@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))) '@tiptap/extension-highlight': - specifier: 3.16.0 - version: 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) + specifier: 3.20.1 + version: 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) '@tiptap/extension-image': - specifier: 3.16.0 - version: 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) + specifier: 3.20.1 + version: 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) '@tiptap/extension-link': - specifier: ^3.16.0 - version: 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + specifier: ^3.20.1 + version: 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) '@tiptap/extension-placeholder': - specifier: ^3.16.0 - version: 3.16.0(@tiptap/extensions@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)) + specifier: ^3.20.1 + version: 3.20.1(@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)) '@tiptap/extension-table': - specifier: 3.16.0 - version: 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + specifier: 3.20.1 + version: 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) '@tiptap/extension-table-cell': - specifier: 3.16.0 - version: 3.16.0(@tiptap/extension-table@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)) + specifier: 3.20.1 + version: 3.20.1(@tiptap/extension-table@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)) '@tiptap/extension-table-header': - specifier: 3.16.0 - version: 3.16.0(@tiptap/extension-table@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)) + specifier: 3.20.1 + version: 3.20.1(@tiptap/extension-table@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)) '@tiptap/extension-table-row': - specifier: 3.16.0 - version: 3.16.0(@tiptap/extension-table@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)) + specifier: 3.20.1 + version: 3.20.1(@tiptap/extension-table@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)) '@tiptap/extension-task-item': - specifier: 3.16.0 - version: 3.16.0(@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)) + specifier: 3.20.1 + version: 3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)) '@tiptap/extension-task-list': - specifier: 3.16.0 - version: 3.16.0(@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)) + specifier: 3.20.1 + version: 3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)) '@tiptap/extension-text-align': - specifier: 3.16.0 - version: 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) + specifier: 3.20.1 + version: 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) '@tiptap/extension-text-style': - specifier: 3.16.0 - version: 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) + specifier: 3.20.1 + version: 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) '@tiptap/extension-underline': - specifier: 3.16.0 - version: 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) + specifier: 3.20.1 + version: 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) '@tiptap/react': - specifier: ^3.16.0 - version: 3.16.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^3.20.1 + version: 3.20.1(@floating-ui/dom@1.7.4)(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tiptap/starter-kit': - specifier: ^3.16.0 - version: 3.16.0 + specifier: ^3.20.1 + version: 3.20.1 clsx: specifier: ^2.1.1 version: 2.1.1 @@ -2298,28 +2313,28 @@ importers: version: 1.11.19 mantine-form-zod-resolver: specifier: ^1.3.0 - version: 1.3.0(@mantine/form@8.3.13(react@19.2.3))(zod@4.2.1) + version: 1.3.0(@mantine/form@8.3.16(react@19.2.4))(zod@4.2.1) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(@tabler/icons-react@3.36.1(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.0.0-beta.9(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/dates@8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(@tabler/icons-react@3.40.0(react@19.2.4))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) next: - specifier: 16.1.4 - version: 16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) + specifier: 16.1.6 + version: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) react: - specifier: 19.2.3 - version: 19.2.3 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) react-markdown: specifier: ^10.1.0 - version: 10.1.0(@types/react@19.2.8)(react@19.2.3) + version: 10.1.0(@types/react@19.2.14)(react@19.2.4) recharts: specifier: ^2.15.4 - version: 2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.15.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) video.js: - specifier: ^8.23.4 - version: 8.23.4 + specifier: ^8.23.7 + version: 8.23.7 zod: specifier: ^4.2.1 version: 4.2.1 @@ -2337,8 +2352,8 @@ importers: specifier: ^7.3.58 version: 7.3.58 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2346,29 +2361,29 @@ importers: tooling/eslint: dependencies: '@next/eslint-plugin-next': - specifier: 16.1.4 - version: 16.1.4 + specifier: 16.1.6 + version: 16.1.6 eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.39.2) + version: 10.1.8(eslint@9.39.4) eslint-config-turbo: - specifier: ^2.7.5 - version: 2.7.5(eslint@9.39.2)(turbo@2.7.5) + specifier: ^2.8.15 + version: 2.8.16(eslint@9.39.4)(turbo@2.8.16) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) + version: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@9.39.2) + version: 6.10.2(eslint@9.39.4) eslint-plugin-react: specifier: ^7.37.5 - version: 7.37.5(eslint@9.39.2) + version: 7.37.5(eslint@9.39.4) eslint-plugin-react-hooks: specifier: ^6.1.1 - version: 6.1.1(eslint@9.39.2) + version: 6.1.1(eslint@9.39.4) typescript-eslint: - specifier: ^8.53.1 - version: 8.53.1(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.57.0 + version: 8.57.0(eslint@9.39.4)(typescript@5.9.3) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -2377,8 +2392,8 @@ importers: specifier: workspace:^0.1.0 version: link:../typescript eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^9.39.4 + version: 9.39.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2388,18 +2403,18 @@ importers: tooling/prettier: dependencies: '@ianvs/prettier-plugin-sort-imports': - specifier: ^4.7.0 - version: 4.7.0(prettier@3.8.0) + specifier: ^4.7.1 + version: 4.7.1(prettier@3.8.1) prettier: - specifier: ^3.8.0 - version: 3.8.0 + specifier: ^3.8.1 + version: 3.8.1 devDependencies: '@homarr/tsconfig': specifier: workspace:^0.1.0 version: link:../typescript prettier-plugin-packagejson: - specifier: ^2.5.22 - version: 2.5.22(prettier@3.8.0) + specifier: ^3.0.2 + version: 3.0.2(prettier@3.8.1) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2408,20 +2423,20 @@ importers: packages: - '@acemir/cssom@0.9.28': - resolution: {integrity: sha512-LuS6IVEivI75vKN8S04qRD+YySP0RmU/cV8UNukhQZvprxF+76Z43TNo/a08eCodaGhT1Us8etqS1ZRY9/Or0A==} + '@acemir/cssom@0.9.31': + resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} - '@actions/core@2.0.1': - resolution: {integrity: sha512-oBfqT3GwkvLlo1fjvhQLQxuwZCGTarTE5OuZ2Wg10hvhBj7LRIlF611WT4aZS6fDhO5ZKlY7lCAZTlpmyaHaeg==} + '@actions/core@3.0.0': + resolution: {integrity: sha512-zYt6cz+ivnTmiT/ksRVriMBOiuoUpDCJJlZ5KPl2/FRdvwU3f7MPh9qftvbkXJThragzUZieit2nyHUyw53Seg==} - '@actions/exec@2.0.0': - resolution: {integrity: sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==} + '@actions/exec@3.0.0': + resolution: {integrity: sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==} - '@actions/http-client@3.0.0': - resolution: {integrity: sha512-1s3tXAfVMSz9a4ZEBkXXRQD4QhY3+GAsWSbaYpeknPOKEeyRiU3lH+bHiLMZdo2x/fIeQ/hscL1wCkDLVM2DZQ==} + '@actions/http-client@4.0.0': + resolution: {integrity: sha512-QuwPsgVMsD6qaPD57GLZi9sqzAZCtiJT8kVBCDpLtxhL5MydQ4gS+DrejtZZPdIYyB1e95uCK9Luyds7ybHI3g==} - '@actions/io@2.0.0': - resolution: {integrity: sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==} + '@actions/io@3.0.2': + resolution: {integrity: sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==} '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} @@ -2437,11 +2452,11 @@ packages: '@ark/util@0.46.0': resolution: {integrity: sha512-JPy/NGWn/lvf1WmGCPw2VGpBg5utZraE84I7wli18EDF3p3zc/e9WolT35tINeZO3l7C77SjqRJeAUoT0CvMRg==} - '@asamuzakjp/css-color@4.1.0': - resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==} + '@asamuzakjp/css-color@4.1.2': + resolution: {integrity: sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==} - '@asamuzakjp/dom-selector@6.7.6': - resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==} + '@asamuzakjp/dom-selector@6.8.1': + resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -2489,8 +2504,8 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/code-frame@7.28.6': - resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} '@babel/compat-data@7.26.2': @@ -2501,6 +2516,10 @@ packages: resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + 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'} @@ -2509,20 +2528,12 @@ packages: resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.5': - resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} 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/generator@7.28.3': - resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + '@babel/generator@7.29.0': + resolution: {integrity: sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.25.9': @@ -2533,6 +2544,10 @@ packages: resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} @@ -2545,6 +2560,10 @@ packages: resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.26.0': resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} @@ -2557,6 +2576,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-plugin-utils@7.27.1': resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} @@ -2597,28 +2622,13 @@ packages: resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.2': - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.28.3': - resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.28.4': resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.28.6': - resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} hasBin: true @@ -2638,10 +2648,6 @@ packages: resolution: {integrity: sha512-909rVuj3phpjW6y0MCXAZ5iNeORePa6ldJvp2baWGcTjwqbBDDz6xoS5JHJ7lS88NlwLYj07ImL/8IUMtDZzTA==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.6': resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} @@ -2658,40 +2664,20 @@ packages: resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.9': - resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.28.3': - resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.28.4': - resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} '@babel/types@7.26.0': resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.2': - resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} - engines: {node: '>=6.9.0'} - '@babel/types@7.28.4': resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.6': - resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} '@balena/dockerignore@1.0.2': @@ -2701,6 +2687,10 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true + '@clack/core@0.3.5': resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==} @@ -2720,58 +2710,51 @@ packages: resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} + '@csstools/color-helpers@6.0.1': + resolution: {integrity: sha512-NmXRccUJMk2AWA5A7e5a//3bCIMyOu2hAtdRYrhPPHjDxINuCwX1w6rnIZ4xjLcp0ayv6h8Pc3X0eJUGiAAXHQ==} + engines: {node: '>=20.19.0'} - '@csstools/color-helpers@5.1.0': - resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} - engines: {node: '>=18'} - - '@csstools/css-calc@2.1.4': - resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} - engines: {node: '>=18'} + '@csstools/css-calc@3.0.0': + resolution: {integrity: sha512-q4d82GTl8BIlh/dTnVsWmxnbWJeb3kiU8eUH71UxlxnS+WIaALmtzTL8gR15PkYOexMQYVk0CO4qIG93C1IvPA==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-color-parser@3.1.0': - resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} - engines: {node: '>=18'} + '@csstools/css-color-parser@4.0.1': + resolution: {integrity: sha512-vYwO15eRBEkeF6xjAno/KQ61HacNhfQuuU/eGwH67DplL0zD5ZixUa563phQvUelA07yDczIXdtmYojCphKJcw==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-parser-algorithms@3.0.5': - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} - engines: {node: '>=18'} + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.0.14': - resolution: {integrity: sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 + '@csstools/css-syntax-patches-for-csstree@1.0.26': + resolution: {integrity: sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==} - '@csstools/css-tokenizer@3.0.4': - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} - engines: {node: '>=18'} + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} - '@ctrl/deluge@7.5.0': - resolution: {integrity: sha512-pdJEZBhyoJsPVLuGv4LPHLOdADxuVrEeI02p2tak2CZQF/tH/B0B+PMTIPBRX4knvJM52rZykHhHxHbHFlVXOQ==} + '@ctrl/deluge@7.5.2': + resolution: {integrity: sha512-ceejra4uSIwtui4fNvqxRhX8965yNlIc7kSUWSuSjV3qWA3wIf5tu/cqAXr5dHATxBOdzy/5gte2PHlk7XoVQA==} engines: {node: '>=18'} '@ctrl/magnet-link@4.0.2': resolution: {integrity: sha512-wENP7LH4BmCjz+gXVq7Nzz20zMjY/huuG7aDk/yu/LhFdC84e/l8222rCIAo0lwhU451lFcJKLcOmtG6TNrBAQ==} engines: {node: '>=18'} - '@ctrl/magnet-link@4.2.0': - resolution: {integrity: sha512-4pa9hnMWmgoGl+5HJ/B9d5ugIr105AGD3rsTSlE8pTR7d2+xrEhLPCKRp/Y6k/k9Fo6DaJ1FRgwRxdi60vmxtg==} - engines: {node: '>=18'} + '@ctrl/magnet-link@4.3.0': + resolution: {integrity: sha512-fEfw3AeQ8XhVsNzogZrnyTNDD/Tpbfl3ybHsspBMvj0UKctabApv1JV3JJUQG/hoX6hiO+DtQS+acN7dMPX01g==} + engines: {node: '>20'} - '@ctrl/qbittorrent@9.11.0': - resolution: {integrity: sha512-mltiPLncdpAHrRbd2H8uy9nTgFhk0urcmkHxCDHcJehRvgd6ta2qnhQ2aO0KI8lgNDvHfmiNh4FAx0yoPBz8Xg==} + '@ctrl/qbittorrent@9.11.2': + resolution: {integrity: sha512-ZIayGA72R4rzXaCcEYrxBwOMYZ1iT0EABJPwjTkwaO3VYRBBltwHSAxNfMWaz4GVmqLA12/WCfx+IPXBN9Gtxg==} engines: {node: '>=18'} '@ctrl/shared-torrent@6.3.0': @@ -2780,15 +2763,15 @@ packages: peerDependencies: ofetch: ^1.4.1 - '@ctrl/shared-torrent@6.5.0': - resolution: {integrity: sha512-Wu5XEPLomfmLWUW+UY63yB7g3orZDMgAZVEOYonVJOwajVlMcfT0AkEVtqeOjAhkCC9Q/VKXlHEP9G/xdyW4qA==} - engines: {node: '>=18'} + '@ctrl/shared-torrent@6.5.1': + resolution: {integrity: sha512-ZdItYUwzHOu+8s416oRIEwvqDUC3aON4Lv/Ev4H5KxEkbjfkQiaONS/7+jos2+yJWleiXlRdBsoIpZR5Cd1UHQ==} + engines: {node: '>20'} peerDependencies: - ofetch: ^1.4.1 + ofetch: ^1.5.0 - '@ctrl/torrent-file@4.4.0': - resolution: {integrity: sha512-e/AuvVqH6xJxeowZeGD83YtViDDDEtK6LcIrtU7PsxJlDNMvyqPN2wpZsIXYRxPY+NqkiWcpkrpAnHLTPD6dpw==} - engines: {node: '>=18'} + '@ctrl/torrent-file@4.5.0': + resolution: {integrity: sha512-ECzdbioAXLx7E3w/G9wMBz64K7MD5gRH6A2ypDcax+3cDmELdlKQfJIzX7q+if7E2TO+nbcabx76g0su3t01mQ==} + engines: {node: '>20'} '@ctrl/transmission@7.4.0': resolution: {integrity: sha512-Y6+dKaktS33oE/1R2hx+aGU8G35oO+dhOThtUlOm8784eOg/rkXyzwNecPIzp77XuIRXam8sLxO/g+yS7yHSpQ==} @@ -2851,8 +2834,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.2': - resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -2863,8 +2846,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.2': - resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -2875,8 +2858,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.2': - resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -2887,8 +2870,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.2': - resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -2899,8 +2882,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.2': - resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -2911,8 +2894,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.2': - resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -2923,8 +2906,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.2': - resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -2935,8 +2918,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.2': - resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -2947,8 +2930,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.2': - resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -2959,8 +2942,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.2': - resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -2971,8 +2954,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.2': - resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -2983,8 +2966,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.2': - resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -2995,8 +2978,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.2': - resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + '@esbuild/linux-mips64el@0.27.3': + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -3007,8 +2990,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.2': - resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + '@esbuild/linux-ppc64@0.27.3': + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -3019,8 +3002,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.2': - resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -3031,8 +3014,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.2': - resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -3043,8 +3026,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.2': - resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -3055,8 +3038,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.2': - resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -3067,8 +3050,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.2': - resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -3079,8 +3062,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.2': - resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -3091,8 +3074,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.2': - resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -3103,8 +3086,8 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.2': - resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + '@esbuild/openharmony-arm64@0.27.3': + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -3115,8 +3098,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.2': - resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + '@esbuild/sunos-x64@0.27.3': + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -3127,8 +3110,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.2': - resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + '@esbuild/win32-arm64@0.27.3': + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -3139,8 +3122,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.2': - resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + '@esbuild/win32-ia32@0.27.3': + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -3151,34 +3134,24 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.2': - resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + '@esbuild/win32-x64@0.27.3': + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.12.2': resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.1': - resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/config-helpers@0.4.2': @@ -3189,12 +3162,12 @@ packages: resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.39.2': - resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} + '@eslint/js@9.39.4': + resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.7': @@ -3205,13 +3178,13 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@exodus/bytes@1.7.0': - resolution: {integrity: sha512-5i+BtvujK/vM07YCGDyz4C4AyDzLmhxHMtM5HpUyPRtJPBdFPsj290ffXW+UXY21/G7GtXeHD2nRmq0T1ShyQQ==} + '@exodus/bytes@1.11.0': + resolution: {integrity: sha512-wO3vd8nsEHdumsXrjGO/v4p6irbg7hy9kvIeR6i2AwylZSk4HJdWgL0FNaVquW1+AweJcdvU1IEpuIWk/WaPnA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@exodus/crypto': ^1.0.0-rc.4 + '@noble/hashes': ^1.8.0 || ^2.0.0 peerDependenciesMeta: - '@exodus/crypto': + '@noble/hashes': optional: true '@extractus/feed-extractor@7.1.7': @@ -3221,24 +3194,20 @@ packages: '@fastify/ajv-compiler@4.0.5': resolution: {integrity: sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==} - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - '@fastify/error@4.2.0': resolution: {integrity: sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==} '@fastify/fast-json-stringify-compiler@5.0.3': resolution: {integrity: sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==} - '@fastify/forwarded@3.0.0': - resolution: {integrity: sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA==} + '@fastify/forwarded@3.0.1': + resolution: {integrity: sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==} '@fastify/merge-json-schemas@0.2.1': resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==} - '@fastify/proxy-addr@5.0.0': - resolution: {integrity: sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==} + '@fastify/proxy-addr@5.1.0': + resolution: {integrity: sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==} '@floating-ui/core@1.7.3': resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} @@ -3261,20 +3230,23 @@ packages: '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} - '@formatjs/ecma402-abstract@2.2.0': - resolution: {integrity: sha512-IpM+ev1E4QLtstniOE29W1rqH9eTdx5hQdNL8pzrflMj/gogfaoONZqL83LUeQScHAvyMbpqP5C9MzNf+fFwhQ==} + '@formatjs/ecma402-abstract@3.1.0': + resolution: {integrity: sha512-CjP1sUzM7XiQW6YluDreN+dMvcKZysO/J4ikvuDjDyd6nSOoSqAK9gvD1s75ZFaJVXtYOsz+y3CUXPZ1sKxcxw==} - '@formatjs/fast-memoize@2.2.1': - resolution: {integrity: sha512-XS2RcOSyWxmUB7BUjj3mlPH0exsUzlf6QfhhijgI941WaJhVxXQ6mEWkdUFIdnKi3TuTYxRdelsgv3mjieIGIA==} + '@formatjs/fast-memoize@3.1.0': + resolution: {integrity: sha512-b5mvSWCI+XVKiz5WhnBCY3RJ4ZwfjAidU0yVlKa3d3MSgKmH1hC3tBGEAtYyN5mqL7N0G5x0BOUYyO8CEupWgg==} - '@formatjs/icu-messageformat-parser@2.8.0': - resolution: {integrity: sha512-r2un3fmF9oJv3mOkH+wwQZ037VpqmdfahbcCZ9Lh+p6Sx+sNsonI7Zcr6jNMm1s+Si7ejQORS4Ezlh05mMPAXA==} + '@formatjs/icu-messageformat-parser@3.5.0': + resolution: {integrity: sha512-Q01XuvtbDVCJQsG/E2MSfMZ+UdUoZV8v4Aex8tTH44SqKJZCeu5LjuclaKFUS0o1YoXndfEinJen5k1T1GR1vg==} - '@formatjs/icu-skeleton-parser@1.8.4': - resolution: {integrity: sha512-LMQ1+Wk1QSzU4zpd5aSu7+w5oeYhupRwZnMQckLPRYhSjf2/8JWQ882BauY9NyHxs5igpuQIXZDgfkaH3PoATg==} + '@formatjs/icu-skeleton-parser@2.1.0': + resolution: {integrity: sha512-wNer4imHDFBVAJnMb2OGoSyM4wL/uuLnuo5mrenliqkDaNjRbG4jzlJcwTTDEBhai8iCjnzUsE7xwNJC29SfWw==} - '@formatjs/intl-localematcher@0.5.5': - resolution: {integrity: sha512-t5tOGMgZ/i5+ALl2/offNqAQq/lfUnKLEw0mXQI4N4bqpedhrSE+fyKLpwnd22sK0dif6AV+ufQcTsKShB9J1g==} + '@formatjs/intl-localematcher@0.8.0': + resolution: {integrity: sha512-zgMYWdUlmEZpX2Io+v3LHrfq9xZ6khpQVf9UAw2xYWhGerGgI9XgH1HvL/A34jWiruUJpYlP5pk4g8nIcaDrXQ==} + + '@formatjs/intl-localematcher@0.8.1': + resolution: {integrity: sha512-xwEuwQFdtSq1UKtQnyTZWC+eHdv7Uygoa+H2k/9uzBVQjDyp9r20LNDNKedWXll7FssT3GRHvqsdJGYSUWqYFA==} '@gitbeaker/core@43.8.0': resolution: {integrity: sha512-H+LfKuf4dExBinb79c+CXViRBvTVQNf5BYLNSizm2SiqdED5JruhKX88payefleY0szp7G/mySlFSXPyGRH1dQ==} @@ -3311,7 +3283,7 @@ packages: resolution: {integrity: sha512-kz323qIQkNQElEGroo/E9MKPDuIR5pkuk/XEWd50K+cSEKdmdiYx0PKWUdaNY2ecJYngtF+njDMsMKplL6zfEg==} engines: {node: '>=18.14.1'} peerDependencies: - hono: '>=4.11.4' + hono: '>=4.12.7' '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -3333,10 +3305,10 @@ packages: resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} - '@ianvs/prettier-plugin-sort-imports@4.7.0': - resolution: {integrity: sha512-soa2bPUJAFruLL4z/CnMfSEKGznm5ebz29fIa9PxYtu8HHyLKNE1NXAs6dylfw1jn/ilEIfO2oLLN6uAafb7DA==} + '@ianvs/prettier-plugin-sort-imports@4.7.1': + resolution: {integrity: sha512-jmTNYGlg95tlsoG3JLCcuC4BrFELJtLirLAkQW/71lXSyOhVt/Xj7xWbbGcuVbNq1gwWgSyMrPjJc9Z30hynVw==} peerDependencies: - '@prettier/plugin-oxc': ^0.0.4 + '@prettier/plugin-oxc': ^0.0.4 || ^0.1.0 '@vue/compiler-sfc': 2.7.x || 3.x content-tag: ^4.0.0 prettier: 2 || 3 || ^4.0.0-0 @@ -3491,40 +3463,162 @@ packages: cpu: [x64] os: [win32] - '@ioredis/commands@1.5.0': - resolution: {integrity: sha512-eUgLqrMf8nJkZxT24JvVRrQya1vZkQh8BBeYNwGDqa5I0VUi8ACx7uFvAaLxintokpTenkK6DASvo/bvNbBGow==} + '@immich/sdk@2.5.6': + resolution: {integrity: sha512-u6o0rNBsTbAkl/6vz3Z63A/yNkLYeuKiHKoJgLuvRqTpPahgxAFcfDeN8rLd0Ya1kM5I2c610/VDcvItzzVcWg==} - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + engines: {node: '>=18'} - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} + '@inquirer/checkbox@4.3.2': + resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/editor@4.2.23': + resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/expand@4.0.23': + resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} + + '@inquirer/input@4.3.1': + resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/number@3.0.23': + resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/password@4.0.23': + resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@7.10.1': + resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/rawlist@4.1.11': + resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@3.2.2': + resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@4.4.2': + resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@ioredis/commands@1.5.1': + resolution: {integrity: sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==} '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/cliui@9.0.0': + resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} + engines: {node: '>=18'} + '@jellyfin/sdk@0.13.0': resolution: {integrity: sha512-oiBAOXH6s+dKdReSsYgNktBDzbxtg4JVWhEzIxZSxKcWMdSKmBtK41MhXRO7IWAC40DguKUm3nU/Z493qPAlWA==} peerDependencies: axios: ^1.12.0 - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - '@jridgewell/remapping@2.3.5': resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} @@ -3532,25 +3626,15 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.11': resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} - '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} @@ -3569,6 +3653,9 @@ packages: '@kubernetes/client-node@1.4.0': resolution: {integrity: sha512-Zge3YvF7DJi264dU1b3wb/GmzR99JhUpqTvp+VGHfwZT+g7EOOYNScDJNZwXy9cszyIGPIs0VHr+kk8e95qqrA==} + '@kwsites/file-exists@1.1.1': + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + '@libsql/client-wasm@0.14.0': resolution: {integrity: sha512-gB/jtz0xuwrqAHApBv9e9JSew2030Fhj2edyZ83InZ4yPj/Q2LTUlEhaspEYT0T0xsAGqPy38uGrmq/OGS+DdQ==} bundledDependencies: @@ -3577,88 +3664,88 @@ packages: '@libsql/core@0.14.0': resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} - '@mantine/charts@8.3.13': - resolution: {integrity: sha512-f96IgQQlUril/U6ZbWeebmU90GJglrZJzrVHWyxTpr9kYY72BU6mkqpvzB+/vLrNz+m6SBbV/OO9WIgZNfKA9Q==} + '@mantine/charts@8.3.16': + resolution: {integrity: sha512-co/bnQ8/JwRypDnIYlPs9dybme6TGpw3Rf2T93ssegZcVrk37FFUExcQmIyVE9ga/WIST5M8OZWPyqaJtGozvQ==} peerDependencies: - '@mantine/core': 8.3.13 - '@mantine/hooks': 8.3.13 + '@mantine/core': 8.3.16 + '@mantine/hooks': 8.3.16 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x recharts: '>=2.13.3' - '@mantine/colors-generator@8.3.13': - resolution: {integrity: sha512-BG2HIws3jjknHddFaDWoOBvl+JK9vUi6RfJmUPofdDaCbGl5MTa8iViU2i2+zC+5feWoI6uf63hcravC5QzZlw==} + '@mantine/colors-generator@8.3.16': + resolution: {integrity: sha512-nh5PA7H2IC0Mf5bVJ3FNx0HaNadj2NUx5NaMnXnVpbSKJ84VlszrqmN6+menjWmfWwSKsjjTlf/7W54wZopxgQ==} peerDependencies: chroma-js: '>=2.4.2' - '@mantine/core@8.3.13': - resolution: {integrity: sha512-ZgW4vqN4meaPyIMxzAufBvsgmJRfYZdTpsrAOcS8pWy7m9e8i685E7XsAxnwJCOIHudpvpvt+7Bx7VaIjEsYEw==} + '@mantine/core@8.3.16': + resolution: {integrity: sha512-YgmoYrb0I9UUDYfs9OVLvBUTgkA5vn5KZTfxlOaOSFxzhyYjrtwMQK+P7fvEIkenNQbbikhelj/IRcC2yNQyFQ==} peerDependencies: - '@mantine/hooks': 8.3.13 + '@mantine/hooks': 8.3.16 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dates@8.3.13': - resolution: {integrity: sha512-Fk3k9oUENQQwU2cb1Ir2Q3J17emkYvW8xWaAF3nZC0PEF4KddY/p8bhF4NCxhsRjkvtEJiaAWlEq+6LF6hNxDA==} + '@mantine/dates@8.3.16': + resolution: {integrity: sha512-oZhOS4j5cMsyY3rZtkfCgKxu67Aptkav6Z7Tqa1hHpAdJ2XNse/Bl7hgqsdaTaUY8L5zpeTWaptBe1053Zgj8A==} peerDependencies: - '@mantine/core': 8.3.13 - '@mantine/hooks': 8.3.13 + '@mantine/core': 8.3.16 + '@mantine/hooks': 8.3.16 dayjs: '>=1.0.0' react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dropzone@8.3.13': - resolution: {integrity: sha512-C385tppF6zdaheYrXsClHXm+5PcLcjcAPbny6KiZPZySpm5B2IylrD8f1Ew9ivLk+M/2WZ05MTil+hGdoN485A==} + '@mantine/dropzone@8.3.16': + resolution: {integrity: sha512-HFxt+DLlJKFpPPitfayiz+ZhtaXbiGgdmxBLmVe/ybEOXRS5St5xTlHQE6Iw67CGd4LuAv1CvDqyiQJw/fC9VQ==} peerDependencies: - '@mantine/core': 8.3.13 - '@mantine/hooks': 8.3.13 + '@mantine/core': 8.3.16 + '@mantine/hooks': 8.3.16 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/form@8.3.13': - resolution: {integrity: sha512-P7Avh24QiL8V517Jxj8JuUbCuSOA1BjwTB8/htH92cRmLoJtWn4ycZYE7ks8v3Hrg8fpd0Xd2O5o9R4+bXwD/A==} + '@mantine/form@8.3.16': + resolution: {integrity: sha512-yx7HXXdbS/Qmps7NmVGHtmnqembCcDg7W1ijxG6w4kQLntD//Co20B3DSrMXmQ3o14p779ayzTmHkMd+dP4QbA==} peerDependencies: react: ^18.x || ^19.x - '@mantine/hooks@8.3.13': - resolution: {integrity: sha512-7YMbMW/tR9E8m/9DbBW01+3RNApm2mE/JbRKXf9s9+KxgbjQvq0FYGWV8Y4+Sjz48AO4vtWk2qBriUTgBMKAyg==} + '@mantine/hooks@8.3.16': + resolution: {integrity: sha512-DthR8/KDCLIip3KoXyn370HEiKxiOwH+ZeXs1UoSv/e58xR88OE85Slyb5b5pRsDa4ndYnES+j9wyRyrRXLWfg==} peerDependencies: react: ^18.x || ^19.x - '@mantine/modals@8.3.13': - resolution: {integrity: sha512-5jIRJKEupQerHfPGcPHgQk+J6dGBO7spC66VgEZqCNRpbWhowCxBNGEW5LN1hZE9sLYBJg+z2MazPws4A1GohQ==} + '@mantine/modals@8.3.16': + resolution: {integrity: sha512-5wRlcoIdMtxOyHPjwa/ibPndv+PwotdaX6T0W9gqEST3vOSndGD6+FwKJj8kNomyeeDISiMMWBV5QQGwC7QvTA==} peerDependencies: - '@mantine/core': 8.3.13 - '@mantine/hooks': 8.3.13 + '@mantine/core': 8.3.16 + '@mantine/hooks': 8.3.16 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/notifications@8.3.13': - resolution: {integrity: sha512-VgQwA3C4NbjguobobFnqqQyKBWXOfzM8BES1LIX9EyzMwsvGAlShJHrF9/yLS0Jqf5DiZi4L8hxL3wcmmbnljA==} + '@mantine/notifications@8.3.16': + resolution: {integrity: sha512-FqUgWYlBGwpwDAh4q5K6xO/cGQpU+jqdPpQOVy12881vZaJsCk4XWmDzL7BwY6cS15nxU26DBokixZSrUKPTng==} peerDependencies: - '@mantine/core': 8.3.13 - '@mantine/hooks': 8.3.13 + '@mantine/core': 8.3.16 + '@mantine/hooks': 8.3.16 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/spotlight@8.3.13': - resolution: {integrity: sha512-EaWzjA/HlNEu7YisLVTTztFmNtfDJ1Q3/ziZxfpv476vxxjwjLMnjvcRA9E6duACxTUNZZaMDDJNAtVRa48Qiw==} + '@mantine/spotlight@8.3.16': + resolution: {integrity: sha512-kS384mqm8VjLkB19FEjsEgo3IHQOCfhzcek9o6mSA5Xlc2K9Piy2pQ81eV+RoTQIIAlIqmQRAbo6x7IEFYLh9A==} peerDependencies: - '@mantine/core': 8.3.13 - '@mantine/hooks': 8.3.13 + '@mantine/core': 8.3.16 + '@mantine/hooks': 8.3.16 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/store@8.3.13': - resolution: {integrity: sha512-pnHHwiffGfaqLFxuyJIuU1P6+3zOd7bfBRVFFzIEDyUbPJs7dmVUFt31bry5FokrBfCjNWyg2XfyAQqIwd2LLA==} + '@mantine/store@8.3.16': + resolution: {integrity: sha512-BLbAw5z3aAxO82LwICw6FEHq53dgn7CqKYYiwr+Gm2nHYlyvwg15q9ByfM44LiKY7R0YpDPHfCJcJP37MHHDSQ==} peerDependencies: react: ^18.x || ^19.x - '@mantine/tiptap@8.3.13': - resolution: {integrity: sha512-gvu5dHrI784qg1Gr5ptflz1BTnKsgo1SnTXIPF6RC6RAZLeTf/9tKjTbtY1pd/0eAnkbj0uSS+Fdxgj4Kfps6g==} + '@mantine/tiptap@8.3.16': + resolution: {integrity: sha512-CA8LSAnBa+yXlhBrc6wL/Uh+VnO4Wg9taRorWG8MbzkksTy1iA8Yg+Tny33hgPJaqwHZivmjIGpDZmzKVtzTJg==} peerDependencies: - '@mantine/core': 8.3.13 - '@mantine/hooks': 8.3.13 + '@mantine/core': 8.3.16 + '@mantine/hooks': 8.3.16 '@tiptap/extension-link': '>=2.1.12' '@tiptap/react': '>=2.1.12' react: ^18.x || ^19.x @@ -3675,60 +3762,60 @@ packages: '@ndaidong/bellajs@12.0.1': resolution: {integrity: sha512-1iY42uiHz0cxNMbde7O3zVN+ZX1viOOUOBRt6ht6lkRZbSjwOnFV34Zv4URp3hGzEe6L9Byk7BOq/41H0PzAOQ==} - '@next/env@16.1.4': - resolution: {integrity: sha512-gkrXnZyxPUy0Gg6SrPQPccbNVLSP3vmW8LU5dwEttEEC1RwDivk8w4O+sZIjFvPrSICXyhQDCG+y3VmjlJf+9A==} + '@next/env@16.1.6': + resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==} - '@next/eslint-plugin-next@16.1.4': - resolution: {integrity: sha512-38WMjGP8y+1MN4bcZFs+GTcBe0iem5GGTzFE5GWW/dWdRKde7LOXH3lQT2QuoquVWyfl2S0fQRchGmeacGZ4Wg==} + '@next/eslint-plugin-next@16.1.6': + resolution: {integrity: sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ==} - '@next/swc-darwin-arm64@16.1.4': - resolution: {integrity: sha512-T8atLKuvk13XQUdVLCv1ZzMPgLPW0+DWWbHSQXs0/3TjPrKNxTmUIhOEaoEyl3Z82k8h/gEtqyuoZGv6+Ugawg==} + '@next/swc-darwin-arm64@16.1.6': + resolution: {integrity: sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.1.4': - resolution: {integrity: sha512-AKC/qVjUGUQDSPI6gESTx0xOnOPQ5gttogNS3o6bA83yiaSZJek0Am5yXy82F1KcZCx3DdOwdGPZpQCluonuxg==} + '@next/swc-darwin-x64@16.1.6': + resolution: {integrity: sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.1.4': - resolution: {integrity: sha512-POQ65+pnYOkZNdngWfMEt7r53bzWiKkVNbjpmCt1Zb3V6lxJNXSsjwRuTQ8P/kguxDC8LRkqaL3vvsFrce4dMQ==} + '@next/swc-linux-arm64-gnu@16.1.6': + resolution: {integrity: sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - '@next/swc-linux-arm64-musl@16.1.4': - resolution: {integrity: sha512-3Wm0zGYVCs6qDFAiSSDL+Z+r46EdtCv/2l+UlIdMbAq9hPJBvGu/rZOeuvCaIUjbArkmXac8HnTyQPJFzFWA0Q==} + '@next/swc-linux-arm64-musl@16.1.6': + resolution: {integrity: sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@16.1.4': - resolution: {integrity: sha512-lWAYAezFinaJiD5Gv8HDidtsZdT3CDaCeqoPoJjeB57OqzvMajpIhlZFce5sCAH6VuX4mdkxCRqecCJFwfm2nQ==} + '@next/swc-linux-x64-gnu@16.1.6': + resolution: {integrity: sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@16.1.4': - resolution: {integrity: sha512-fHaIpT7x4gA6VQbdEpYUXRGyge/YbRrkG6DXM60XiBqDM2g2NcrsQaIuj375egnGFkJow4RHacgBOEsHfGbiUw==} + '@next/swc-linux-x64-musl@16.1.6': + resolution: {integrity: sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@16.1.4': - resolution: {integrity: sha512-MCrXxrTSE7jPN1NyXJr39E+aNFBrQZtO154LoCz7n99FuKqJDekgxipoodLNWdQP7/DZ5tKMc/efybx1l159hw==} + '@next/swc-win32-arm64-msvc@16.1.6': + resolution: {integrity: sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.1.4': - resolution: {integrity: sha512-JSVlm9MDhmTXw/sO2PE/MRj+G6XOSMZB+BcZ0a7d6KwVFZVpkHcb2okyoYFBaco6LeiL53BBklRlOrDDbOeE5w==} + '@next/swc-win32-x64-msvc@16.1.6': + resolution: {integrity: sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3749,12 +3836,15 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oazapfts/runtime@1.2.0': + resolution: {integrity: sha512-fi7dp7dNayyh/vzqhf0ZdoPfC7tJvYfjaE8MBL1yR+iIsH7cFoqHt+DV70VU49OMCqLc7wQa+yVJcSmIRnV4wA==} + '@octokit/app@16.1.2': resolution: {integrity: sha512-8j7sEpUYVj18dxvh0KWj6W/l6uAiVRBl1JBDVRqH1VHKAO/G5eRVl4yEoYACjakWers1DjUkcCHyJNQK47JqyQ==} engines: {node: '>= 20'} - '@octokit/auth-app@8.1.2': - resolution: {integrity: sha512-db8VO0PqXxfzI6GdjtgEFHY9tzqUql5xMFXYA12juq8TeTgPAuiiP3zid4h50lwlIP457p5+56PnJOgd2GGBuw==} + '@octokit/auth-app@8.2.0': + resolution: {integrity: sha512-vVjdtQQwomrZ4V46B9LaCsxsySxGoHsyw6IYBov/TqJVROrlYdyNgw5q6tQbB7KZt53v1l1W53RiqTvpzL907g==} engines: {node: '>= 20'} '@octokit/auth-oauth-app@9.0.3': @@ -3869,8 +3959,8 @@ packages: '@panva/hkdf@1.2.1': resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==} - '@paralleldrive/cuid2@3.1.0': - resolution: {integrity: sha512-UhTJsF2XGlIFmGGTUKBfmNCX+B/UCv3w0OHhq2CJIsfH33GN1lkgjATozG+Pf7s3ACcUdM4qaWgzy4Rr8PlUdA==} + '@paralleldrive/cuid2@3.3.0': + resolution: {integrity: sha512-OqiFvSOF0dBSesELYY2CAMa4YINvlLpvKOz/rv6NeZEqiyttlHgv98Juwv4Ch+GrEV7IZ8jfI2VcEoYUjXXCjw==} hasBin: true '@parcel/watcher-android-arm64@2.4.1': @@ -4012,14 +4102,14 @@ packages: '@remirror/core-constants@3.0.0': resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} - '@rolldown/pluginutils@1.0.0-beta.53': - resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} + '@rolldown/pluginutils@1.0.0-rc.3': + resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.55.2' + rollup: '>=4.59.0' peerDependenciesMeta: rollup: optional: true @@ -4185,14 +4275,14 @@ packages: peerDependencies: semantic-release: '>=18.0.0' - '@semantic-release/github@12.0.2': - resolution: {integrity: sha512-qyqLS+aSGH1SfXIooBKjs7mvrv0deg8v+jemegfJg1kq6ji+GJV8CO08VJDEsvjp3O8XJmTTIAjjZbMzagzsdw==} + '@semantic-release/github@12.0.6': + resolution: {integrity: sha512-aYYFkwHW3c6YtHwQF0t0+lAjlU+87NFOZuH2CvWFD0Ylivc7MwhZMiHOJ0FMpIgPpCVib/VUAcOwvrW0KnxQtA==} engines: {node: ^22.14.0 || >= 24.10.0} peerDependencies: semantic-release: '>=24.1.0' - '@semantic-release/npm@13.1.3': - resolution: {integrity: sha512-q7zreY8n9V0FIP1Cbu63D+lXtRAVAIWb30MH5U3TdrfXt6r2MIrWCY0whAImN53qNvSGp0Zt07U95K+Qp9GpEg==} + '@semantic-release/npm@13.1.5': + resolution: {integrity: sha512-Hq5UxzoatN3LHiq2rTsWS54nCdqJHlsssGERCo8WlvdfFA9LoN0vO+OuKVSjtNapIc/S8C2LBj206wKLHg62mg==} engines: {node: ^22.14.0 || >= 24.10.0} peerDependencies: semantic-release: '>=20.1.0' @@ -4217,98 +4307,116 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@swagger-api/apidom-ast@1.0.0-rc.1': - resolution: {integrity: sha512-hsAySkWlIjgkQEDu1YEbvnxdEC3rD9bjQf7UYm0vzkvL5PNDd6lHLhxb825bQAfXQjw7WOxtV7eNrgqRQohMDg==} + '@swagger-api/apidom-ast@1.6.0': + resolution: {integrity: sha512-ez1KnBdAzoh5a6ijDXzu5nADkVZXlnL1RkLl8n2u2tjiNg9597xxmFdEHLVa31Vxr1yYj0WtYGLA5e2Kp0KNrQ==} - '@swagger-api/apidom-core@1.0.0-rc.1': - resolution: {integrity: sha512-vlguVts28oYBjCU5ZYfnX6yAFys/dZ1PUZqpYevMIGi8lEvxEfoxKEaUQa1Lr974cfKaVGBs8gNNhvDKXbH/jA==} + '@swagger-api/apidom-core@1.6.0': + resolution: {integrity: sha512-gA1MVoXe19sjFLKGkWxp5VvSw3Tk0CSChfItJjFeFHpLSGrfm+LlXp37TmNSns53Ky0F7x7TB/5kAX5I/TO4xw==} - '@swagger-api/apidom-error@1.0.0-rc.1': - resolution: {integrity: sha512-74tTb6QX8VeAvu/9XipXd4Ly3N3q+yJez+lGZD7Qa11E00AhNpzqH7swgZKutLEfq1tHxyGWE1A6xF8IiU4CJg==} + '@swagger-api/apidom-error@1.6.0': + resolution: {integrity: sha512-xp/cQ1xQ/4Vd/hhQfONK7ea9oVc3JUXAYyfRzvDR0lxISly/SyD2jMcqXzHtrylBAnv7V2HSsbC1BWo7ZJDLSQ==} - '@swagger-api/apidom-json-pointer@1.0.0-rc.1': - resolution: {integrity: sha512-fNDQozPRuD9ReYcCnIqr5jU0faFDUl3VrUtfeLl3YevxNB+onZkUidUvzUJgDjZK9Se567BgL0rK9hnEO/Q8qw==} + '@swagger-api/apidom-json-pointer@1.6.0': + resolution: {integrity: sha512-RO6P5Gt64AnthGXKeqIFjQCLVFbAJvLYAb67TkvRQ9US4lNixFtFsYJnhLCC4ymz4dTT1hacG0cmTRGcEHF9ig==} - '@swagger-api/apidom-ns-api-design-systems@1.0.0-rc.1': - resolution: {integrity: sha512-gV6vQHpdtVKtrV+uUCPwsSL5nX5zD/3vR7dSYE0Lii7f7RkpIXAgQViZSbv7+h8TB20DNobGt+JZH/gGaY+Oxg==} + '@swagger-api/apidom-ns-api-design-systems@1.6.0': + resolution: {integrity: sha512-EYJfQ4JYuUo2J4QiiLnA/8LmM1k7AQcf1XVE+NrIpZ1160GIzqE+W5uOXkhAOImkP2Cb7EZZdE2cFE/tMYxNvw==} - '@swagger-api/apidom-ns-arazzo-1@1.0.0-rc.1': - resolution: {integrity: sha512-Bx3PMLp+613EgSsLLg6Ucg3FtbO2i1bVcFZXgImun5pYNfmtQu21ELfWKj8ty/Ts2zR1VKOn5+i9DyMOH/zpsA==} + '@swagger-api/apidom-ns-arazzo-1@1.6.0': + resolution: {integrity: sha512-5rF8PyBiIHh6NfC5Y0WypW11X6hQIWr88EKNOQbBuT/nnzAsOznrUCfQ99FYGLucwdOHaMIBn/b/n4ejGBto/A==} - '@swagger-api/apidom-ns-asyncapi-2@1.0.0-rc.1': - resolution: {integrity: sha512-Vvo1f/H3mUuTny1d+XPudSattDWdHP1VhowxAOAFrnLVM4qvFbeBdzWjmTPEaeRsOz+Vq6rJOC4DPmHmtkR+oQ==} + '@swagger-api/apidom-ns-asyncapi-2@1.6.0': + resolution: {integrity: sha512-tOodfX+o7lonEAnSAxet7nCayW+EqtKPegT06WXt7Llq1LS9eYZ9YzXdFgIwCm8UzfEpZdVLqtxbdLX9vuUtSg==} - '@swagger-api/apidom-ns-json-schema-2019-09@1.0.0-rc.1': - resolution: {integrity: sha512-1va09+kSTpNKc9oKs0rk2FWP2wk9AAdOcdmLpPEbzMnThQD1DHeBCk5OMStGZlaROxKWMPVZ5EmKy6rTRXvEIQ==} + '@swagger-api/apidom-ns-asyncapi-3@1.6.0': + resolution: {integrity: sha512-lRMvwTdtuPcwJEYLTX/UGtECpHi9UNYeT9rmWMw3LiKZrZzYc2L8q4ipPbpWwH8t7QfsF2u0iggCODU99lXCnw==} - '@swagger-api/apidom-ns-json-schema-2020-12@1.0.0-rc.1': - resolution: {integrity: sha512-ixNci2lwVD0yC4lUrmOOhgE/denI8keGVnHXYokbq0QxlQWuwuVzjVEtVMdmEaX3JaYVmEI5tr8K9MPW1zso1A==} + '@swagger-api/apidom-ns-json-schema-2019-09@1.6.0': + resolution: {integrity: sha512-dee1i8wcAFgDEOzTsyoCzQhFLZ2JKzkK5KkRuryabvwS0hG2mKlogToFc8cO2MkkiLSpERm7DREALwSTFVHa0w==} - '@swagger-api/apidom-ns-json-schema-draft-4@1.0.0-rc.1': - resolution: {integrity: sha512-kLGANNv8oAWWvnVqWat/AqOEo6XBfdMF3I7BLL2eZFBE8bhTbFMvmAvUfnwcehYo3K4vT+J60DWrwqYBoGSSUQ==} + '@swagger-api/apidom-ns-json-schema-2020-12@1.6.0': + resolution: {integrity: sha512-ldTxSnnIXskwpN6yCJkasqs32pJXwoXyad95crKT0xjZZr4fTrcAXXIyzdjBubiY9tK6elSrQGQxinJcV7ivWw==} - '@swagger-api/apidom-ns-json-schema-draft-6@1.0.0-rc.1': - resolution: {integrity: sha512-UzoTSrPOh+dwzSKZmawBwhWg4xGgpdNBmtV7jDJGEyFGsEkPvDBvViq+4sfMxO/BGoqPCD/jdt4yF16AKRxLiw==} + '@swagger-api/apidom-ns-json-schema-draft-4@1.6.0': + resolution: {integrity: sha512-t9HvHwrevEG7usosO6AdXmC8oYqje5nxHpUmODr72tUtCeAeGEGEb9lgqx7fBhjc3BYsRzOL1hX56m1gjEyCog==} - '@swagger-api/apidom-ns-json-schema-draft-7@1.0.0-rc.1': - resolution: {integrity: sha512-3alW6gJKeb+DzTu+LYpYyEc5swo3oP8aoatOcVceWo/A/568zfIW0wWssf9WoasI42jEktV17z4A6ZwT6PzYbA==} + '@swagger-api/apidom-ns-json-schema-draft-6@1.6.0': + resolution: {integrity: sha512-aoyvQWgAOcZGTe5OfJ3r24DvXHHbrkKtAnxTOEdZzV/uOm6/cbuT8m02+aMOqWPxei1naC3ZHW9iHrETtfgV3w==} - '@swagger-api/apidom-ns-openapi-2@1.0.0-rc.1': - resolution: {integrity: sha512-SJ79fGH+WA7IYEXOJFPjXCB5bg6uoJDmkEYxMtZpN0Q+juFSkMcquh3jVf0j0y+6gFe/MZjIFDHxiBdeJarOig==} + '@swagger-api/apidom-ns-json-schema-draft-7@1.6.0': + resolution: {integrity: sha512-GjmC4+AHQh22fRZOmV+jSYMJTXh243XvdACfIQ//39kQu7gQsimF4PVSY2IgWSvS/I1ukWdPBYmDvOKryBPGrw==} - '@swagger-api/apidom-ns-openapi-3-0@1.0.0-rc.1': - resolution: {integrity: sha512-TC2EBxBFJWD5pbZKUcbySqCt2nQmeP60ooS4f4Nl5r6vB/BeNbuO4FmO7CDI8OXD7b4J2+ro5KrXMs1EOQ3kVA==} + '@swagger-api/apidom-ns-openapi-2@1.6.0': + resolution: {integrity: sha512-xbmYzagnB8rO7sYwNGVyxYbNBkjCWnMhlnMrxkPtfQ/2u2ANAmTnCB/S/cMswX5XofiRJbznKAjLDSKBS+mLpQ==} - '@swagger-api/apidom-ns-openapi-3-1@1.0.0-rc.1': - resolution: {integrity: sha512-IY87MhqFBJnzhPWlr/OEVUa3iDjZuiwlyoWX4lw2jbKX+mLDrceGG5nqZawDACAjTjvtsjJcFP81D2VmjHVT5Q==} + '@swagger-api/apidom-ns-openapi-3-0@1.6.0': + resolution: {integrity: sha512-AOvW7a2H27inepcTBAWaBMjJLrCh5IPWD4nTU+gysULC7IW6gphO8hj3iUuTmFBcGh9be89GBbvv2y/EGAfx9w==} - '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.0.0-rc.1': - resolution: {integrity: sha512-1/koF8VwJHzFwk6FMWen39vpMUNcoCMXVY6MjMGag0h37LY5YAByl0LcYzLa33cvm5KCa23Aa75cu7Ns0SR1HQ==} + '@swagger-api/apidom-ns-openapi-3-1@1.6.0': + resolution: {integrity: sha512-jCVypc8503zDSxAQlyV8j1vzwc75VBdWHtE2O0F+q5j9qNtGxw/ekbDkgrydYRaGBl92mf16dtPjtp5LwJD0Hw==} - '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.0.0-rc.1': - resolution: {integrity: sha512-Gjx1gojtYvGFqKnGttv84ba0RCkY7Xa+12kj9HVik8G+YVzUN78Qt8yu96ak0oXFlY1Ai8MQb5siC8YH4pC8Dg==} + '@swagger-api/apidom-ns-openapi-3-2@1.6.0': + resolution: {integrity: sha512-QcFAUucaPaWiOKOEaaGqSfK3OtjeGJodWZLsuBQ0vrHaHkWyQ7jwsM1DJbc1Y8geOBeD2wIwdrdRjoulmqU1SA==} - '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.0.0-rc.1': - resolution: {integrity: sha512-RHIly3bprJELMlt91UFqmMbAtIxDyHi8DM27YVXRjrX7zncP6QKyevcg2ajEe8UaNtkCFvPZW9h0gDh/ZW6ZYQ==} + '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.6.0': + resolution: {integrity: sha512-vz/9k0X/kh6mLm+Fi+LGNk/yyFq28wxI29ZVLW+b7ulcODikv+NaDnyN2n2kLKCvIchPATzAEvqMvVMuuQwWlg==} - '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.0.0-rc.1': - resolution: {integrity: sha512-a+FweCIFAAnjvEWpMAd93xczbYX7AU4prwAMJ3QpFszltq2K7HKWUN1mMRplYPg5SSRLZojymdyMlu1evuP2Sg==} + '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.6.0': + resolution: {integrity: sha512-QAq4H6YzRtysSpvLtlJ8WZ22/1Mht+/iarrUOijxDZQPAGfYeUoIicnCqxkVZYSea85sQl+3kiCCB3nhSH+L0g==} - '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.0.0-rc.1': - resolution: {integrity: sha512-IKJ95OH35dW1+yGYDoE8uE3movG9z8Nht2QW8Ja75/H/jAFYGCxj56ZborEIiZxp83ItFqxQFn+ZUvwD7bDZew==} + '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.6.0': + resolution: {integrity: sha512-syKPG3a9IGRvlGhXIEUzWhwbEuFbj+UwwtqaKu8zu771V+DRtH+wxyOkX54vKAIlApz/FgeUbmlWA1ZtYBlSIQ==} - '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.0.0-rc.1': - resolution: {integrity: sha512-cVu2Ue1U809HiGeAR/54yF42y4UKiWh45sEKzkXPYJUqRUd2Ewyo5KHtlckjNnCDRILZEhaPaZFpxURSbyUeSg==} + '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.6.0': + resolution: {integrity: sha512-IVVLn+a8Q1iQcQsm4tXiAPghHJuJSB1rhIlDyHe3tSQgt9HOSiVpbnJDpwE/JBxxDxSAkeT6Ovo+fi2T5AmHYg==} - '@swagger-api/apidom-parser-adapter-json@1.0.0-rc.1': - resolution: {integrity: sha512-pmWOuZFxSNdbV1xNV0IoIrRiweaVl9yGAiEtiYH0BzbD+yGQSxi1ltMkZDVoyBPbe2NtygFDRaINSDLwuYpUYA==} + '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.6.0': + resolution: {integrity: sha512-aSUi22ELTDvdCLA3nIUOehuNBcHSeCqU7S7YNiHP/mwE4Q07pwQrYXijH2PROfCdjlZNNN34m6Ptakd92jliJQ==} - '@swagger-api/apidom-parser-adapter-openapi-json-2@1.0.0-rc.1': - resolution: {integrity: sha512-+OsFBsD9PPqtcgETXU7l00/TMOfbtM+gvafJIdS/a+O1NQ2upAujQB3ArIB3sry3vloorjKmPyY6ZK/8rEKhNA==} + '@swagger-api/apidom-parser-adapter-asyncapi-json-3@1.6.0': + resolution: {integrity: sha512-Ic53vcFF9zniDyCXOGSwwuAdEBUn5lFEAa0m2i30R36cQFHBCCuvbzbMQjWdr+oML0Aw4XoqOwZCQgkJJICpPA==} - '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.0.0-rc.1': - resolution: {integrity: sha512-FEUJ+RaXKMP6LHMVeVyUPKdqjEqMSEZVhpvZt3Kh5fvnZvdgWngqs4gUjxO+dQCDVWkBxH/29uXm2eghdaM2Lw==} + '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.6.0': + resolution: {integrity: sha512-d/w7X+T4vT+KPqb+8xUm6n4pbHsGB28jdxE9rNVbxhu6D3owny2uxfglwaFh4fJG6FQMavCwl/QzfB4newdoKQ==} - '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.0.0-rc.1': - resolution: {integrity: sha512-pcfPj3FW2IWPYmU5kE0YB7npqV2vN+DvqUsw1GcDzsb8y2IdkzagHtMPZkM/KrfHFmhsoHm5YNpYC+Vvd2g61Q==} + '@swagger-api/apidom-parser-adapter-asyncapi-yaml-3@1.6.0': + resolution: {integrity: sha512-Wmf0LY59TZxQhqrJU2pcnUikcChVB4IqGPgjtOFLUoqPpz8FSwYbJ/SPnSMSl+QuncxROheSFsgZ6Tupv0sPHw==} - '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.0.0-rc.1': - resolution: {integrity: sha512-ckt6b1P+iwYkTMibixpo0oKWFm0wOGf88gslMMCo1xNaLVJnjxiadTQ/lNJd58CBJiQeN/dziTkRqGcFDqV9JQ==} + '@swagger-api/apidom-parser-adapter-json@1.6.0': + resolution: {integrity: sha512-WdAS+dBAB2t18HuUgSZy5b8JM7uXfn1RlPymJNRMUsrKYCTtPrQ/0q3YfnBjPhtjSSNCp+p1wajxHAFS7cj2VA==} - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.0.0-rc.1': - resolution: {integrity: sha512-JFyNwcj43cmps18Y+iqyna3uufyib8eLku+z4EhKFRPCuGFQ2bjsfVCFSP+Sv6sJATlagRRcfont+Q0BgNjwvw==} + '@swagger-api/apidom-parser-adapter-openapi-json-2@1.6.0': + resolution: {integrity: sha512-Q36W1FzdVaY7Oh98533dzCUghwb8k3ZMdlnV37V1H13FlUkj3tVZiWaeaCLwIakzQ7XXYaQTOP+VrRhDRjzhUA==} - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.0.0-rc.1': - resolution: {integrity: sha512-kLRZYxJdix+irs0HTXJ223rj4Ou8AXo9IHiSf44KTuAZ/bsuakb0P8xROHg5MWTTEHYMfDrdLX+LaUo3b2GFyA==} + '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.6.0': + resolution: {integrity: sha512-UY+obOLTPHJvnXscdMY9XwZyuqcnBe6cu9TURjJgkO/QpOpPDqqZoRyurKZgRrX0Pv9B1zR3EIzhl01u/jeUaw==} - '@swagger-api/apidom-parser-adapter-yaml-1-2@1.0.0-rc.1': - resolution: {integrity: sha512-XmRG/5lmoRusCupHEf10OeK1SQnSym4N1OrK+c3OTfN1GGX60Gxu2XCZ70pafJDuu+cvo/F8Db8UX3UOHapjwA==} + '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.6.0': + resolution: {integrity: sha512-4ch04/96lYMXQu6odqa6H0aJmV8UefnBJKX1CPuL4qcPSPMFCurcXHGpPHrwMu1p/4Q9H+yRVlYeNQV10xvM0w==} - '@swagger-api/apidom-reference@1.0.0-rc.1': - resolution: {integrity: sha512-Xj4aYrawCseCf6N6UuGSIaboN60ERmQVcKqXs/rybQz1gnD2AVqb8gklC2sUdOIUyN+ehDy+HDSM8I+yP32J0w==} + '@swagger-api/apidom-parser-adapter-openapi-json-3-2@1.6.0': + resolution: {integrity: sha512-fWR2gjMQg00QIimcXQMSVeLnCH/2iuDD/Dx8TzVHmKV/IKlu+TnmIVosdlDfRmOB+4duwU6/yfoA79IEhFeZdw==} + + '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.6.0': + resolution: {integrity: sha512-dkEh1Rw9uvuIAOTfKjWRX2rLWP+xJ/Eqdkqeo0I0BWFKXX49YcDpHJV4XHpmd5FbsjJ9vBYr0hAmkbl32TtR4g==} + + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.6.0': + resolution: {integrity: sha512-6azq5YonWdzHcO9llK9zn1a+rGxlTz2Uf8p8NWDQnl2AZ56neDLYEL3mNDlrMXAy8dSJIHw+u9VF1OOzdslIHQ==} + + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.6.0': + resolution: {integrity: sha512-g2tGCXyIAC0IA6JjA0HVxHWyCovyfAxDQ+pMAJ6qm4PfrZHB+oXKWKZHNNmQaFiKdc/SVdMQq6Up0mXOQs7IOQ==} + + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-2@1.6.0': + resolution: {integrity: sha512-NGkdG9X5Svi89ZBluNseyUBNdgB9MkbTTNmerVKKOmCCHaVbzIb6UFPXf1MifSFyT+wTeGZk6WZLgRIDsTAZ5Q==} + + '@swagger-api/apidom-parser-adapter-yaml-1-2@1.6.0': + resolution: {integrity: sha512-UwSE5pPUJ+ag7ZCbesgx/SJ8zUD3Sx+2U4AD3/1G1EJ+0gb7FMYgihuOT8ujmBfZVGGm3HMIEIa1w3zha08v2g==} + + '@swagger-api/apidom-reference@1.6.0': + resolution: {integrity: sha512-gYTDfWQM1heqrCCrCsZH+EWDyAkIGqEJnSJcVWKngwOkXJKeUwat8p1TOW4q3rkaTT+fBaYbrjTr9SkFtVbdMg==} '@swaggerexpert/cookie@2.0.2': resolution: {integrity: sha512-DPI8YJ0Vznk4CT+ekn3rcFNq1uQwvUHZhH6WvTSPD0YKBIlMS9ur2RYKghXuxxOiqOam/i4lHJH4xTIiTgs3Mg==} @@ -4434,13 +4542,13 @@ packages: zod: optional: true - '@tabler/icons-react@3.36.1': - resolution: {integrity: sha512-/8nOXeNeMoze9xY/QyEKG65wuvRhkT3q9aytaur6Gj8bYU2A98YVJyLc9MRmc5nVvpy+bRlrrwK/Ykr8WGyUWg==} + '@tabler/icons-react@3.40.0': + resolution: {integrity: sha512-oO5+6QCnna4a//mYubx4euZfECtzQZFDGsDMIdzZUhbdyBCT+3bRVFBPueGIcemWld4Vb/0UQ39C/cmGfGylAg==} peerDependencies: react: '>= 16' - '@tabler/icons@3.36.1': - resolution: {integrity: sha512-f4Jg3Fof/Vru5ioix/UO4GX+sdDsF9wQo47FbtvG+utIYYVQ/QVAC0QYgcBbAjQGfbdOh2CCf0BgiFOF9Ixtjw==} + '@tabler/icons@3.40.0': + resolution: {integrity: sha512-V/Q4VgNPKubRTiLdmWjV/zscYcj5IIk+euicUtaVVqF6luSC9rDngYWgST5/yh3Mrg/mYUwRv1YVTk71Jp0twQ==} '@tanstack/devtools-event-client@0.4.0': resolution: {integrity: sha512-RPfGuk2bDZgcu9bAJodvO2lnZeHuz4/71HjZ0bGb/SPg8+lyTA+RLSKQvo7fSmPSi8/vcH3aKQ8EM9ywf1olaw==} @@ -4460,8 +4568,8 @@ packages: '@tanstack/query-core@5.90.19': resolution: {integrity: sha512-GLW5sjPVIvH491VV1ufddnfldyVB+teCnpPIvweEfkpRx7CfUmUGhoh9cdcUKBh/KwVxk22aNEDxeTsvmyB/WA==} - '@tanstack/query-devtools@5.92.0': - resolution: {integrity: sha512-N8D27KH1vEpVacvZgJL27xC6yPFUy0Zkezn5gnB3L3gRCxlDeSuiya7fKge8Y91uMTnC8aSxBQhcK6ocY7alpQ==} + '@tanstack/query-devtools@5.93.0': + resolution: {integrity: sha512-+kpsx1NQnOFTZsw6HAFCW3HkKg0+2cepGtAWXjiiSOJJ1CtQpt72EE2nyZb+AjAbLRPoeRmPJ8MtQd8r8gsPdg==} '@tanstack/react-form@1.27.7': resolution: {integrity: sha512-xTg4qrUY0fuLaSnkATLZcK3BWlnwLp7IuAb6UTbZKngiDEvvDCNTvVvHgPlgef1O2qN4klZxInRyRY6oEkXZ2A==} @@ -4475,7 +4583,7 @@ packages: '@tanstack/react-query-devtools@5.91.2': resolution: {integrity: sha512-ZJ1503ay5fFeEYFUdo7LMNFzZryi6B0Cacrgr2h1JRkvikK1khgIq6Nq2EcblqEdIlgB/r7XDW8f8DQ89RuUgg==} peerDependencies: - '@tanstack/react-query': ^5.90.14 + '@tanstack/react-query': ^5.90.20 react: ^18 || ^19 '@tanstack/react-query-next-experimental@5.91.0': @@ -4485,8 +4593,8 @@ packages: next: ^13 || ^14 || ^15 || ^16 react: ^18 || ^19 - '@tanstack/react-query@5.90.19': - resolution: {integrity: sha512-qTZRZ4QyTzQc+M0IzrbKHxSeISUmRB3RPGmao5bT+sI6ayxSRhn0FXEnT5Hg3as8SBFcRosrXXRFB+yAcxVxJQ==} + '@tanstack/react-query@5.90.21': + resolution: {integrity: sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==} peerDependencies: react: ^18 || ^19 @@ -4522,227 +4630,224 @@ packages: '@tanstack/virtual-core@3.11.2': resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==} - '@testcontainers/mysql@11.11.0': - resolution: {integrity: sha512-2EfFhUDEvEdwBwez+F/NhqP+h2rFzLzHYbRX0N/9/Lgdlq8TbsYWZ9SaWL9V0f1FWX89XnyZrT3i/j7m8MIESg==} + '@testcontainers/mysql@11.12.0': + resolution: {integrity: sha512-E43y5Xdx8ORPdvdd1eIJb4uM8sGHkZenvHURJ6lUc+3KtS3DmTSTsBbcLC+HwTg92IqAzuIq01hYF7J/qmMrOw==} - '@testcontainers/postgresql@11.11.0': - resolution: {integrity: sha512-Og64I/h5LKLVvUTkAcLeTXfFcMhh3dCHCypN3Uzd+tQMd70SpCfQ0LCP9v/U+MS7JBRzU9EmqhUFkTOm4hyZWw==} + '@testcontainers/postgresql@11.12.0': + resolution: {integrity: sha512-w4ZK0H+WIYBUBk57H9wCSxPMSMZUNsFpx2MZAX4iru0Aevz9HFWDfAhFLAu+/SwsHtEJUD7XfWUDlqBGC3OF0Q==} - '@testcontainers/redis@11.11.0': - resolution: {integrity: sha512-IaDPNd1jRkshwJ69D7Nc3OTt5QQG1d4G1TZILSQ7gAVr4OqAJxoA9pV73ZvKIF/8LwxDDg136ApPlU9PcFtIKg==} + '@testcontainers/redis@11.12.0': + resolution: {integrity: sha512-2qCoevN0t+6yFFdmLUywFiL0n+EwTvYXDdc3lYXkKiIpTt1t4mqyWGXmV5dfWyCNYAWbV+PWmVvwnP1GDMoxrA==} - '@tiptap/core@3.16.0': - resolution: {integrity: sha512-XegRaNuoQ/guzBQU2xHxOwFXXrtoXW9tiyXDhssSqylvZmBVSlRIPNHA6ArkHBKm6ehLf6+6Y9fF3uky1yCXYQ==} + '@tiptap/core@3.20.1': + resolution: {integrity: sha512-SwkPEWIfaDEZjC8SEIi4kZjqIYUbRgLUHUuQezo5GbphUNC8kM1pi3C3EtoOPtxXrEbY6e4pWEzW54Pcrd+rVA==} peerDependencies: - '@tiptap/pm': ^3.16.0 + '@tiptap/pm': ^3.20.1 - '@tiptap/extension-blockquote@3.16.0': - resolution: {integrity: sha512-c1bhJ3KDFXyNcMweiBzu0LouBXfUC/sUMtaEafQePR98BVu+d0tmWXcGlfVarGVoRyCYFa1mHpkgtxp4SS3lag==} + '@tiptap/extension-blockquote@3.20.1': + resolution: {integrity: sha512-WzNXk/63PQI2fav4Ta6P0GmYRyu8Gap1pV3VUqaVK829iJ6Zt1T21xayATHEHWMK27VT1GLPJkx9Ycr2jfDyQw==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-bold@3.16.0': - resolution: {integrity: sha512-S61wtChbOigk2bklCJ2uEa8jbAnI9ChbW4d1z/Uv/Hr6eWo42vVBtjNZKFOsiBPDajFZbOfnvekGs731jNrHKg==} + '@tiptap/extension-bold@3.20.1': + resolution: {integrity: sha512-fz++Qv6Rk/Hov0IYG/r7TJ1Y4zWkuGONe0UN5g0KY32NIMg3HeOHicbi4xsNWTm9uAOl3eawWDkezEMrleObMw==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-bubble-menu@3.16.0': - resolution: {integrity: sha512-nFL7FMu1LjZ5ZGf4U3tw56JLj/SpLysZvHQ1EneGB+90TEI/WReOvTY9VwH1egGWwrl7/OvQuGKclbuLIsy+BA==} + '@tiptap/extension-bubble-menu@3.20.1': + resolution: {integrity: sha512-XaPvO6aCoWdFnCBus0s88lnj17NR/OopV79i8Qhgz3WMR0vrsL5zsd45l0lZuu9pSvm5VW47SoxakkJiZC1suw==} peerDependencies: - '@tiptap/core': ^3.16.0 - '@tiptap/pm': ^3.16.0 + '@tiptap/core': ^3.20.1 + '@tiptap/pm': ^3.20.1 - '@tiptap/extension-bullet-list@3.16.0': - resolution: {integrity: sha512-GjKssVf9241GLdshdYRzPPApWQIB+7GJy0TZgx7bWmFUVgypYxDoE/rQRmvb3Fhup836bgfpfUzStevJ6eIClw==} + '@tiptap/extension-bullet-list@3.20.1': + resolution: {integrity: sha512-mbrlvOZo5OF3vLhp+3fk9KuL/6J/wsN0QxF6ZFRAHzQ9NkJdtdfARcBeBnkWXGN8inB6YxbTGY1/E4lmBkOpOw==} peerDependencies: - '@tiptap/extension-list': ^3.16.0 + '@tiptap/extension-list': ^3.20.1 - '@tiptap/extension-code-block@3.16.0': - resolution: {integrity: sha512-hAsXe6fIBsvIMWlVEXKLEzFQ8h6VUEBWqEEFIQgq+SpZCkGX+KzVmFXd5V2aDqb+BoOyqYiA2w1d/frBBxVEpw==} + '@tiptap/extension-code-block@3.20.1': + resolution: {integrity: sha512-vKejwBq+Nlj4Ybd3qOyDxIQKzYymdNH+8eXkKwGShk2nfLJIxq69DCyGvmuHgipIO1qcYPJ149UNpGN+YGcdmA==} peerDependencies: - '@tiptap/core': ^3.16.0 - '@tiptap/pm': ^3.16.0 + '@tiptap/core': ^3.20.1 + '@tiptap/pm': ^3.20.1 - '@tiptap/extension-code@3.16.0': - resolution: {integrity: sha512-U8/bz/1BhQ39LJgUqJ8u1HzLcYdtubUWVAVC8seteLz1vIhXkTyfAC8478KQ+YdIDkMzAs+0vxk5BsWcWG16zQ==} + '@tiptap/extension-code@3.20.1': + resolution: {integrity: sha512-509DHINIA/Gg+eTG7TEkfsS8RUiPLH5xZNyLRT0A1oaoaJmECKfrV6aAm05IdfTyqDqz6LW5pbnX6DdUC4keug==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-color@3.16.0': - resolution: {integrity: sha512-ws9hayQKncfztUnOL0isLgGg1Bzl8/pcPQQVtXSH336DLzaPQB1Uv2fBmUlBx229IZHa6YKI9oGZSYfXSi934A==} + '@tiptap/extension-color@3.20.1': + resolution: {integrity: sha512-WpYGG+9zDQXFWdhZ/SPahcVR1aMMXubRSHEBaaLs0SEQ2dThEOYo5xXlVP0Cwat9OiQ+nqWnCFwBmc6mgIAiUA==} peerDependencies: - '@tiptap/extension-text-style': ^3.16.0 + '@tiptap/extension-text-style': ^3.20.1 - '@tiptap/extension-document@3.16.0': - resolution: {integrity: sha512-vOwBnJIonYmmFVMEnnE1jwoUMq0P/9BcaUocIG9o5iFRTV38I8YGn8n6DiE1pjSeLXRpLrXl6LLwdOMBJewhBg==} + '@tiptap/extension-document@3.20.1': + resolution: {integrity: sha512-9vrqdGmRV7bQCSY3NLgu7UhIwgOCDp4sKqMNsoNRX0aZ021QQMTvBQDPkiRkCf7MNsnWrNNnr52PVnULEn3vFQ==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-dropcursor@3.16.0': - resolution: {integrity: sha512-n9Gbt99K9oBChjp8puF0ffAJtBF6ZVjydG5u5QO2Z8sHNE+Hn6ARfgZqLjr11ZF4b+mLShqsmyROmITNf73W+A==} + '@tiptap/extension-dropcursor@3.20.1': + resolution: {integrity: sha512-K18L9FX4znn+ViPSIbTLOGcIaXMx/gLNwAPE8wPLwswbHhQqdiY1zzdBw6drgOc1Hicvebo2dIoUlSXOZsOEcw==} peerDependencies: - '@tiptap/extensions': ^3.16.0 + '@tiptap/extensions': ^3.20.1 - '@tiptap/extension-floating-menu@3.16.0': - resolution: {integrity: sha512-cokYXL8EkW+CFIlke70GLL7iKetUtYEp87muMG9oflczyj0BjmGAbO7Mskm+bcQBhxZ0dIYILTqKn2bNBvCDFw==} + '@tiptap/extension-floating-menu@3.20.1': + resolution: {integrity: sha512-BeDC6nfOesIMn5pFuUnkEjOxGv80sOJ8uk1mdt9/3Fkvra8cB9NIYYCVtd6PU8oQFmJ8vFqPrRkUWrG5tbqnOg==} peerDependencies: '@floating-ui/dom': ^1.0.0 - '@tiptap/core': ^3.16.0 - '@tiptap/pm': ^3.16.0 + '@tiptap/core': ^3.20.1 + '@tiptap/pm': ^3.20.1 - '@tiptap/extension-gapcursor@3.16.0': - resolution: {integrity: sha512-8dxE4bkfn6Jog/JHDxN/kzcRbyJB7HyFqCKdiTq0f4atzysmnEUuMswwlwMPaErkzlETD6B8NEEtMknEUqowGA==} + '@tiptap/extension-gapcursor@3.20.1': + resolution: {integrity: sha512-kZOtttV6Ai8VUAgEng3h4WKFbtdSNJ6ps7r0cRPY+FctWhVmgNb/JJwwyC+vSilR7nRENAhrA/Cv/RxVlvLw+g==} peerDependencies: - '@tiptap/extensions': ^3.16.0 + '@tiptap/extensions': ^3.20.1 - '@tiptap/extension-hard-break@3.16.0': - resolution: {integrity: sha512-nwUTixlHYo9V1lfOYsRi2JiAYCRC7pObB3Kt7rEeMxB3XmcRcSpHtxYs6r+TvifsLFys8RG5wOFXIV/YXZHcDg==} + '@tiptap/extension-hard-break@3.20.1': + resolution: {integrity: sha512-9sKpmg/IIdlLXimYWUZ3PplIRcehv4Oc7V1miTqlnAthMzjMqigDkjjgte4JZV67RdnDJTQkRw8TklCAU28Emg==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-heading@3.16.0': - resolution: {integrity: sha512-du4d1Ukvhr1zvPWlU/HS3NMlRswzGRSNDNfCFUhdYgQoHOSnUXshnlKD3E5H0EHfL9UwT4JFyqAT3+1ZnahkdA==} + '@tiptap/extension-heading@3.20.1': + resolution: {integrity: sha512-unudyfQP6FxnyWinxvPqe/51DG91J6AaJm666RnAubgYMCgym+33kBftx4j4A6qf+ddWYbD00thMNKOnVLjAEQ==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-highlight@3.16.0': - resolution: {integrity: sha512-qPSpWGrMFPc570T6mTJ8mpdadiTtv602CwsOhc4iTpRnaYCjXQmie9/j15BayWG+M6KxufSv+Te+33Xg0e+PCg==} + '@tiptap/extension-highlight@3.20.1': + resolution: {integrity: sha512-Ufv1eNsQBR7NNSxQIvHaI9Bm3/MS8GW9uCXR/20WJ2r0GhDA6vwnS5MHAhP5JUXK6KOsd0Rvz2cfvYB7f3okbQ==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-horizontal-rule@3.16.0': - resolution: {integrity: sha512-yyKl45UCH55pIf8G4bHiUNFxggipRVT276c3t9vrkXU6BkJhzfxxcIc5svWkiThDjdYmJs1FfVCYAtGSuKiSyA==} + '@tiptap/extension-horizontal-rule@3.20.1': + resolution: {integrity: sha512-rjFKFXNntdl0jay8oIGFvvykHlpyQTLmrH3Ag2fj3i8yh6MVvqhtaDomYQbw5sxECd5hBkL+T4n2d2DRuVw/QQ==} peerDependencies: - '@tiptap/core': ^3.16.0 - '@tiptap/pm': ^3.16.0 + '@tiptap/core': ^3.20.1 + '@tiptap/pm': ^3.20.1 - '@tiptap/extension-image@3.16.0': - resolution: {integrity: sha512-mTjt4kdyVtY/2dJcfxAgBae/dkH+r6GwARl7NlPtnI3EzpELFR65FNuOQyTxFXP3yfV9uMtPpq6Wevk8aLTsxQ==} + '@tiptap/extension-image@3.20.1': + resolution: {integrity: sha512-/GPFSLNdYSZQ0E6VBXSAk0UFtDdn98HT1Aa2tO+STELqc5jAdFB42dfFnTC6KQzTvcUOUYkE2S1Q22YC5H2XNQ==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-italic@3.16.0': - resolution: {integrity: sha512-SVNnkRUK6G+dQse5Ms8Q/wudSTh37O94p02RDc3KneEtBk6wkokqCLuwKnWLPhlEqsuOku+wTD9DSJdvoRlq9w==} + '@tiptap/extension-italic@3.20.1': + resolution: {integrity: sha512-ZYRX13Kt8tR8JOzSXirH3pRpi8x30o7LHxZY58uXBdUvr3tFzOkh03qbN523+diidSVeHP/aMd/+IrplHRkQug==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-link@3.16.0': - resolution: {integrity: sha512-WPPJLtGXQadBVVwH6gcMpaXIgfvFF9NGpE2IVqleVKR3Epv2Rd4aWd4oyAdrT8KU9G6dzMXZfkrB8aArTDKxYQ==} + '@tiptap/extension-link@3.20.1': + resolution: {integrity: sha512-oYTTIgsQMqpkSnJAuAc+UtIKMuI4lv9e1y4LfI1iYm6NkEUHhONppU59smhxHLzb3Ww7YpDffbp5IgDTAiJztA==} peerDependencies: - '@tiptap/core': ^3.16.0 - '@tiptap/pm': ^3.16.0 + '@tiptap/core': ^3.20.1 + '@tiptap/pm': ^3.20.1 - '@tiptap/extension-list-item@3.16.0': - resolution: {integrity: sha512-kshssUZEPoosPWbJNQEFJnVV3iPwsDU9l/RCdHJB5SE+aNWJyUk5hQ/YwngEHjV7rS+RnAuhbrcB5swgyzROuA==} + '@tiptap/extension-list-item@3.20.1': + resolution: {integrity: sha512-tzgnyTW82lYJkUnadYbatwkI9dLz/OWRSWuFpQPRje/ItmFMWuQ9c9NDD8qLbXPdEYnvrgSAA+ipCD/1G0qA0Q==} peerDependencies: - '@tiptap/extension-list': ^3.16.0 + '@tiptap/extension-list': ^3.20.1 - '@tiptap/extension-list-keymap@3.16.0': - resolution: {integrity: sha512-AU3J9W6uo835ZdxiGmrYx1KUymzvfkU4d278X0OBAfujORXkbDNlo9er8pOrOpgXNxgtnlH32lWR4bWyKdUgwA==} + '@tiptap/extension-list-keymap@3.20.1': + resolution: {integrity: sha512-Dr0xsQKx0XPOgDg7xqoWwfv7FFwZ3WeF3eOjqh3rDXlNHMj1v+UW5cj1HLphrsAZHTrVTn2C+VWPJkMZrSbpvQ==} peerDependencies: - '@tiptap/extension-list': ^3.16.0 + '@tiptap/extension-list': ^3.20.1 - '@tiptap/extension-list@3.16.0': - resolution: {integrity: sha512-tpjWGugfI0XYR9iG/QlYYtCY35TFWHNwGKc94wN4s7NmAjB4xlwdTkTZQ6PdZ39x1SeHkRjxAka+6GcBIoOHGQ==} + '@tiptap/extension-list@3.20.1': + resolution: {integrity: sha512-euBRAn0mkV7R2VEE+AuOt3R0j9RHEMFXamPFmtvTo8IInxDClusrm6mJoDjS8gCGAXsQCRiAe1SCQBPgGbOOwg==} peerDependencies: - '@tiptap/core': ^3.16.0 - '@tiptap/pm': ^3.16.0 + '@tiptap/core': ^3.20.1 + '@tiptap/pm': ^3.20.1 - '@tiptap/extension-ordered-list@3.16.0': - resolution: {integrity: sha512-mNKqwEgiXSMi5afGtnodsptveukpr3GqcGsw2fqJFyNq9SITznjiiuQfULtzVnayC8qHsk0Zzbpzf0zvdHlypg==} + '@tiptap/extension-ordered-list@3.20.1': + resolution: {integrity: sha512-Y+3Ad7OwAdagqdYwCnbqf7/to5ypD4NnUNHA0TXRCs7cAHRA8AdgPoIcGFpaaSpV86oosNU3yfeJouYeroffog==} peerDependencies: - '@tiptap/extension-list': ^3.16.0 + '@tiptap/extension-list': ^3.20.1 - '@tiptap/extension-paragraph@3.16.0': - resolution: {integrity: sha512-JHn3ev7US5FxtQFyEOeQ8XfvKcR5NiHkwDH2Gcwe+0ttpA/Qrrr5XN3tJIgI3rXfR5DjxArq/QO0OTVBm3xlJA==} + '@tiptap/extension-paragraph@3.20.1': + resolution: {integrity: sha512-QFrAtXNyv7JSnomMQc1nx5AnG9mMznfbYJAbdOQYVdbLtAzTfiTuNPNbQrufy5ZGtGaHxDCoaygu2QEfzaKG+Q==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-placeholder@3.16.0': - resolution: {integrity: sha512-sbffATC2fwyRF9i483fSRj5MTADCqD1QUl4LCAt8VO+cVEQbV19WV5J7EQ8wIjDEoFoOKIUXdU/0CEcF4IpjDQ==} + '@tiptap/extension-placeholder@3.20.1': + resolution: {integrity: sha512-k+jfbCugYGuIFBdojukgEopGazIMOgHrw46FnyN2X/6ICOIjQP2rh2ObslrsUOsJYoEevxCsNF9hZl1HvWX66g==} peerDependencies: - '@tiptap/extensions': ^3.16.0 + '@tiptap/extensions': ^3.20.1 - '@tiptap/extension-strike@3.16.0': - resolution: {integrity: sha512-l5/4+gii53kET7ETyYpbTumoQdZ6HwJLUcDlGHutLZlBCaZPxFTi5qgHQBhNq5KAzRH3LVJeb0fEeMi+yCZBQA==} + '@tiptap/extension-strike@3.20.1': + resolution: {integrity: sha512-EYgyma10lpsY+rwbVQL9u+gA7hBlKLSMFH7Zgd37FSxukOjr+HE8iKPQQ+SwbGejyDsPlLT8Z5Jnuxo5Ng90Pg==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-table-cell@3.16.0': - resolution: {integrity: sha512-SMYrXI78ujRiuLN1AGHYSbH8w8dLvXbXtNMyLa194E6UQ+Q3ljd07CJ8af5fiPEqYPG5GA+r4Ka6+MVmAq5AKQ==} + '@tiptap/extension-table-cell@3.20.1': + resolution: {integrity: sha512-nSeboFey+MJqZuCQSbVUajQVaGiypeoUPiGd0CJdyfc0oPsBGGqp7XFJtw5HHEbDqEvSHvGNDoZDFsUTAxUyIg==} peerDependencies: - '@tiptap/extension-table': ^3.16.0 + '@tiptap/extension-table': ^3.20.1 - '@tiptap/extension-table-header@3.16.0': - resolution: {integrity: sha512-MxwfzV1TufdYdQHG+W6OtTPMEuhRLPt6rlBuZU5ASGl5XATyG9ltbuDu1/NwqITpixvKvebVd0200afvNBgmgg==} + '@tiptap/extension-table-header@3.20.1': + resolution: {integrity: sha512-Xsdgik3Bh5xWSkLaPR/6NDLZR5lgUDIN/yiZ7bLtfTsyGxqEvuW2Y9/j/XP3AfsZzGy2/SuA9bM9zxPcFQxwFA==} peerDependencies: - '@tiptap/extension-table': ^3.16.0 + '@tiptap/extension-table': ^3.20.1 - '@tiptap/extension-table-row@3.16.0': - resolution: {integrity: sha512-bM7UuXdMQwVf+6qk9X6gnIbhI16gLxyElSyQvecFozDaYl3NI+UYwztyHm01cvuNbWLPDqkKwrCE+25Q9P3W/A==} + '@tiptap/extension-table-row@3.20.1': + resolution: {integrity: sha512-uYE0SdY4J81wn/fg8Gum0TVSTTBekQhRGeSwDnRfBBd9JILBsLotBTt4ucM7JOUjrP9BjS+QFCT9EstAchPHfQ==} peerDependencies: - '@tiptap/extension-table': ^3.16.0 + '@tiptap/extension-table': ^3.20.1 - '@tiptap/extension-table@3.16.0': - resolution: {integrity: sha512-m7h7YdffWxI0lglKUfR+39UD9psOprn/E4qYzjxOSXl1rg8DnP6zi8LF+5X+v32my9WBbizXxVBIdy8AuDWxAw==} + '@tiptap/extension-table@3.20.1': + resolution: {integrity: sha512-y2o1De3P/FH80nst1D9pYSwtRvxF87WkNAYGurqCkZ6SjwFq1Ifeh9eY+o79R6SCwcfpvQRytCYd+Yw9o5XAtA==} peerDependencies: - '@tiptap/core': ^3.16.0 - '@tiptap/pm': ^3.16.0 + '@tiptap/core': ^3.20.1 + '@tiptap/pm': ^3.20.1 - '@tiptap/extension-task-item@3.16.0': - resolution: {integrity: sha512-fwRW9x+a+g7iO4N/nbAnftyrdKuTj+auaCw29v/0jikOIQEaxfrCA2S5wcA8Bmdc2j3xv/CHXbSYlm+ZUYlznA==} + '@tiptap/extension-task-item@3.20.1': + resolution: {integrity: sha512-ZdQld5Jzw/b/zl9TSA3KNkucmQhW5lHS/0YEKb+eFvxMwdHTKSpsTQzrfzbJixcdSqsuKJB+uUCwDDB+l0CRlA==} peerDependencies: - '@tiptap/extension-list': ^3.16.0 + '@tiptap/extension-list': ^3.20.1 - '@tiptap/extension-task-list@3.16.0': - resolution: {integrity: sha512-nQdD4YMcPBQ7Es7AzT0BtF1QsotMUwG6Klg5OIJfF1v1upELuHmanZr6kbRencU8fIOMxj9SXAPkm8cw21cPSA==} + '@tiptap/extension-task-list@3.20.1': + resolution: {integrity: sha512-fbWsbp2ybWZUn9zcdgvFIcVya7v8kISuy91SULM1lhLwIsjNC15IPqp/ZEFJJJDKWBVr0o6bvLMsXwph/azO+w==} peerDependencies: - '@tiptap/extension-list': ^3.16.0 + '@tiptap/extension-list': ^3.20.1 - '@tiptap/extension-text-align@3.16.0': - resolution: {integrity: sha512-+9mgmd9rSM394/wwBBcxLW9/xzz66j+vUSYMeWcZFC0so/jibu4HcW1lPqKJfQ2F6xAD/xe4cQfckvpdjQaR1Q==} + '@tiptap/extension-text-align@3.20.1': + resolution: {integrity: sha512-9816EFiTO7BvACGomYNI0pZIu5EOBVHrgqO33+sFjseQCvq+5FD6OPNLdHSkPzAmRrE0LUBvFZ93sjO4N+kJPg==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-text-style@3.16.0': - resolution: {integrity: sha512-D+gIqMvCDYTCvnOVpFwfqjSi0UVAbe/9jXP765WlZsN5SOZm4tGOCo+AGxdxReWHsfteM+bdxaK6It1EDRrmiA==} + '@tiptap/extension-text-style@3.20.1': + resolution: {integrity: sha512-3LQU92zX6tzl47EBskkAKeJXd6EWwYmBDE7jbd7InJqnt9NMAcj4DtXtXpI+e6Un5+8yzNjVA+fI5+5cFS3dSg==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-text@3.16.0': - resolution: {integrity: sha512-KTewoX4wZq95cKnjBbogRwBFoGgM6qUg1yjCQ/M6Ajkp4Mtp8Iki9EiAxtfk76b/wtXFf3DsDhFOeVqgKyYbYg==} + '@tiptap/extension-text@3.20.1': + resolution: {integrity: sha512-7PlIbYW8UenV6NPOXHmv8IcmPGlGx6HFq66RmkJAOJRPXPkTLAiX0N8rQtzUJ6jDEHqoJpaHFEHJw0xzW1yF+A==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extension-underline@3.16.0': - resolution: {integrity: sha512-obXAPgHVZocMaW6HtKyCYsN4CxHogWr23gioyEQcpIX0LeegHDqxkoPrjIPX6Tn1isDyvXchcSKWHEfiHO3ZOA==} + '@tiptap/extension-underline@3.20.1': + resolution: {integrity: sha512-fmHvDKzwCgnZUwRreq8tYkb1YyEwgzZ6QQkAQ0CsCRtvRMqzerr3Duz0Als4i8voZTuGDEL3VR6nAJbLAb/wPg==} peerDependencies: - '@tiptap/core': ^3.16.0 + '@tiptap/core': ^3.20.1 - '@tiptap/extensions@3.16.0': - resolution: {integrity: sha512-0iVrn0FHcHIRMdsQLQbf16NgYrKz+Sup/8dDMVBy1QoHn5Hb51QZABqXJTZ6u7My34b4fNZrSggzBAE7l7N/pA==} + '@tiptap/extensions@3.20.1': + resolution: {integrity: sha512-JRc/v+OBH0qLTdvQ7HvHWTxGJH73QOf1MC0R8NhOX2QnAbg2mPFv1h+FjGa2gfLGuCXBdWQomjekWkUKbC4e5A==} peerDependencies: - '@tiptap/core': ^3.16.0 - '@tiptap/pm': ^3.16.0 + '@tiptap/core': ^3.20.1 + '@tiptap/pm': ^3.20.1 - '@tiptap/pm@3.16.0': - resolution: {integrity: sha512-FMxZ6Tc5ONKa/EByDV8lswct6YW2lF/wn11zqXmrfBZhdG7UQPTijpSwb6TCqaO5GOHmixaIaDPj+zimUREHQA==} + '@tiptap/pm@3.20.1': + resolution: {integrity: sha512-6kCiGLvpES4AxcEuOhb7HR7/xIeJWMjZlb6J7e8zpiIh5BoQc7NoRdctsnmFEjZvC19bIasccshHQ7H2zchWqw==} - '@tiptap/react@3.16.0': - resolution: {integrity: sha512-r1R19Ma4zxGt8ImiNOqSArAnWO239KUI9tTVeelgTyekPj7643lO8GbtuXJfAeWGPduDIpcAgR/Dd4NKieetiA==} + '@tiptap/react@3.20.1': + resolution: {integrity: sha512-UH1NpVpCaZBGB3Yr5N6aTS+rsCMDl9wHfrt/w+6+Gz4KHFZ2OILA82hELxZzhNc1Lmjz8vgCArKcsYql9gbzJA==} peerDependencies: - '@tiptap/core': ^3.16.0 - '@tiptap/pm': ^3.16.0 + '@tiptap/core': ^3.20.1 + '@tiptap/pm': ^3.20.1 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.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@3.16.0': - resolution: {integrity: sha512-eWi+77SgKyhSx91Hmn32ER+gPN6FfInGtod4A+XxSG+LqS/sn6kpUEdowYrnqiZzhUXZCSTSJvC+UcMUZHOkxQ==} - - '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + '@tiptap/starter-kit@3.20.1': + resolution: {integrity: sha512-opqWxL/4OTEiqmVC0wsU4o3JhAf6LycJ2G/gRIZVAIFLljI9uHfpPMTFGxZ5w9IVVJaP5PJysfwW/635kKqkrw==} '@tree-sitter-grammars/tree-sitter-yaml@0.7.1': resolution: {integrity: sha512-AynBwkIoQCTgjDR33bDUp9Mqq+YTco0is3n5hRApMqG9of/6A4eQsfC1/uSEeHSUyMQSYawcAWamsexnVpIP4Q==} @@ -4752,19 +4857,19 @@ packages: tree-sitter: optional: true - '@trpc/client@11.8.1': - resolution: {integrity: sha512-L/SJFGanr9xGABmuDoeXR4xAdHJmsXsiF9OuH+apecJ+8sUITzVT1EPeqp0ebqA6lBhEl5pPfg3rngVhi/h60Q==} + '@trpc/client@11.12.0': + resolution: {integrity: sha512-zTwFKQdE99pvNm7kXFdHo5xIQpGqpQJHtqVkT9o+i8h/0fbDOUBEEbFVICiMsNA+GiXskoaDRX2l+z6ir+Ug3w==} peerDependencies: - '@trpc/server': 11.8.1 + '@trpc/server': 11.12.0 typescript: '>=5.7.2' - '@trpc/next@11.8.1': - resolution: {integrity: sha512-nn9e7+k4uWaZnB2fruH1qoBKni2LG+FRNxvddp1pFzjsyNFdPWFiHWKTM8/McDFw6GQ2CorXs+ceCfgFNA+9zQ==} + '@trpc/next@11.12.0': + resolution: {integrity: sha512-e1EQoA2Jyzag77XVdiD+iv7WjDnT8FFIPzpshaU5PNTaj/OX/ELlP8VqERxnI6qnNI6LLBcbabfXGukmi5byug==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.8.1 - '@trpc/react-query': 11.8.1 - '@trpc/server': 11.8.1 + '@trpc/client': 11.12.0 + '@trpc/react-query': 11.12.0 + '@trpc/server': 11.12.0 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' @@ -4775,52 +4880,59 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.8.1': - resolution: {integrity: sha512-0Vu55ld/oINb4U6nIPPi7eZMhxUop6K+4QUK90RVsfSD5r+957sM80M4c8bjh/JBZUxMFv9JOhxxlWcrgHxHow==} + '@trpc/react-query@11.12.0': + resolution: {integrity: sha512-SLJLlQw0XVc+oVD5RITLl0G7cAFJ4oSJXUcblTS8CKUET+J4r/Ot2hKfX+qhENcFM1ChllbwMrCbUHNOH7qU1A==} peerDependencies: '@tanstack/react-query': ^5.80.3 - '@trpc/client': 11.8.1 - '@trpc/server': 11.8.1 + '@trpc/client': 11.12.0 + '@trpc/server': 11.12.0 react: '>=18.2.0' - react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@trpc/server@11.8.1': - resolution: {integrity: sha512-P4rzZRpEL7zDFgjxK65IdyH0e41FMFfTkQkuq0BA5tKcr7E6v9/v38DEklCpoDN6sPiB1Sigy/PUEzHENhswDA==} + '@trpc/server@11.12.0': + resolution: {integrity: sha512-rpZnf5FUjNndE/AjGIy+FvEHR52iBd0u0wySqWCwXj67wraj3qCuBr5Opcf0Te/g67C/YztqceFkLoG0r4mp4Q==} peerDependencies: typescript: '>=5.7.2' - '@trpc/tanstack-react-query@11.8.1': - resolution: {integrity: sha512-0gBbRmRuU9/IVZgNFJuzY7k6ktnkmqjyP78PtcUBO7EgPlBu1y2MA2TdI5GT/VtNNOOhzkVeQpJqtt+0xQ8TOQ==} + '@trpc/tanstack-react-query@11.12.0': + resolution: {integrity: sha512-CIOR3shjVgvTcsbsqb4X2pQCbJ1I2+2j6tqDX4aFKLdqz0S32Y+iPH3ArDowrlS0npWycfkgsEEX3qwgP0j0vg==} peerDependencies: '@tanstack/react-query': ^5.80.3 - '@trpc/client': 11.8.1 - '@trpc/server': 11.8.1 + '@trpc/client': 11.12.0 + '@trpc/server': 11.12.0 react: '>=18.2.0' - react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@tsconfig/svelte@1.0.13': resolution: {integrity: sha512-5lYJP45Xllo4yE/RUBccBT32eBlRDbqN8r1/MIvQbKxW3aFqaYPCNgm8D5V20X4ShHcwvYWNlKg3liDh1MlBoA==} - '@turbo/gen@2.7.5': - resolution: {integrity: sha512-KzQUYXifcdzPxJcl0r4dPXObd5r/FKGR5EA3LEYc3BBO3kxHT6XIJkoG4V4VpPYbXSOrwjJs8pURjReiEobYGQ==} - hasBin: true + '@turbo/gen-darwin-64@2.8.16': + resolution: {integrity: sha512-WhRCknwFe4/1UAd24i+gUqGK8Hko06gaRVT0eL7H+cMO8ucBBueyvSx/zBiYvI6mnTkiVvf9frAhEKczJNdfaw==} + cpu: [x64] + os: [darwin] - '@turbo/workspaces@2.7.5': - resolution: {integrity: sha512-a14XS/dQH1387jFnzkPzIdL52JR9XA2ud8pfecl51zrjvh5GKevBPE37z7iFRqnt7g921pCWfn9i9hW5gPjo7Q==} + '@turbo/gen-darwin-arm64@2.8.16': + resolution: {integrity: sha512-AZOzR0Q8LP11EXR4PzmS0hawWVfNn5cMKaE7tIcej0JhX15tdCtYyPRy3mvyiukairhT18E0M5gxn+I6sbG5uQ==} + cpu: [arm64] + os: [darwin] + + '@turbo/gen-linux-64@2.8.16': + resolution: {integrity: sha512-zS3Tg3kZffCFkRr41Tly7CHJffYrjCEGwCPMzguUpsnsqA6SRQuzrvQPzamZ/RLXwKDLBY2UtUr5NqQhtJA3fA==} + cpu: [x64] + os: [linux] + + '@turbo/gen-linux-arm64@2.8.16': + resolution: {integrity: sha512-+SLJP0oG1jDj1It8IuW00dXREqL2kNY110DRZZzkVcLvcvbrCNGLYpjUhKfqjV0MapmLlb7++1lbNNNCPQ7h0g==} + cpu: [arm64] + os: [linux] + + '@turbo/gen-windows-64@2.8.16': + resolution: {integrity: sha512-a5+vw5XfGeBqX54mfYRvLb/rq5Z6Ys5cihNAre0+NZaSNufjj+uWnK4NeMNLXcihJZhOvbAwphPvJuPgKW5hCg==} + cpu: [x64] + os: [win32] + + '@turbo/gen@2.8.16': + resolution: {integrity: sha512-17IFXcVnQ8qaC8kMtRKqFXZKerSpXunIu1E3F9eHSeBIVm2jr4x9KpQdgbXSgLZuLfPCb099JJdgpgPI7tJxNw==} hasBin: true '@types/adm-zip@0.5.7': @@ -4913,11 +5025,8 @@ packages: '@types/docker-modem@3.0.6': resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} - '@types/dockerode@3.3.47': - resolution: {integrity: sha512-ShM1mz7rCjdssXt7Xz0u1/R2BJC7piWa3SJpUBiVjCf2A3XNn4cP6pUVaD8bLanpPVVn4IKzJuw3dOvkJ8IbYw==} - - '@types/dockerode@4.0.0': - resolution: {integrity: sha512-NBm/UIL1KYWivh9ihJELK4Jv0dzOQCleS0OT5JklErra8mZ/t0UQpHfTkMmPrAqtra7OyFius1EFLVs0DhiHQA==} + '@types/dockerode@4.0.1': + resolution: {integrity: sha512-cmUpB+dPN955PxBEuXE3f6lKO1hHiIGYJA46IVF3BJpNsZGvtBDcRnlrHYHtOH/B6vtDOyl2kZ2ShAu3mgc27Q==} '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -4931,17 +5040,14 @@ packages: '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - '@types/glob@7.2.0': - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - '@types/inquirer@6.5.0': - resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==} + '@types/inquirer@9.0.9': + resolution: {integrity: sha512-/mWx5136gts2Z2e5izdoRCo46lPp5TMs9R15GTSsgg/XnZyxDWVqoVU3R9lWnccKpqwsJLvRoxbCjoJtZB7DSw==} '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} @@ -4970,9 +5076,6 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/minimatch@5.1.2': - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -4988,17 +5091,20 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@24.10.9': - resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} + '@types/node@24.12.0': + resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/pg@8.16.0': - resolution: {integrity: sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==} + '@types/pg@8.18.0': + resolution: {integrity: sha512-gT+oueVQkqnj6ajGJXblFR4iavIXWsGAFCk3dP4Kki5+a9R4NMt0JARdk6s8cUKcfUoqP5dAtDSLU8xYUTFV+Q==} - '@types/prismjs@1.26.5': - resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} + '@types/picomatch@4.0.2': + resolution: {integrity: sha512-qHHxQ+P9PysNEGbALT8f8YOSHW0KJu6l2xU8DYY0fu/EmGxXdVnuTLvFUvBgPJMSqXq29SYHveejeAha+4AYgA==} + + '@types/prismjs@1.26.6': + resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==} '@types/qs@6.9.16': resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} @@ -5014,8 +5120,8 @@ packages: peerDependencies: '@types/react': ^19.2.0 - '@types/react@19.2.8': - resolution: {integrity: sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==} + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -5044,9 +5150,6 @@ packages: '@types/through@0.0.33': resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} - '@types/tinycolor2@1.4.6': - resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} - '@types/triple-beam@1.3.5': resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} @@ -5071,63 +5174,63 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.53.1': - resolution: {integrity: sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==} + '@typescript-eslint/eslint-plugin@8.57.0': + resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.53.1 - eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/parser': ^8.57.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.53.1': - resolution: {integrity: sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==} + '@typescript-eslint/parser@8.57.0': + resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.53.1': - resolution: {integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==} + '@typescript-eslint/project-service@8.57.0': + resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.53.1': - resolution: {integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==} + '@typescript-eslint/scope-manager@8.57.0': + resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.53.1': - resolution: {integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==} + '@typescript-eslint/tsconfig-utils@8.57.0': + resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.53.1': - resolution: {integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==} + '@typescript-eslint/type-utils@8.57.0': + resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.53.1': - resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==} + '@typescript-eslint/types@8.57.0': + resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.53.1': - resolution: {integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==} + '@typescript-eslint/typescript-estree@8.57.0': + resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.53.1': - resolution: {integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==} + '@typescript-eslint/utils@8.57.0': + resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.53.1': - resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} + '@typescript-eslint/visitor-keys@8.57.0': + resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -5136,8 +5239,8 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@videojs/http-streaming@3.17.2': - resolution: {integrity: sha512-VBQ3W4wnKnVKb/limLdtSD2rAd5cmHN70xoMf4OmuDd0t2kfJX04G+sfw6u2j8oOm2BXYM9E1f4acHruqKnM1g==} + '@videojs/http-streaming@3.17.4': + resolution: {integrity: sha512-XAvdG2dolBuV2Fx8bu1kjmQ2D4TonGzZH68Pgv/O9xMSFWdZtITSMFismeQLEAtMmGwze8qNJp3RgV+jStrJqg==} engines: {node: '>=8', npm: '>=5'} peerDependencies: video.js: ^8.19.0 @@ -5153,26 +5256,26 @@ packages: '@videojs/xhr@2.7.0': resolution: {integrity: sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==} - '@vitejs/plugin-react@5.1.2': - resolution: {integrity: sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==} + '@vitejs/plugin-react@5.1.4': + resolution: {integrity: sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: '>=7.3.1' - '@vitest/coverage-v8@4.0.17': - resolution: {integrity: sha512-/6zU2FLGg0jsd+ePZcwHRy3+WpNTBBhDY56P4JTRqUN/Dp6CvOEa9HrikcQ4KfV2b2kAHUFB4dl1SuocWXSFEw==} + '@vitest/coverage-v8@4.0.18': + resolution: {integrity: sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==} peerDependencies: - '@vitest/browser': 4.0.17 - vitest: 4.0.17 + '@vitest/browser': 4.0.18 + vitest: 4.0.18 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.17': - resolution: {integrity: sha512-mEoqP3RqhKlbmUmntNDDCJeTDavDR+fVYkSOw8qRwJFaW/0/5zA9zFeTrHqNtcmwh6j26yMmwx2PqUDPzt5ZAQ==} + '@vitest/expect@4.0.18': + resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} - '@vitest/mocker@4.0.17': - resolution: {integrity: sha512-+ZtQhLA3lDh1tI2wxe3yMsGzbp7uuJSWBM1iTIKCbppWTSBN09PUC+L+fyNlQApQoR+Ps8twt2pbSSXg2fQVEQ==} + '@vitest/mocker@4.0.18': + resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -5182,25 +5285,25 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.17': - resolution: {integrity: sha512-Ah3VAYmjcEdHg6+MwFE17qyLqBHZ+ni2ScKCiW2XrlSBV4H3Z7vYfPfz7CWQ33gyu76oc0Ai36+kgLU3rfF4nw==} + '@vitest/pretty-format@4.0.18': + resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==} - '@vitest/runner@4.0.17': - resolution: {integrity: sha512-JmuQyf8aMWoo/LmNFppdpkfRVHJcsgzkbCA+/Bk7VfNH7RE6Ut2qxegeyx2j3ojtJtKIbIGy3h+KxGfYfk28YQ==} + '@vitest/runner@4.0.18': + resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==} - '@vitest/snapshot@4.0.17': - resolution: {integrity: sha512-npPelD7oyL+YQM2gbIYvlavlMVWUfNNGZPcu0aEUQXt7FXTuqhmgiYupPnAanhKvyP6Srs2pIbWo30K0RbDtRQ==} + '@vitest/snapshot@4.0.18': + resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==} - '@vitest/spy@4.0.17': - resolution: {integrity: sha512-I1bQo8QaP6tZlTomQNWKJE6ym4SHf3oLS7ceNjozxxgzavRAgZDc06T7kD8gb9bXKEgcLNt00Z+kZO6KaJ62Ew==} + '@vitest/spy@4.0.18': + resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==} - '@vitest/ui@4.0.17': - resolution: {integrity: sha512-hRDjg6dlDz7JlZAvjbiCdAJ3SDG+NH8tjZe21vjxfvT2ssYAn72SRXMge3dKKABm3bIJ3C+3wdunIdur8PHEAw==} + '@vitest/ui@4.0.18': + resolution: {integrity: sha512-CGJ25bc8fRi8Lod/3GHSvXRKi7nBo3kxh0ApW4yCjmrWmRmlT53B5E08XRSZRliygG0aVNxLrBEqPYdz/KcCtQ==} peerDependencies: - vitest: 4.0.17 + vitest: 4.0.18 - '@vitest/utils@4.0.17': - resolution: {integrity: sha512-RG6iy+IzQpa9SB8HAFHJ9Y+pTzI+h8553MrciN9eC6TFBErqrQaTas4vG+MVj8S4uKk8uTT2p0vgZPnTdxd96w==} + '@vitest/utils@4.0.18': + resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -5292,17 +5395,13 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true @@ -5351,11 +5450,11 @@ packages: peerDependencies: ajv: ^8.8.2 - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -5372,10 +5471,6 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - ansi-regex@6.2.2: resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} @@ -5406,9 +5501,6 @@ packages: resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} engines: {node: '>= 14'} - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -5444,10 +5536,6 @@ packages: resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - array.prototype.findlast@1.2.5: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} @@ -5490,10 +5578,6 @@ packages: ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} - engines: {node: '>=4'} - ast-types@0.14.2: resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} engines: {node: '>=4'} @@ -5529,8 +5613,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - avvio@9.1.0: - resolution: {integrity: sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==} + avvio@9.2.0: + resolution: {integrity: sha512-2t/sy01ArdHHE0vRH5Hsay+RtCZt3dLPji7W7/MMOCEgze5b7SNDC4j5H6FnVgPkI1MTNFGzHdHrVXDDl7QSSQ==} aws-ssl-profiles@1.1.2: resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==} @@ -5562,9 +5646,9 @@ packages: bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - balanced-match@3.0.1: - resolution: {integrity: sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==} - engines: {node: '>= 16'} + balanced-match@4.0.2: + resolution: {integrity: sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==} + engines: {node: 20 || >=22} bare-events@2.5.4: resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} @@ -5614,9 +5698,9 @@ packages: resolution: {integrity: sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==} hasBin: true - basic-ftp@5.0.5: - resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} - engines: {node: '>=10.0.0'} + baseline-browser-mapping@2.9.19: + resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} + hasBin: true bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} @@ -5654,9 +5738,13 @@ packages: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} engines: {node: '>=10'} - brace-expansion@4.0.1: - resolution: {integrity: sha512-YClrbvTCXGe70pU2JiEiPLYXO9gQkyxYeKpJIQHVS/gOs6EWMQP2RYBwjFLNT322Ji8TOC3IMPfsYCedNpzKfA==} - engines: {node: '>= 18'} + brace-expansion@5.0.2: + resolution: {integrity: sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==} + engines: {node: 20 || >=22} + + brace-expansion@5.0.4: + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + engines: {node: 18 || 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -5672,8 +5760,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - browserslist@4.28.0: - resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -5694,9 +5782,6 @@ packages: resolution: {integrity: sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==} engines: {node: '>=10.0.0'} - builtins@5.1.0: - resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} - byline@5.0.0: resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==} engines: {node: '>=0.10.0'} @@ -5733,9 +5818,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camel-case@3.0.0: - resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} - camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} @@ -5747,6 +5829,9 @@ packages: caniuse-lite@1.0.30001755: resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==} + caniuse-lite@1.0.30001766: + resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -5758,10 +5843,6 @@ packages: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -5770,8 +5851,8 @@ packages: resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - change-case@3.1.0: - resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==} + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} @@ -5789,8 +5870,8 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} chokidar@4.0.0: resolution: {integrity: sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==} @@ -5849,9 +5930,9 @@ packages: resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -5919,10 +6000,6 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@10.0.0: - resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} - engines: {node: '>=14'} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -5945,15 +6022,12 @@ packages: resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} engines: {node: '>=8'} - constant-case@2.0.0: - resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} - conventional-changelog-angular@8.0.0: resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} engines: {node: '>=18'} - conventional-changelog-conventionalcommits@9.1.0: - resolution: {integrity: sha512-MnbEysR8wWa8dAEvbj5xcBgJKQlX/m0lhS8DsyAAWDHdfs2faDJxTgzRYlRYpXSe7UiKrIIlB4TrBKU9q9DgkA==} + conventional-changelog-conventionalcommits@9.3.0: + resolution: {integrity: sha512-kYFx6gAyjSIMwNtASkI3ZE99U1fuVDJr0yTYgVy+I2QG46zNZfl2her+0+eoviG82c5WQvW1jMt1eOQTeJLodA==} engines: {node: '>=18'} conventional-changelog-writer@8.0.0: @@ -5984,8 +6058,8 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} cookies@0.9.1: @@ -6031,9 +6105,6 @@ packages: resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} engines: {node: '>= 14'} - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - crelt@1.0.6: resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} @@ -6075,8 +6146,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@5.3.4: - resolution: {integrity: sha512-KyOS/kJMEq5O9GdPnaf82noigg5X5DYn0kZPJTaAsCUaBizp6Xa1y9D4Qoqf/JazEXWuruErHgVXwjN5391ZJw==} + cssstyle@6.0.1: + resolution: {integrity: sha512-IoJs7La+oFp/AB033wBStxNOJt4+9hHMxsXUPANcoXL2b3W4DZKghlJ2cI/eyeRZIQ9ysvYEorVhjrcYctWbog==} engines: {node: '>=20'} csstype@3.2.3: @@ -6129,13 +6200,9 @@ packages: damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - data-uri-to-buffer@6.0.2: - resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} - engines: {node: '>= 14'} - - data-urls@6.0.0: - resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==} - engines: {node: '>=20'} + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} @@ -6250,14 +6317,6 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} - engines: {node: '>= 14'} - - del@5.1.0: - resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} - engines: {node: '>=8'} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -6303,23 +6362,22 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + diff@5.2.2: + resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} engines: {node: '>=0.3.1'} dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dns-caching@0.2.9: resolution: {integrity: sha512-FSvmI/dC/HXYIyX2m7MvQt36Yut49GCw3hWaDqaTgLLmKyLs5lmv/jhmNKqWjSF2vRGTgFYL0G3mwcjLlKXj0w==} - docker-compose@1.3.0: - resolution: {integrity: sha512-7Gevk/5eGD50+eMD+XDnFnOrruFkL0kSd7jEG4cjmqweDSUhB7i0g8is/nBdVpl+Bx338SqIB2GLKm32M+Vs6g==} + docker-compose@1.3.1: + resolution: {integrity: sha512-rF0wH69G3CCcmkN9J1RVMQBaKe8o77LT/3XmqcLIltWWVxcWAzp2TnO7wS3n/umZHN3/EVrlT3exSBMal+Ou1w==} engines: {node: '>= 6.0.0'} docker-modem@5.0.6: @@ -6343,11 +6401,8 @@ packages: dompurify@3.2.6: resolution: {integrity: sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==} - dompurify@3.3.1: - resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} - - dot-case@2.1.1: - resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} + dompurify@3.3.3: + resolution: {integrity: sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==} dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} @@ -6369,16 +6424,16 @@ packages: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} - dotenv@17.2.3: - resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} + dotenv@17.3.1: + resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} engines: {node: '>=12'} drange@1.1.1: resolution: {integrity: sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==} engines: {node: '>=4'} - drizzle-kit@0.31.8: - resolution: {integrity: sha512-O9EC/miwdnRDY10qRxM8P3Pg8hXe3LyU4ZipReKOgTwn4OqANmftj8XJz1UPUAS6NMHf0E2htjsbQujUTkncCg==} + drizzle-kit@0.31.9: + resolution: {integrity: sha512-GViD3IgsXn7trFyBUUHyTFBpH/FsHTxYJ66qdbVggxef4UBPHRYxQaRzYLTuekYnk9i5FIEL9pbBIwMqX/Uwrg==} hasBin: true drizzle-orm@0.45.1: @@ -6489,14 +6544,14 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - effect@3.19.4: - resolution: {integrity: sha512-gApFffMwpDVgmw/FzCaYWt6zw4m0xAnQf5+cPS0+Sl85AxfeovJeEIsiEQVlk+ZvtBYcoPXxi65GIyruzanQ5g==} + effect@3.19.19: + resolution: {integrity: sha512-Yc8U/SVXo2dHnaP7zNBlAo83h/nzSJpi7vph6Hzyl4ulgMBIgPmz3UzOjb9sBgpFE00gC0iETR244sfXDNLHRg==} electron-to-chromium@1.5.114: resolution: {integrity: sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==} - electron-to-chromium@1.5.256: - resolution: {integrity: sha512-uqYq1IQhpXXLX+HgiXdyOZml7spy4xfy42yPxcCCRjswp0fYM2X+JwCON07lqnpLEGVCj739B7Yr+FngmHBMEQ==} + electron-to-chromium@1.5.282: + resolution: {integrity: sha512-FCPkJtpst28UmFzd903iU7PdeVTfY0KAeJy+Lk0GLZRwgwYHn/irRcaCbQQOmr5Vytc/7rcavsYLvTM8RiHYhQ==} electron-to-chromium@1.5.55: resolution: {integrity: sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==} @@ -6534,8 +6589,8 @@ packages: resolution: {integrity: sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==} engines: {node: '>=10.2.0'} - enhanced-resolve@5.18.3: - resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + enhanced-resolve@5.20.0: + resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==} engines: {node: '>=10.13.0'} entities@4.5.0: @@ -6633,15 +6688,15 @@ packages: esbuild-register@3.6.0: resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} peerDependencies: - esbuild: '>=0.27.2' + esbuild: '>=0.27.3' esbuild@0.25.12: resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true - esbuild@0.27.2: - resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} engines: {node: '>=18'} hasBin: true @@ -6665,19 +6720,14 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - eslint-config-prettier@10.1.8: resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true peerDependencies: eslint: '>=7.0.0' - eslint-config-turbo@2.7.5: - resolution: {integrity: sha512-LKgZM73MqmEEwo1nEqnX6aNQoZ7ASL93H3Zb8PG6bYE9kI4aM2CFnOFKJf6lTQPBV92N5pdaxz1bE47J2LUdFw==} + eslint-config-turbo@2.8.16: + resolution: {integrity: sha512-7JY6vlgFZWUH1YlLpxQjgia3bjcIpWxYahDQ/XfXSU5etv2KyEPY/O6jK/8Tg+Z2xjZm8ZQFgqK15K5MLIQAFA==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -6734,8 +6784,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-turbo@2.7.5: - resolution: {integrity: sha512-dHUEEZyoUriaYqaqu6nlnkj0W+iDPYFhuMjLYGxn7p767kLCYTZgjR42urW56VLiRQUqDL+foOXufFM6+kXCEQ==} + eslint-plugin-turbo@2.8.16: + resolution: {integrity: sha512-fhvTLe0PnyV72npfBi/IwwVMzkTnUw9MxS2S2Q0Oo1aed7woAtHwSL5DEdTTV6tXZSKbqRHaIbjV6rwx+1iRYA==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -6756,8 +6806,12 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.39.2: - resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} + eslint-visitor-keys@5.0.0: + resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.4: + resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -6844,10 +6898,6 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - fast-check@3.23.2: resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} engines: {node: '>=8.0.0'} @@ -6868,26 +6918,18 @@ packages: fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - fast-json-patch@3.1.1: resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-json-stringify@6.0.1: - resolution: {integrity: sha512-s7SJE83QKBZwg54dIbD5rCtzOBVD43V1ReWXXYqBgwCwHLYAAT0RQc/FmrQglXqWPpz6omtryJQOau5jI4Nrvg==} + fast-json-stringify@6.3.0: + resolution: {integrity: sha512-oRCntNDY/329HJPlmdNLIdogNtt6Vyjb1WuT01Soss3slIdyUp8kAcDU3saQTOquEK8KFVfwIIF7FebxUAu+yA==} fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -6895,11 +6937,14 @@ packages: fast-querystring@1.1.2: resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fast-xml-parser@5.3.3: - resolution: {integrity: sha512-2O3dkPAAC6JavuMm8+4+pgTk+5hoAs+CjZ+sWcQLkX9+/tHRuTkQh/Oaifr8qDmZ8iEHb771Ea6G8CdwkrgvYA==} + fast-xml-builder@1.0.0: + resolution: {integrity: sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==} + + fast-xml-parser@5.4.2: + resolution: {integrity: sha512-pw/6pIl4k0CSpElPEJhDppLzaixDEuWui2CUQQBH/ECDf7+y6YwA4Gf7Tyb0Rfe4DIMuZipYj4AEL0nACKglvQ==} hasBin: true faster-babel-types@0.1.0: @@ -6908,11 +6953,11 @@ packages: peerDependencies: '@babel/types': ^7 - fastify@5.7.1: - resolution: {integrity: sha512-ZW7S4fxlZhE+tYWVokFzjh+i56R+buYKNGhrVl6DtN8sxkyMEzpJnzvO8A/ZZrsg5w6X37u6I4EOQikYS5DXpA==} + fastify@5.8.2: + resolution: {integrity: sha512-lZmt3navvZG915IE+f7/TIVamxIwmBd+OMB+O9WBzcpIwOo6F0LTh0sluoMFk5VkrKTvvrwIaoJPkir4Z+jtAg==} - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fault@1.0.4: resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} @@ -6942,10 +6987,6 @@ packages: resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} engines: {node: '>=4'} - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - figures@6.1.0: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} @@ -6965,8 +7006,8 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - find-my-way@9.3.0: - resolution: {integrity: sha512-eRoFWQw+Yv2tuYlK2pjFS2jGXSxSppAs3hSQjfxVKxM5amECzIgYYc1FEI8ZmhSh/Ig+FrKEz43NLRKJjYCZVg==} + find-my-way@9.5.0: + resolution: {integrity: sha512-VW2RfnmscZO5KgBY5XVyKREMW5nMZcxDy+buTOsL+zIPnBlbKm+00sgzoQzq1EVh4aALZLfKdwv6atBGcjvjrQ==} engines: {node: '>=20'} find-up-simple@1.0.0: @@ -7036,17 +7077,10 @@ packages: fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} - 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} @@ -7143,16 +7177,12 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.13.0: - resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + get-tsconfig@4.13.6: + resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} - get-uri@6.0.3: - resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} - engines: {node: '>= 14'} - git-hooks-list@4.1.1: resolution: {integrity: sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==} @@ -7175,15 +7205,12 @@ packages: glob@10.5.0: resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true - glob@13.0.0: - resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} - engines: {node: 20 || >=22} - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} @@ -7192,10 +7219,6 @@ packages: global@4.4.0: resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -7204,10 +7227,6 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globby@10.0.2: - resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} - engines: {node: '>=8'} - globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -7224,10 +7243,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - gradient-string@2.0.1: - resolution: {integrity: sha512-+xDOYR2fMa4QHGysTgyQsl8g16mcAKqvvsKI014qYP2XVf1SWUPlD8KhdBJPUM8AVwDUB+ls0NFkqRzAB5URkA==} - engines: {node: '>=10'} - h3@1.15.1: resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} @@ -7290,9 +7305,6 @@ packages: hastscript@9.0.1: resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} - header-case@1.0.1: - resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==} - hermes-estree@0.21.1: resolution: {integrity: sha512-ayfESdfG0wZM32uGw0CMfcW6pW6RM8htLXZI56A4rr7hIOjmKw+wd3+71wUc1uQfn90ZyY1NMCbQeMnunrIidg==} @@ -7305,8 +7317,8 @@ packages: highlightjs-vue@1.0.0: resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==} - hono@4.11.4: - resolution: {integrity: sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==} + hono@4.12.7: + resolution: {integrity: sha512-jq9l1DM0zVIvsm3lv9Nw9nlJnMNPOcAtsbsgiUhWcFzPE99Gvo6yRTlszSLLYacMeQ6quHD6hMfId8crVHvexw==} engines: {node: '>=16.9.0'} hook-std@4.0.0: @@ -7379,10 +7391,13 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} - iconv-lite@0.7.0: - resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} + icu-minify@4.8.3: + resolution: {integrity: sha512-65Av7FLosNk7bPbmQx5z5XG2Y3T2GFppcjiXh4z1idHeVgQxlDpAmkGoYI0eFzAvrOnjpWTL5FmPDhsdfRMPEA==} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -7428,10 +7443,6 @@ packages: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} - index-to-position@0.1.2: - resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} - engines: {node: '>=18'} - index-to-position@1.2.0: resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} engines: {node: '>=18'} @@ -7440,10 +7451,6 @@ packages: resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} engines: {node: '>= 0.8.0'} - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -7457,13 +7464,9 @@ packages: inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - - inquirer@8.2.4: - resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} - engines: {node: '>=12.0.0'} + inquirer@9.3.8: + resolution: {integrity: sha512-pFGGdaHrmRKMh4WoDDSowddgjT1Vkl90atobmTeSmcPGdYiwikch/m/Ef5wRaiamHejtw0cUUMMerzDUXCci2w==} + engines: {node: '>=18'} internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} @@ -7477,8 +7480,8 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} - intl-messageformat@10.7.1: - resolution: {integrity: sha512-xQuJW2WcyzNJZWUu5xTVPOmNSA1Sowuu/NKFdUid5Fxx/Yl6/s4DefTU/y7zy+irZLDmFGmTLtnM8FqpN05wlA==} + intl-messageformat@11.1.1: + resolution: {integrity: sha512-vnrF2f4vfsdaFY6tuLZfzGcx1GZFMFAq6c7QdK3HSXNcGXEIQncNgbeAcnpjAOszQzq3Jbol2SwgshIGY08WyA==} into-stream@7.0.0: resolution: {integrity: sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==} @@ -7487,16 +7490,16 @@ packages: invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - ioredis@5.9.2: - resolution: {integrity: sha512-tAAg/72/VxOUW7RQSX1pIxJVucYKcjFjfvj60L57jrZpYCHC3XN0WCQ3sNYL4Gmvv+7GPvTAjc+KSdeNuE8oWQ==} + ioredis@5.10.0: + resolution: {integrity: sha512-HVBe9OFuqs+Z6n64q09PQvP1/R4Bm+30PAyyD4wIEqssh3v9L21QjCVk4kRLucMBcDokJTcLjsGeVRlq/nH6DA==} engines: {node: '>=12.22.0'} ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + ipaddr.js@2.3.0: + resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} engines: {node: '>= 10'} iron-webcrypto@1.2.1: @@ -7610,9 +7613,6 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - is-lower-case@1.1.3: - resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==} - is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -7641,10 +7641,6 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} - is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} @@ -7726,9 +7722,6 @@ packages: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} - is-upper-case@1.1.2: - resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} - is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -7761,20 +7754,20 @@ packages: isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - isbinaryfile@4.0.10: - resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} - engines: {node: '>= 8.0.0'} + isbinaryfile@5.0.7: + resolution: {integrity: sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==} + engines: {node: '>= 18.0.0'} isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} + isexe@3.1.5: + resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} + engines: {node: '>=18'} - isomorphic-dompurify@2.35.0: - resolution: {integrity: sha512-a9+LQqylQCU8f1zmsYmg2tfrbdY2YS/Hc+xntcq/mDI2MY3Q108nq8K23BWDIg6YGC5JsUMC15fj2ZMqCzt/+A==} - engines: {node: '>=20.19.5'} + isomorphic-dompurify@3.1.0: + resolution: {integrity: sha512-mwWh3/+EQPeBvUAfZZDG5Tmyvr/yKxKB8VYSdw6c+3hMfW4FZZ93kxdohpHmtmSRUWX/jOJQtVObeA6cBLvosA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} isomorphic-fetch@3.0.0: resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} @@ -7807,6 +7800,10 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@4.2.3: + resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} + engines: {node: 20 || >=22} + java-properties@1.0.2: resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==} engines: {node: '>= 0.6.0'} @@ -7818,8 +7815,8 @@ packages: jose@6.0.8: resolution: {integrity: sha512-EyUPtOKyTYq+iMOszO42eobQllaIjJnwkZ2U93aJzNyPibCy7CEvT9UQnaCVB51IAd49gbNdCew1c0LcLTCB2g==} - jotai@2.16.2: - resolution: {integrity: sha512-DH0lBiTXvewsxtqqwjDW6Hg9JPTDnq9LcOsXSFWCAUEt+qj5ohl9iRVX9zQXPPHKLXCdH+5mGvM28fsXMl17/g==} + jotai@2.18.1: + resolution: {integrity: sha512-e0NOzK+yRFwHo7DOp0DS0Ycq74KMEAObDWFGmfEL28PD9nLqBTt3/Ug7jf9ca72x0gC9LQZG9zH+0ISICmy3iA==} engines: {node: '>=12.20.0'} peerDependencies: '@babel/core': '>=7.0.0' @@ -7859,8 +7856,8 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdom@27.4.0: - resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} + jsdom@28.1.0: + resolution: {integrity: sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -7886,8 +7883,8 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-ref-resolver@2.0.1: - resolution: {integrity: sha512-HG0SIB9X4J8bwbxCbnd5FfPEbcXAJYTi1pBJeP/QPON+w8ovSME8iRG+ElHNxZNX2Qh6eYn1GdzJFS4cDFfx0Q==} + json-schema-ref-resolver@3.0.0: + resolution: {integrity: sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==} json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -7953,8 +7950,8 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - ldapts@8.1.3: - resolution: {integrity: sha512-kEU3GDh48ZymnyLGsFprai2v4r7Gyxe6niBlUUw3xnOGpq5O+XODmXJ8gBwbPIg35qt5cnYVC80NNSdAkb2dJg==} + ldapts@8.1.7: + resolution: {integrity: sha512-TJl6T92eIwMf/OJ0hDfKVa6ISwzo+lqCWCI5Mf//ARlKa3LKQZaSrme/H2rCRBhW0DZCQlrsV+fgoW5YHRNLUw==} engines: {node: '>=20'} levn@0.4.1: @@ -8014,10 +8011,6 @@ packages: lodash.escaperegexp@4.1.2: resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} - lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. - lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} @@ -8036,10 +8029,6 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-symbols@3.0.0: - resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} - engines: {node: '>=8'} - log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} @@ -8048,8 +8037,8 @@ packages: resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} engines: {node: '>= 12.0.0'} - long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -8058,35 +8047,29 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - lower-case-first@1.0.2: - resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==} - - lower-case@1.1.4: - resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} - lowlight@1.20.0: resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.2: - resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} - engines: {node: 20 || >=22} - lru-cache@11.2.4: resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} engines: {node: 20 || >=22} + lru-cache@11.2.5: + resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==} + engines: {node: 20 || >=22} + + lru-cache@11.2.6: + resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - - lru.min@1.1.0: - resolution: {integrity: sha512-86xXMB6DiuKrTqkE/lRL0drlNh568awttBPJ7D66fzDHpy6NC5r3N+Ly/lKCS2zjmeGyvFDx670z0cD0PVBwGA==} + lru.min@1.1.4: + resolution: {integrity: sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==} engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'} m3u8-parser@7.2.0: @@ -8106,9 +8089,6 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - mantine-form-zod-resolver@1.3.0: resolution: {integrity: sha512-XlXXkJCYuUuOllW0zedYW+m/lbdFQ/bso1Vz+pJOYkxgjhoGvzN2EXWCS2+0iTOT9Q7WnOwWvHmvpTJN3PxSXw==} engines: {node: '>=16.6.0'} @@ -8296,25 +8276,20 @@ packages: resolution: {integrity: sha512-bjdr2xW1dBCMsMGGsUeqM4eFI60m94+szhxWys+B1ztIt6gWSfeGBdSVCIawezeHYLYn0j6zrsXdQS/JllBzww==} engines: {node: '>=6'} - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} + minimatch@10.2.2: + resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} + engines: {node: 18 || 20 || >=22} minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + minimatch@5.1.6: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} - minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - - minimatch@9.0.0: - resolution: {integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==} - engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -8326,18 +8301,18 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} hasBin: true @@ -8356,17 +8331,24 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} mux.js@7.1.0: resolution: {integrity: sha512-NTxawK/BBELJrYsZThEulyUMDVlLizKdxyAsMuzoCD1eFj97BVaA8D/CvKsKu6FOLYkFojN5CbM9h++ZTZtknA==} engines: {node: '>=8', npm: '>=5'} hasBin: true - mysql2@3.16.1: - resolution: {integrity: sha512-b75qsDB3ieYEzMsT1uRGsztM/sy6vWPY40uPZlVVl8eefAotFCoS7jaDB5DxDNtlW5kdVGd9jptSpkvujNxI2A==} + mysql2@3.19.1: + resolution: {integrity: sha512-yn4zh+Uxu5J3Zvi6Ao96lJ7BSBRkspHflWQAmOPND+htbpIKDQw99TTvPzgihKO/QyMickZopO4OsnixnpcUwA==} engines: {node: '>= 8.0'} + peerDependencies: + '@types/node': '>= 8' mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -8412,10 +8394,6 @@ packages: nerf-dart@1.0.0: resolution: {integrity: sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==} - netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} - engines: {node: '>= 0.4.0'} - next-auth@5.0.0-beta.30: resolution: {integrity: sha512-+c51gquM3F6nMVmoAusRJ7RIoY0K4Ts9HCCwyy/BRoe4mp3msZpOzYMyb5LAYc1wSo74PMQkGDcaghIO7W6Xjg==} peerDependencies: @@ -8432,11 +8410,11 @@ packages: nodemailer: optional: true - next-intl-swc-plugin-extractor@4.7.0: - resolution: {integrity: sha512-iAqflu2FWdQMWhwB0B2z52X7LmEpvnMNJXqVERZQ7bK5p9iqQLu70ur6Ka6NfiXLxfb+AeAkUX5qIciQOg+87A==} + next-intl-swc-plugin-extractor@4.8.3: + resolution: {integrity: sha512-YcaT+R9z69XkGhpDarVFWUprrCMbxgIQYPUaXoE6LGVnLjGdo8hu3gL6bramDVjNKViYY8a/pXPy7Bna0mXORg==} - next-intl@4.7.0: - resolution: {integrity: sha512-gvROzcNr/HM0jTzQlKWQxUNk8jrZ0bREz+bht3wNbv+uzlZ5Kn3J+m+viosub18QJ72S08UJnVK50PXWcUvwpQ==} + next-intl@4.8.3: + resolution: {integrity: sha512-PvdBDWg+Leh7BR7GJUQbCDVVaBRn37GwDBWc9sv0rVQOJDQ5JU1rVzx9EEGuOGYo0DHAl70++9LQ7HxTawdL7w==} peerDependencies: next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -8445,8 +8423,8 @@ packages: typescript: optional: true - next@16.1.4: - resolution: {integrity: sha512-gKSecROqisnV7Buen5BfjmXAm7Xlpx9o2ueVQRo5DxQcjC8d330dOM1xiGWc2k3Dcnz0In3VybyRPOsudwgiqQ==} + next@16.1.6: + resolution: {integrity: sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -8470,9 +8448,6 @@ packages: resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==} os: ['!win32'] - no-case@2.3.2: - resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} - node-abi@3.67.0: resolution: {integrity: sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==} engines: {node: '>=10'} @@ -8540,9 +8515,9 @@ packages: node-mock-http@1.0.2: resolution: {integrity: sha512-zWaamgDUdo9SSLw47we78+zYw/bDr5gH8pH7oRRs8V3KmBtu8GLgGIbV2p/gRPd3LWpEOpjQj7X1FOU3VFMJ8g==} - node-plop@0.26.3: - resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} - engines: {node: '>=8.9.4'} + node-plop@0.32.3: + resolution: {integrity: sha512-tn+OxutdqhvoByKJ7p84FZBSUDfUB76bcvj0ugLBvgE9V52LFcnz8cauCDKi6otnctvFCqa9XkrU35pBY5Baig==} + engines: {node: '>=18'} node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} @@ -8565,9 +8540,9 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-url@8.0.1: - resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} - engines: {node: '>=14.16'} + normalize-url@9.0.0: + resolution: {integrity: sha512-z9nC87iaZXXySbWWtTHfCFJyFvKaUAW6lODhikG7ILSbVgmwuFjUqkgnheHvAUcGedO29e2QGBRXMUD64aurqQ==} + engines: {node: '>=20'} npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} @@ -8755,10 +8730,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@4.1.1: - resolution: {integrity: sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==} - engines: {node: '>=8'} - ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -8798,10 +8769,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - p-map@7.0.3: resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} engines: {node: '>=18'} @@ -8818,23 +8785,12 @@ packages: resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} engines: {node: '>=4'} - pac-proxy-agent@7.2.0: - resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} - engines: {node: '>= 14'} - - pac-resolver@7.0.1: - resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} - engines: {node: '>= 14'} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - param-case@2.1.1: - resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -8850,10 +8806,6 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - parse-json@8.1.0: - resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} - engines: {node: '>=18'} - parse-json@8.3.0: resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} engines: {node: '>=18'} @@ -8878,12 +8830,6 @@ packages: parse5@8.0.0: resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} - pascal-case@2.0.1: - resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} - - path-case@2.1.1: - resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} - path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -8892,10 +8838,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -8911,9 +8853,9 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.1: - resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} - engines: {node: 20 || >=22} + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -8928,30 +8870,30 @@ packages: pg-cloudflare@1.3.0: resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} - pg-connection-string@2.10.0: - resolution: {integrity: sha512-ur/eoPKzDx2IjPaYyXS6Y8NSblxM7X64deV2ObV57vhjsWiwLvUD6meukAzogiOsu60GO8m/3Cb6FdJsWNjwXg==} + pg-connection-string@2.12.0: + resolution: {integrity: sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==} pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - pg-pool@3.11.0: - resolution: {integrity: sha512-MJYfvHwtGp870aeusDh+hg9apvOe2zmpZJpyt+BMtzUWlVqbhFmMK6bOBXLBUPd7iRtIF9fZplDc7KrPN3PN7w==} + pg-pool@3.13.0: + resolution: {integrity: sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==} peerDependencies: pg: '>=8.0' - pg-protocol@1.10.3: - resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} + pg-protocol@1.12.0: + resolution: {integrity: sha512-uOANXNRACNdElMXJ0tPz6RBM0XQ61nONGAwlt8da5zs/iUOOCLBQOHSXnrC6fMsvtjxbOJrZZl5IScGv+7mpbg==} - pg-protocol@1.11.0: - resolution: {integrity: sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==} + pg-protocol@1.13.0: + resolution: {integrity: sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==} pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg@8.17.1: - resolution: {integrity: sha512-EIR+jXdYNSMOrpRp7g6WgQr7SaZNZfS7IzZIO0oTNEeibq956JxeD15t3Jk3zZH0KH8DmOIx38qJfQenoE8bXQ==} + pg@8.20.0: + resolution: {integrity: sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==} engines: {node: '>= 16.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -8962,9 +8904,6 @@ packages: pgpass@1.0.5: resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -8984,14 +8923,14 @@ packages: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} - pino-abstract-transport@2.0.0: - resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + pino-abstract-transport@3.0.0: + resolution: {integrity: sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==} - pino-std-serializers@7.0.0: - resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + pino-std-serializers@7.1.0: + resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} - pino@10.1.0: - resolution: {integrity: sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==} + pino@10.3.1: + resolution: {integrity: sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==} hasBin: true piscina@4.6.1: @@ -9090,22 +9029,23 @@ packages: prebuild-install@7.1.2: resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} engines: {node: '>=10'} + deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. hasBin: true prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-packagejson@2.5.22: - resolution: {integrity: sha512-G6WalmoUssKF8ZXkni0+n4324K+gG143KPysSQNW+FrR0XyNb3BdRxchGC/Q1FE/F702p7/6KU7r4mv0WSWbzA==} + prettier-plugin-packagejson@3.0.2: + resolution: {integrity: sha512-kmoj3hEynXwoHDo8ZhmWAIjRBoQWCDUVackiWfSDWdgD0rS3LGB61T9zoVbume/cotYdCoadUh4sqViAmXvpBQ==} peerDependencies: - prettier: '>= 1.16.0' + prettier: ^3 peerDependenciesMeta: prettier: optional: true - prettier@3.8.0: - resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} hasBin: true @@ -9140,9 +9080,9 @@ packages: proper-lockfile@4.1.2: resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} - properties-reader@2.3.0: - resolution: {integrity: sha512-z597WicA7nDZxK12kZqHr2TcvwNU1GCfA5UwfDY/HDp3hXPoPlb5rlEx9bwGTiJnc0OqbBTkU975jDToth8Gxw==} - engines: {node: '>=14'} + properties-reader@3.0.1: + resolution: {integrity: sha512-WPn+h9RGEExOKdu4bsF4HksG/uzd3cFq3MFtq8PsFeExPse5Ha/VOjQNyHhjboBFwGXGev6muJYTSPAOkROq2g==} + engines: {node: '>=18'} property-information@7.0.0: resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} @@ -9215,10 +9155,6 @@ packages: proxmox-api@1.1.1: resolution: {integrity: sha512-2qH7pxKBBHa7WtEBmxPaBY2FZEH2R04hqr9zD9PmErLzJ7RGGcfNcXoS/v5G4vBM2Igmnx0EAYBstPwwfDwHnA==} - proxy-agent@6.5.0: - resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} - engines: {node: '>= 14'} - proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -9293,19 +9229,19 @@ packages: peerDependencies: react: ^15.3.0 || 16 || 17 || 18 - react-dom@19.2.3: - resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} + react-dom@19.2.4: + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} peerDependencies: - react: ^19.2.3 + react: ^19.2.4 - react-dropzone@14.3.8: - resolution: {integrity: sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==} + react-dropzone@15.0.0: + resolution: {integrity: sha512-lGjYV/EoqEjEWPnmiSvH4v5IoIAwQM2W4Z1C0Q/Pw2xD0eVzKPS359BQTUMum+1fa0kH2nrKjuavmTPOGhpLPg==} engines: {node: '>= 10.13'} peerDependencies: react: '>= 16.8 || 18.0.0' - react-error-boundary@6.1.0: - resolution: {integrity: sha512-02k9WQ/mUhdbXir0tC1NiMesGzRPaCsJEWU/4bcFrbY1YMZOtHShtZP6zw0SJrBWA/31H0KT9/FgdL8+sPKgHA==} + react-error-boundary@6.1.1: + resolution: {integrity: sha512-BrYwPOdXi5mqkk5lw+Uvt0ThHx32rCt3BkukS4X23A2AIWDPSGX6iaWTc0y9TU/mHDA/6qOSGel+B2ERkOvD1w==} peerDependencies: react: ^18.0.0 || ^19.0.0 @@ -9326,8 +9262,8 @@ packages: peerDependencies: react: ^16.8.4 || ^17.0.0 || ^18.0.0 - react-is@19.2.3: - resolution: {integrity: sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==} + react-is@19.2.4: + resolution: {integrity: sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==} react-markdown@10.1.0: resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} @@ -9421,8 +9357,8 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' - react@19.2.3: - resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} engines: {node: '>=0.10.0'} read-package-up@11.0.0: @@ -9512,17 +9448,10 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - registry-auth-token@3.3.2: - resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} - registry-auth-token@5.0.2: resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} engines: {node: '>=14'} - registry-url@3.1.0: - resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} - engines: {node: '>=0.10.0'} - registry-url@5.1.0: resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} engines: {node: '>=8'} @@ -9574,6 +9503,11 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -9598,8 +9532,8 @@ packages: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rfc4648@1.5.4: @@ -9608,11 +9542,6 @@ packages: 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 - hasBin: true - rollup@4.48.1: resolution: {integrity: sha512-jVG20NvbhTYDkGAty2/Yh7HK6/q3DGSRH4o8ALKGArmMuaauM9kLfoMZ+WliPwA5+JHr2lTn3g557FxBV87ifg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -9639,17 +9568,13 @@ packages: rrweb@2.0.0-alpha.4: resolution: {integrity: sha512-wEHUILbxDPcNwkM3m4qgPgXAiBJyqCbbOHyVoNEVBJzHszWEFYyTbrZqUdeb1EfmTRC2PsumCIkVcomJ/xcOzA==} - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} @@ -9689,8 +9614,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.97.2: - resolution: {integrity: sha512-y5LWb0IlbO4e97Zr7c3mlpabcbBtS+ieiZ9iwDooShpFKWXf62zz5pEPdwrLYm+Bxn1fnbwFGzHuCLSA9tBmrw==} + sass@1.97.3: + resolution: {integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==} engines: {node: '>=14.0.0'} hasBin: true @@ -9712,11 +9637,11 @@ packages: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} - secure-json-parse@4.0.0: - resolution: {integrity: sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==} + secure-json-parse@4.1.0: + resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} - semantic-release@25.0.2: - resolution: {integrity: sha512-6qGjWccl5yoyugHt3jTgztJ9Y0JVzyH8/Voc/D8PlLat9pwxQYXz7W1Dpnq5h0/G5GCYGUaDSlYcyk3AMh5A6g==} + semantic-release@25.0.3: + resolution: {integrity: sha512-WRgl5GcypwramYX4HV+eQGzUbD7UUbljVmS+5G1uMwX/wLgYuJAxGeerXJDMO2xshng4+FXqCgyB5QfClV6WjA==} engines: {node: ^22.14.0 || >= 24.10.0} hasBin: true @@ -9724,11 +9649,6 @@ packages: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} engines: {node: '>=8'} - semver-diff@5.0.0: - resolution: {integrity: sha512-0HbGtOm+S7T6NGQ/pxJSJipJvc4DK3FcRVMRkhsIwJDJ4Jcz5DQC1cPPzB5GhzyHjwttW878HaWQq46CkL3cqg==} - engines: {node: '>=12'} - deprecated: Deprecated as the semver package now supports this built-in. - semver-parser@4.1.8: resolution: {integrity: sha512-VFJx75RLTS4hHoiFG+JzDP5dE89JUQS0+/h4Zvcqw8djO6HInA5N7BtvbYBOD6W1u9eOfax7v3xf6CoSIAQBSg==} @@ -9740,41 +9660,27 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true - semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true - sentence-case@2.1.1: - resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} - - seq-queue@0.0.5: - resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==} + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true serialize-error@8.1.0: resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} engines: {node: '>=10'} - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} @@ -9863,17 +9769,10 @@ packages: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - snake-case@2.1.0: - resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} - socket.io-adapter@2.5.5: resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} @@ -9897,8 +9796,8 @@ 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==} + sonic-boom@4.2.1: + resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} sort-object-keys@2.0.1: resolution: {integrity: sha512-R89fO+z3x7hiKPXX5P0qim+ge6Y60AjtlW+QQpRozrrNcR1lw9Pkpm5MLB56HoNvdcLHL4wbpq16OcvGpEDJIg==} @@ -9953,9 +9852,9 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - sqlstring@2.3.3: - resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==} - engines: {node: '>= 0.6'} + sql-escaper@1.3.3: + resolution: {integrity: sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==} + engines: {bun: '>=1.0.0', deno: '>=2.0.0', node: '>=12.0.0'} ssh-remote-port-forward@1.0.4: resolution: {integrity: sha512-x0LV1eVDwjf1gmG7TTnfqIzf+3VPRz7vrNIjX6oYLbeCrf/PeVY6hkT68Mg+q02qXxQhrLjB0jfgvhevoCRmLQ==} @@ -10077,8 +9976,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strnum@2.1.0: - resolution: {integrity: sha512-w0S//9BqZZGw0L0Y8uLSelFGnDJgTyyNQLmSlPnVz43zPAiqu3w4t8J8sDqqANOGeZIZ/9jWuPguYcEnsoHv4A==} + strnum@2.1.2: + resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==} style-to-js@1.1.16: resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==} @@ -10139,18 +10038,15 @@ packages: svgson@5.3.1: resolution: {integrity: sha512-qdPgvUNWb40gWktBJnbJRelWcPzkLed/ShhnRsjbayXz8OtdPOzbil9jtiZdrYvSDumAz/VNQr6JaNfPx/gvPA==} - swagger-client@3.36.0: - resolution: {integrity: sha512-9fkjxGHXuKy20jj8zwE6RwgFSOGKAyOD5U7aKgW/+/futtHZHOdZeqiEkb97sptk2rdBv7FEiUQDNlWZR186RA==} + swagger-client@3.37.0: + resolution: {integrity: sha512-pzU+B+DkUbrSwlj4/E8sGeP1w84/CFgDJAt80fHu650TxnOHbqFLGQjiE6luvpRxTPdfK2zRHJP7I6CgUkI8yA==} - swagger-ui-react@5.31.0: - resolution: {integrity: sha512-E/sTgKADThzpVksaGXbhED0pQCYdajiBNOzvSAan+RhV7pdoi2qvdwWhZsIo8nRvHk9UXJ0nkuxrud854ICr7A==} + swagger-ui-react@5.32.0: + resolution: {integrity: sha512-2mmrtvfp0EA90pdT8qXTMu26ex03TG2bsjvDAwXhdfCm+9foyadYJN+nEvDHM6/c6/xtXbdAsb6cVxBvbltnpw==} peerDependencies: react: '>=16.8.0 <20' react-dom: '>=16.8.0 <20' - swap-case@1.1.2: - resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==} - symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -10171,6 +10067,9 @@ packages: tar-fs@3.1.1: resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} + tar-fs@3.1.2: + resolution: {integrity: sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==} + tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -10186,8 +10085,8 @@ packages: resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} engines: {node: '>=14.16'} - terser-webpack-plugin@5.3.14: - resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + terser-webpack-plugin@5.3.17: + resolution: {integrity: sha512-YR7PtUp6GMU91BgSJmlaX/rS2lGDbAF7D+Wtq7hRO+MiljNmodYvqslzCFiYVAgW+Qoaaia/QUIP4lGXufjdZw==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -10202,13 +10101,13 @@ packages: uglify-js: optional: true - terser@5.44.1: - resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} engines: {node: '>=10'} hasBin: true - testcontainers@11.11.0: - resolution: {integrity: sha512-nKTJn3n/gkyGg/3SVkOwX+isPOGSHlfI+CWMobSmvQrsj7YW01aWvl2pYIfV4LMd+C8or783yYrzKSK2JlP+Qw==} + testcontainers@11.12.0: + resolution: {integrity: sha512-VWtH+UQejVYYvb53ohEZRbx2naxyDvwO9lQ6A0VgmVE2Oh8r9EF09I+BfmrXpd9N9ntpzhao9di2yNwibSz5KA==} text-decoder@1.2.0: resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} @@ -10223,15 +10122,13 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - thread-stream@3.1.0: - resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + thread-stream@4.0.0: + resolution: {integrity: sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==} + engines: {node: '>=20'} through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - time-span@5.1.0: resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} engines: {node: '>=12'} @@ -10242,9 +10139,6 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinycolor2@1.6.0: - resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -10253,15 +10147,12 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinygradient@1.1.5: - resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} - tinyrainbow@3.0.3: resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} engines: {node: '>=14.0.0'} - title-case@2.1.1: - resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} + title-case@4.3.2: + resolution: {integrity: sha512-I/nkcBo73mO42Idfv08jhInV61IMb61OdIFxk+B4Gu1oBjWBPOLmhZdsli+oJCVaD+86pYQA93cJfFt224ZFAA==} tldts-core@6.1.69: resolution: {integrity: sha512-nygxy9n2PBUFQUtAXAc122gGo+04/j5qr5TGQFZTHafTKYvmARVXt2cA5rgero2/dnXUfkdPtiJoKmrd3T+wdA==} @@ -10367,20 +10258,6 @@ packages: ts-mixer@6.0.4: resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - ts-toolbelt@9.6.0: resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} @@ -10397,12 +10274,9 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tsdav@2.1.6: - resolution: {integrity: sha512-ngZCuhQvNClm5YHbuKN7EmRhOpu1XmsJ2+d56rpeiW9ZvXIxtDWyOf8TEojEgrgZVca9XJglVFNHYtyjQSmYOA==} - engines: {node: '>=10'} - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tsdav@2.1.8: + resolution: {integrity: sha512-zvQvhZLzTaEmNNgJbBlUYT/JOq9Xpw/xkxCqs7IT2d2/7o7pss0iZOlZXuHJ5VcvSvTny42Vc6+6GyzZcrCJ1g==} + engines: {node: '>=18'} tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -10416,8 +10290,8 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - tsx@4.20.5: - resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} engines: {node: '>=18.0.0'} hasBin: true @@ -10428,38 +10302,38 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo-darwin-64@2.7.5: - resolution: {integrity: sha512-nN3wfLLj4OES/7awYyyM7fkU8U8sAFxsXau2bYJwAWi6T09jd87DgHD8N31zXaJ7LcpyppHWPRI2Ov9MuZEwnQ==} + turbo-darwin-64@2.8.16: + resolution: {integrity: sha512-KWa4hUMWrpADC6Q/wIHRkBLw6X6MV9nx6X7hSXbTrrMz0KdaKhmfudUZ3sS76bJFmgArBU25cSc0AUyyrswYxg==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.7.5: - resolution: {integrity: sha512-wCoDHMiTf3FgLAbZHDDx/unNNonSGhsF5AbbYODbxnpYyoKDpEYacUEPjZD895vDhNvYCH0Nnk24YsP4n/cD6g==} + turbo-darwin-arm64@2.8.16: + resolution: {integrity: sha512-NBgaqBDLQSZlJR4D5XCkQq6noaO0RvIgwm5eYFJYL3bH5dNu8o0UBpq7C5DYnQI8+ybyoHFjT5/icN4LeUYLow==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.7.5: - resolution: {integrity: sha512-KKPvhOmJMmzWj/yjeO4LywkQ85vOJyhru7AZk/+c4B6OUh/odQ++SiIJBSbTG2lm1CuV5gV5vXZnf/2AMlu3Zg==} + turbo-linux-64@2.8.16: + resolution: {integrity: sha512-VYPdcCRevI9kR/hr1H1xwXy7QQt/jNKiim1e1mjANBXD2E9VZWMkIL74J1Huad5MbU3/jw7voHOqDPLJPC2p6w==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.7.5: - resolution: {integrity: sha512-8PIva4L6BQhiPikUTds9lSFSHXVDAsEvV6QUlgwPsXrtXVQMVi6Sv9p+IxtlWQFvGkdYJUgX9GnK2rC030Xcmw==} + turbo-linux-arm64@2.8.16: + resolution: {integrity: sha512-beq8tgUVI3uwkQkXJMiOr/hfxQRw54M3elpBwqgYFfemiK5LhCjjcwO0DkE8GZZfElBIlk+saMAQOZy3885wNQ==} cpu: [arm64] os: [linux] - turbo-windows-64@2.7.5: - resolution: {integrity: sha512-rupskv/mkIUgQXzX/wUiK00mKMorQcK8yzhGFha/D5lm05FEnLx8dsip6rWzMcVpvh+4GUMA56PgtnOgpel2AA==} + turbo-windows-64@2.8.16: + resolution: {integrity: sha512-Ig7b46iUgiOIkea/D3Z7H+zNzvzSnIJcLYFpZLA0RxbUTrbLhv9qIPwv3pT9p/abmu0LXVKHxaOo+p26SuDhzw==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.7.5: - resolution: {integrity: sha512-G377Gxn6P42RnCzfMyDvsqQV7j69kVHKlhz9J4RhtJOB5+DyY4yYh/w0oTIxZQ4JRMmhjwLu3w9zncMoQ6nNDw==} + turbo-windows-arm64@2.8.16: + resolution: {integrity: sha512-fOWjbEA2PiE2HEnFQrwNZKYEdjewyPc2no9GmrXklZnTCuMsxeCN39aVlKpKpim03Zq/ykIuvApGwq8ZbfS2Yw==} cpu: [arm64] os: [win32] - turbo@2.7.5: - resolution: {integrity: sha512-7Imdmg37joOloTnj+DPrab9hIaQcDdJ5RwSzcauo/wMOSAgO+A/I/8b3hsGGs6PWQz70m/jkPgdqWsfNKtwwDQ==} + turbo@2.8.16: + resolution: {integrity: sha512-u6e9e3cTTpE2adQ1DYm3A3r8y3LAONEx1jYvJx6eIgSY4bMLxIxs0riWzI0Z/IK903ikiUzRPZ2c1Ph5lVLkhA==} hasBin: true tweetnacl@0.14.5: @@ -10489,12 +10363,8 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-fest@5.1.0: - resolution: {integrity: sha512-wQ531tuWvB6oK+pchHIu5lHe5f5wpSCqB8Kf4dWQRbOYc9HTge7JL0G4Qd44bh6QuJCccIzL3bugb8GI0MwHrg==} - engines: {node: '>=20'} - - type-fest@5.2.0: - resolution: {integrity: sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==} + type-fest@5.4.4: + resolution: {integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==} engines: {node: '>=20'} type-is@1.6.18: @@ -10539,11 +10409,11 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.53.1: - resolution: {integrity: sha512-gB+EVQfP5RDElh9ittfXlhZJdjSU4jUSTyE2+ia8CYyNvet4ElfaLlAIqDvQV9JPknKx0jQH1racTYe/4LaLSg==} + typescript-eslint@8.57.0: + resolution: {integrity: sha512-W8GcigEMEeB07xEZol8oJ26rigm3+bfPHxHvwbYUlu1fUDsGuQ7Hiskx5xGW/xM4USc9Ephe3jtv7ZYPQntHeA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' typescript@5.9.3: @@ -10557,6 +10427,9 @@ packages: ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} @@ -10582,14 +10455,26 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@5.29.0: - resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} - engines: {node: '>=14.0'} + undici@6.23.0: + resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} + engines: {node: '>=18.17'} undici@7.18.2: resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} engines: {node: '>=20.18.1'} + undici@7.19.2: + resolution: {integrity: sha512-4VQSpGEGsWzk0VYxyB/wVX/Q7qf9t5znLRgs0dzszr9w9Fej/8RVNQ+S20vdXSAyra/bJ7ZQfGv6ZMj7UEbzSg==} + engines: {node: '>=20.18.1'} + + undici@7.21.0: + resolution: {integrity: sha512-Hn2tCQpoDt1wv23a68Ctc8Cr/BHpUSfaPYrkajTXOS9IKpxVRx/X5m1K2YkbK2ipgZgxXSgsUinl3x+2YdSSfg==} + engines: {node: '>=20.18.1'} + + undici@7.22.0: + resolution: {integrity: sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==} + engines: {node: '>=20.18.1'} + unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} engines: {node: '>=4'} @@ -10666,25 +10551,16 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - update-browserslist-db@1.1.4: - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' - update-check@1.5.4: - resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} - update-notifier-cjs@5.1.6: resolution: {integrity: sha512-wgxdSBWv3x/YpMzsWz5G4p4ec7JWD0HCl8W6bmNB6E5Gwo+1ym5oN4hiXpLf0mPySVEJEIsYlkshnplkg2OP9A==} engines: {node: '>=14'} - upper-case-first@1.1.2: - resolution: {integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==} - - upper-case@1.1.3: - resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} - uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -10719,8 +10595,8 @@ packages: peerDependencies: react: '>=16.13' - use-intl@4.7.0: - resolution: {integrity: sha512-jyd8nSErVRRsSlUa+SDobKHo9IiWs5fjcPl9VBUnzUyEQpVM5mwJCgw8eUiylhvBpLQzUGox1KN0XlRivSID9A==} + use-intl@4.8.3: + resolution: {integrity: sha512-nLxlC/RH+le6g3amA508Itnn/00mE+J22ui21QhOWo5V9hCEC43+WtnRAITbJW0ztVZphev5X9gvOf2/Dk9PLA==} peerDependencies: react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -10773,16 +10649,9 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@5.0.0: - resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} - 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'} @@ -10796,8 +10665,8 @@ packages: victory-vendor@36.9.2: resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} - video.js@8.23.4: - resolution: {integrity: sha512-qI0VTlYmKzEqRsz1Nppdfcaww4RSxZAq77z2oNSl3cNg2h6do5C8Ffl0KqWQ1OpD8desWXsCrde7tKJ9gGTEyQ==} + video.js@8.23.7: + resolution: {integrity: sha512-cG4HOygYt+Z8j6Sf5DuK6OgEOoM+g9oGP6vpqoZRaD13aHE4PMITbyjJUXZcIQbgB0wJEadBRaVm5lJIzo2jAA==} videojs-contrib-quality-levels@4.1.0: resolution: {integrity: sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==} @@ -10811,13 +10680,10 @@ packages: videojs-vtt.js@0.15.5: resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} - vite-tsconfig-paths@6.0.4: - resolution: {integrity: sha512-iIsEJ+ek5KqRTK17pmxtgIxXtqr3qDdE6OxrP9mVeGhVDNXRJTKN/l9oMbujTQNzMLe6XZ8qmpztfbkPu2TiFQ==} + vite-tsconfig-paths@6.1.1: + resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==} peerDependencies: vite: '>=7.3.1' - peerDependenciesMeta: - vite: - optional: true vite@7.1.12: resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==} @@ -10859,18 +10725,18 @@ packages: yaml: optional: true - vitest@4.0.17: - resolution: {integrity: sha512-FQMeF0DJdWY0iOnbv466n/0BudNdKj1l5jYgl5JVTwjSsZSlqyXFt/9+1sEyhR6CLowbZpV7O1sCHrzBhucKKg==} + vitest@4.0.18: + resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.17 - '@vitest/browser-preview': 4.0.17 - '@vitest/browser-webdriverio': 4.0.17 - '@vitest/ui': 4.0.17 + '@vitest/browser-playwright': 4.0.18 + '@vitest/browser-preview': 4.0.18 + '@vitest/browser-webdriverio': 4.0.18 + '@vitest/ui': 4.0.18 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -10900,8 +10766,8 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - watchpack@2.4.4: - resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + watchpack@2.5.1: + resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} engines: {node: '>=10.13.0'} wcwidth@1.0.1: @@ -10917,12 +10783,12 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@8.0.0: - resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} - webpack-sources@3.3.3: - resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + webpack-sources@3.3.4: + resolution: {integrity: sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==} engines: {node: '>=10.13.0'} webpack-virtual-modules@0.6.2: @@ -10941,14 +10807,14 @@ packages: whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - - whatwg-url@15.1.0: - resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} engines: {node: '>=20'} + whatwg-url@16.0.0: + resolution: {integrity: sha512-9CcxtEKsf53UFwkSUZjG+9vydAsFO4lFHBpJUtjBcoJOCJpKnSJNwCw813zrYJHpCJ7sgfbtOe0V5Ku7Pa1XMQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -11013,6 +10879,10 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -11140,14 +11010,14 @@ packages: resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + engines: {node: '>=18'} + yoctocolors@2.1.1: resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} engines: {node: '>=18'} @@ -11190,27 +11060,27 @@ packages: snapshots: - '@acemir/cssom@0.9.28': {} + '@acemir/cssom@0.9.31': {} - '@actions/core@2.0.1': + '@actions/core@3.0.0': dependencies: - '@actions/exec': 2.0.0 - '@actions/http-client': 3.0.0 + '@actions/exec': 3.0.0 + '@actions/http-client': 4.0.0 - '@actions/exec@2.0.0': + '@actions/exec@3.0.0': dependencies: - '@actions/io': 2.0.0 + '@actions/io': 3.0.2 - '@actions/http-client@3.0.0': + '@actions/http-client@4.0.0': dependencies: tunnel: 0.0.6 - undici: 5.29.0 + undici: 6.23.0 - '@actions/io@2.0.0': {} + '@actions/io@3.0.2': {} '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 '@antfu/ni@0.21.12': {} @@ -11223,21 +11093,21 @@ snapshots: '@ark/util@0.46.0': optional: true - '@asamuzakjp/css-color@4.1.0': + '@asamuzakjp/css-color@4.1.2': dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 - lru-cache: 11.2.4 + '@csstools/css-calc': 3.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + lru-cache: 11.2.6 - '@asamuzakjp/dom-selector@6.7.6': + '@asamuzakjp/dom-selector@6.8.1': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 css-tree: 3.1.0 is-potential-custom-element-name: 1.0.1 - lru-cache: 11.2.4 + lru-cache: 11.2.6 '@asamuzakjp/nwsapi@2.3.9': {} @@ -11272,7 +11142,7 @@ snapshots: '@babel/code-frame@7.26.2': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 @@ -11282,7 +11152,7 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/code-frame@7.28.6': + '@babel/code-frame@7.29.0': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 @@ -11292,18 +11162,20 @@ snapshots: '@babel/compat-data@7.27.5': {} + '@babel/compat-data@7.29.0': {} + '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 + '@babel/generator': 7.29.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helpers': 7.28.6 - '@babel/parser': 7.26.2 + '@babel/parser': 7.29.0 '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.28.4 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 convert-source-map: 2.0.0 debug: 4.4.3 gensync: 1.0.0-beta.2 @@ -11315,14 +11187,14 @@ snapshots: '@babel/core@7.28.4': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/generator': 7.29.0 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.4 + '@babel/parser': 7.29.0 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -11332,17 +11204,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/core@7.28.5': + '@babel/core@7.29.0': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -11352,26 +11224,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.2': + '@babel/generator@7.29.0': dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.0.2 - - '@babel/generator@7.28.3': - dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.4 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - jsesc: 3.0.2 - - '@babel/generator@7.28.5': - dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.0.2 @@ -11392,19 +11248,34 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-globals@7.28.0': {} '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -11412,8 +11283,8 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color @@ -11422,16 +11293,16 @@ snapshots: '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color @@ -11453,114 +11324,64 @@ snapshots: '@babel/helpers@7.28.4': dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.6 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 '@babel/helpers@7.28.6': dependencies: '@babel/template': 7.28.6 - '@babel/types': 7.28.6 - - '@babel/parser@7.26.2': - dependencies: - '@babel/types': 7.28.6 - - '@babel/parser@7.28.3': - dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.29.0 '@babel/parser@7.28.4': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.29.0 - '@babel/parser@7.28.5': + '@babel/parser@7.29.0': dependencies: - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 - '@babel/parser@7.28.6': + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/types': 7.28.6 - - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/runtime-corejs3@7.27.1': dependencies: core-js-pure: 3.38.1 - '@babel/runtime@7.28.4': {} - '@babel/runtime@7.28.6': {} '@babel/template@7.25.9': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@babel/template@7.27.2': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.28.6 - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 - '@babel/traverse@7.25.9': + '@babel/traverse@7.29.0': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.28.3 - '@babel/parser': 7.28.6 - '@babel/template': 7.25.9 - '@babel/types': 7.28.6 - debug: 4.4.3 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/traverse@7.28.3': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.0 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.3 - '@babel/template': 7.27.2 - '@babel/types': 7.28.4 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - - '@babel/traverse@7.28.4': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.6 - '@babel/template': 7.27.2 - '@babel/types': 7.28.6 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - - '@babel/traverse@7.28.5': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.6 - '@babel/template': 7.27.2 - '@babel/types': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -11570,22 +11391,12 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.28.2': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/types@7.28.5': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - - '@babel/types@7.28.6': + '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 @@ -11594,6 +11405,10 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.1.0 + '@clack/core@0.3.5': dependencies: picocolors: 1.1.1 @@ -11616,43 +11431,37 @@ snapshots: '@colors/colors@1.6.0': {} - '@cspotcode/source-map-support@0.8.1': + '@csstools/color-helpers@6.0.1': {} + + '@csstools/css-calc@3.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@jridgewell/trace-mapping': 0.3.9 + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@csstools/color-helpers@5.1.0': {} - - '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-color-parser@4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/color-helpers': 6.0.1 + '@csstools/css-calc': 3.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/color-helpers': 5.1.0 - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-syntax-patches-for-csstree@1.0.26': {} + + '@csstools/css-tokenizer@4.0.0': {} + + '@ctrl/deluge@7.5.2': dependencies: - '@csstools/css-tokenizer': 3.0.4 - - '@csstools/css-syntax-patches-for-csstree@1.0.14(postcss@8.5.6)': - dependencies: - postcss: 8.5.6 - - '@csstools/css-tokenizer@3.0.4': {} - - '@ctrl/deluge@7.5.0': - dependencies: - '@ctrl/magnet-link': 4.2.0 - '@ctrl/shared-torrent': 6.5.0(ofetch@1.5.1) + '@ctrl/magnet-link': 4.3.0 + '@ctrl/shared-torrent': 6.5.1(ofetch@1.5.1) node-fetch-native: 1.6.7 ofetch: 1.5.1 tough-cookie: 6.0.0 - type-fest: 5.1.0 - ufo: 1.6.1 + type-fest: 5.4.4 + ufo: 1.6.3 uint8array-extras: 1.5.0 '@ctrl/magnet-link@4.0.2': @@ -11660,34 +11469,32 @@ snapshots: rfc4648: 1.5.4 uint8array-extras: 1.5.0 - '@ctrl/magnet-link@4.2.0': + '@ctrl/magnet-link@4.3.0': dependencies: rfc4648: 1.5.4 uint8array-extras: 1.5.0 - '@ctrl/qbittorrent@9.11.0': + '@ctrl/qbittorrent@9.11.2': dependencies: - '@ctrl/magnet-link': 4.2.0 - '@ctrl/shared-torrent': 6.5.0(ofetch@1.5.1) - '@ctrl/torrent-file': 4.4.0 - cookie: 1.0.2 + '@ctrl/magnet-link': 4.3.0 + '@ctrl/shared-torrent': 6.5.1(ofetch@1.5.1) + '@ctrl/torrent-file': 4.5.0 + cookie: 1.1.1 node-fetch-native: 1.6.7 ofetch: 1.5.1 - type-fest: 5.2.0 - ufo: 1.6.1 + type-fest: 5.4.4 + ufo: 1.6.3 uint8array-extras: 1.5.0 '@ctrl/shared-torrent@6.3.0(ofetch@1.4.1)': dependencies: ofetch: 1.4.1 - '@ctrl/shared-torrent@6.5.0(ofetch@1.5.1)': + '@ctrl/shared-torrent@6.5.1(ofetch@1.5.1)': dependencies: ofetch: 1.5.1 - '@ctrl/torrent-file@4.4.0': - dependencies: - uint8array-extras: 1.5.0 + '@ctrl/torrent-file@4.5.0': {} '@ctrl/transmission@7.4.0': dependencies: @@ -11704,36 +11511,36 @@ snapshots: enabled: 2.0.0 kuler: 2.0.0 - '@dnd-kit/accessibility@3.1.1(react@19.2.3)': + '@dnd-kit/accessibility@3.1.1(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 tslib: 2.8.1 - '@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@dnd-kit/accessibility': 3.1.1(react@19.2.3) - '@dnd-kit/utilities': 3.2.2(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@dnd-kit/accessibility': 3.1.1(react@19.2.4) + '@dnd-kit/utilities': 3.2.2(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 - '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)': + '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@dnd-kit/utilities': 3.2.2(react@19.2.3) - react: 19.2.3 + '@dnd-kit/core': 6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@dnd-kit/utilities': 3.2.2(react@19.2.4) + react: 19.2.4 tslib: 2.8.1 - '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)': + '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@dnd-kit/utilities': 3.2.2(react@19.2.3) - react: 19.2.3 + '@dnd-kit/core': 6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@dnd-kit/utilities': 3.2.2(react@19.2.4) + react: 19.2.4 tslib: 2.8.1 - '@dnd-kit/utilities@3.2.2(react@19.2.3)': + '@dnd-kit/utilities@3.2.2(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 tslib: 2.8.1 '@drizzle-team/brocli@0.10.2': {} @@ -11749,189 +11556,182 @@ snapshots: '@esbuild-kit/core-utils@3.3.2': dependencies: - esbuild: 0.27.2 + esbuild: 0.27.3 source-map-support: 0.5.21 '@esbuild-kit/esm-loader@2.6.5': dependencies: '@esbuild-kit/core-utils': 3.3.2 - get-tsconfig: 4.13.0 + get-tsconfig: 4.13.6 '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.27.2': + '@esbuild/aix-ppc64@0.27.3': optional: true '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.27.2': + '@esbuild/android-arm64@0.27.3': optional: true '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.27.2': + '@esbuild/android-arm@0.27.3': optional: true '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.27.2': + '@esbuild/android-x64@0.27.3': optional: true '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.27.2': + '@esbuild/darwin-arm64@0.27.3': optional: true '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.27.2': + '@esbuild/darwin-x64@0.27.3': optional: true '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.27.2': + '@esbuild/freebsd-arm64@0.27.3': optional: true '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.27.2': + '@esbuild/freebsd-x64@0.27.3': optional: true '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.27.2': + '@esbuild/linux-arm64@0.27.3': optional: true '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.27.2': + '@esbuild/linux-arm@0.27.3': optional: true '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.27.2': + '@esbuild/linux-ia32@0.27.3': optional: true '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.27.2': + '@esbuild/linux-loong64@0.27.3': optional: true '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.27.2': + '@esbuild/linux-mips64el@0.27.3': optional: true '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.27.2': + '@esbuild/linux-ppc64@0.27.3': optional: true '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.27.2': + '@esbuild/linux-riscv64@0.27.3': optional: true '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.27.2': + '@esbuild/linux-s390x@0.27.3': optional: true '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.27.2': + '@esbuild/linux-x64@0.27.3': optional: true '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.27.2': + '@esbuild/netbsd-arm64@0.27.3': optional: true '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.27.2': + '@esbuild/netbsd-x64@0.27.3': optional: true '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.27.2': + '@esbuild/openbsd-arm64@0.27.3': optional: true '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.27.2': + '@esbuild/openbsd-x64@0.27.3': optional: true '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.27.2': + '@esbuild/openharmony-arm64@0.27.3': optional: true '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.27.2': + '@esbuild/sunos-x64@0.27.3': optional: true '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.27.2': + '@esbuild/win32-arm64@0.27.3': optional: true '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.27.2': + '@esbuild/win32-ia32@0.27.3': optional: true '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.27.2': + '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2)': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': dependencies: - eslint: 9.39.2 + eslint: 9.39.4 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2)': - dependencies: - eslint: 9.39.2 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.1': + '@eslint/config-array@0.21.2': dependencies: '@eslint/object-schema': 2.1.7 debug: 4.4.3 - minimatch: 3.1.2 + minimatch: 3.1.5 transitivePeerDependencies: - supports-color @@ -11943,21 +11743,21 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.1': + '@eslint/eslintrc@3.3.5': dependencies: - ajv: 6.12.6 + ajv: 6.14.0 debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.1 - minimatch: 3.1.2 + minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@9.39.2': {} + '@eslint/js@9.39.4': {} '@eslint/object-schema@2.1.7': {} @@ -11966,41 +11766,41 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@exodus/bytes@1.7.0': {} + '@exodus/bytes@1.11.0(@noble/hashes@2.0.1)': + optionalDependencies: + '@noble/hashes': 2.0.1 '@extractus/feed-extractor@7.1.7': dependencies: '@ndaidong/bellajs': 12.0.1 cross-fetch: 4.1.0 - fast-xml-parser: 5.3.3 + fast-xml-parser: 5.4.2 html-entities: 2.6.0 transitivePeerDependencies: - encoding '@fastify/ajv-compiler@4.0.5': dependencies: - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - fast-uri: 3.0.6 - - '@fastify/busboy@2.1.1': {} + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + fast-uri: 3.1.0 '@fastify/error@4.2.0': {} '@fastify/fast-json-stringify-compiler@5.0.3': dependencies: - fast-json-stringify: 6.0.1 + fast-json-stringify: 6.3.0 - '@fastify/forwarded@3.0.0': {} + '@fastify/forwarded@3.0.1': {} '@fastify/merge-json-schemas@0.2.1': dependencies: dequal: 2.0.3 - '@fastify/proxy-addr@5.0.0': + '@fastify/proxy-addr@5.1.0': dependencies: - '@fastify/forwarded': 3.0.0 - ipaddr.js: 2.2.0 + '@fastify/forwarded': 3.0.1 + ipaddr.js: 2.3.0 '@floating-ui/core@1.7.3': dependencies: @@ -12011,45 +11811,52 @@ snapshots: '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@floating-ui/react-dom@2.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@floating-ui/dom': 1.7.4 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@floating-ui/react@0.27.16(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@floating-ui/react@0.27.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@floating-ui/utils': 0.2.10 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) tabbable: 6.2.0 '@floating-ui/utils@0.2.10': {} - '@formatjs/ecma402-abstract@2.2.0': + '@formatjs/ecma402-abstract@3.1.0': dependencies: - '@formatjs/fast-memoize': 2.2.1 - '@formatjs/intl-localematcher': 0.5.5 + '@formatjs/fast-memoize': 3.1.0 + '@formatjs/intl-localematcher': 0.8.0 + decimal.js: 10.6.0 tslib: 2.8.1 - '@formatjs/fast-memoize@2.2.1': + '@formatjs/fast-memoize@3.1.0': dependencies: tslib: 2.8.1 - '@formatjs/icu-messageformat-parser@2.8.0': + '@formatjs/icu-messageformat-parser@3.5.0': dependencies: - '@formatjs/ecma402-abstract': 2.2.0 - '@formatjs/icu-skeleton-parser': 1.8.4 + '@formatjs/ecma402-abstract': 3.1.0 + '@formatjs/icu-skeleton-parser': 2.1.0 tslib: 2.8.1 - '@formatjs/icu-skeleton-parser@1.8.4': + '@formatjs/icu-skeleton-parser@2.1.0': dependencies: - '@formatjs/ecma402-abstract': 2.2.0 + '@formatjs/ecma402-abstract': 3.1.0 tslib: 2.8.1 - '@formatjs/intl-localematcher@0.5.5': + '@formatjs/intl-localematcher@0.8.0': dependencies: + '@formatjs/fast-memoize': 3.1.0 + tslib: 2.8.1 + + '@formatjs/intl-localematcher@0.8.1': + dependencies: + '@formatjs/fast-memoize': 3.1.0 tslib: 2.8.1 '@gitbeaker/core@43.8.0': @@ -12078,7 +11885,7 @@ snapshots: '@grpc/proto-loader@0.7.13': dependencies: lodash.camelcase: 4.3.0 - long: 5.2.3 + long: 5.3.2 protobufjs: 7.4.0 yargs: 17.7.2 @@ -12099,9 +11906,9 @@ snapshots: - undici - utf-8-validate - '@hono/node-server@1.13.0(hono@4.11.4)': + '@hono/node-server@1.13.0(hono@4.12.7)': dependencies: - hono: 4.11.4 + hono: 4.12.7 '@humanfs/core@0.19.1': {} @@ -12116,14 +11923,14 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.8.0)': + '@ianvs/prettier-plugin-sort-imports@4.7.1(prettier@3.8.1)': dependencies: - '@babel/generator': 7.28.3 - '@babel/parser': 7.28.3 - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 - prettier: 3.8.0 - semver: 7.7.2 + '@babel/generator': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + prettier: 3.8.1 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -12216,13 +12023,136 @@ snapshots: '@img/sharp-win32-x64@0.34.4': optional: true - '@ioredis/commands@1.5.0': {} - - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.0': + '@immich/sdk@2.5.6': dependencies: - '@isaacs/balanced-match': 4.0.1 + '@oazapfts/runtime': 1.2.0 + + '@inquirer/ansi@1.0.2': {} + + '@inquirer/checkbox@4.3.2(@types/node@24.12.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@24.12.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.12.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/confirm@5.1.21(@types/node@24.12.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.12.0) + '@inquirer/type': 3.0.10(@types/node@24.12.0) + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/core@10.3.2(@types/node@24.12.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.12.0) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/editor@4.2.23(@types/node@24.12.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.12.0) + '@inquirer/external-editor': 1.0.3(@types/node@24.12.0) + '@inquirer/type': 3.0.10(@types/node@24.12.0) + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/expand@4.0.23(@types/node@24.12.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.12.0) + '@inquirer/type': 3.0.10(@types/node@24.12.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/external-editor@1.0.3(@types/node@24.12.0)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/figures@1.0.15': {} + + '@inquirer/input@4.3.1(@types/node@24.12.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.12.0) + '@inquirer/type': 3.0.10(@types/node@24.12.0) + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/number@3.0.23(@types/node@24.12.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.12.0) + '@inquirer/type': 3.0.10(@types/node@24.12.0) + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/password@4.0.23(@types/node@24.12.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@24.12.0) + '@inquirer/type': 3.0.10(@types/node@24.12.0) + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/prompts@7.10.1(@types/node@24.12.0)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@24.12.0) + '@inquirer/confirm': 5.1.21(@types/node@24.12.0) + '@inquirer/editor': 4.2.23(@types/node@24.12.0) + '@inquirer/expand': 4.0.23(@types/node@24.12.0) + '@inquirer/input': 4.3.1(@types/node@24.12.0) + '@inquirer/number': 3.0.23(@types/node@24.12.0) + '@inquirer/password': 4.0.23(@types/node@24.12.0) + '@inquirer/rawlist': 4.1.11(@types/node@24.12.0) + '@inquirer/search': 3.2.2(@types/node@24.12.0) + '@inquirer/select': 4.4.2(@types/node@24.12.0) + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/rawlist@4.1.11(@types/node@24.12.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.12.0) + '@inquirer/type': 3.0.10(@types/node@24.12.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/search@3.2.2(@types/node@24.12.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.12.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.12.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/select@4.4.2(@types/node@24.12.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@24.12.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.12.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.12.0 + + '@inquirer/type@3.0.10(@types/node@24.12.0)': + optionalDependencies: + '@types/node': 24.12.0 + + '@ioredis/commands@1.5.1': {} '@isaacs/cliui@8.0.2': dependencies: @@ -12233,41 +12163,24 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/cliui@9.0.0': {} + '@jellyfin/sdk@0.13.0(axios@1.12.2)': dependencies: axios: 1.12.2 - '@jridgewell/gen-mapping@0.3.12': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/remapping@2.3.5': dependencies: - '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/set-array@1.2.1': {} - '@jridgewell/source-map@0.3.11': dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -12275,21 +12188,11 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.29': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - '@js-sdsl/ordered-map@4.4.2': {} '@jsep-plugin/assignment@1.3.0(jsep@1.4.0)': @@ -12303,7 +12206,7 @@ snapshots: '@kubernetes/client-node@1.4.0': dependencies: '@types/js-yaml': 4.0.9 - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/node-fetch': 2.6.13 '@types/stream-buffers': 3.0.7 form-data: 4.0.5 @@ -12325,6 +12228,12 @@ snapshots: - supports-color - utf-8-validate + '@kwsites/file-exists@1.1.1': + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + '@libsql/client-wasm@0.14.0': dependencies: '@libsql/core': 0.14.0 @@ -12336,125 +12245,125 @@ snapshots: js-base64: 3.7.8 optional: true - '@mantine/charts@8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(recharts@2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3))': + '@mantine/charts@8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(recharts@2.15.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': dependencies: - '@mantine/core': 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@mantine/hooks': 8.3.13(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - recharts: 2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@mantine/core': 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/hooks': 8.3.16(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + recharts: 2.15.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@mantine/colors-generator@8.3.13(chroma-js@3.2.0)': + '@mantine/colors-generator@8.3.16(chroma-js@3.2.0)': dependencies: chroma-js: 3.2.0 - '@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@floating-ui/react': 0.27.16(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@mantine/hooks': 8.3.13(react@19.2.3) + '@floating-ui/react': 0.27.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/hooks': 8.3.16(react@19.2.4) clsx: 2.1.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-number-format: 5.4.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react-remove-scroll: 2.7.1(@types/react@19.2.8)(react@19.2.3) - react-textarea-autosize: 8.5.9(@types/react@19.2.8)(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-number-format: 5.4.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-remove-scroll: 2.7.1(@types/react@19.2.14)(react@19.2.4) + react-textarea-autosize: 8.5.9(@types/react@19.2.14)(react@19.2.4) type-fest: 4.41.0 transitivePeerDependencies: - '@types/react' - '@mantine/dates@8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@mantine/dates@8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@mantine/core': 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@mantine/hooks': 8.3.13(react@19.2.3) + '@mantine/core': 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/hooks': 8.3.16(react@19.2.4) clsx: 2.1.1 dayjs: 1.11.19 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@mantine/dropzone@8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@mantine/dropzone@8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@mantine/core': 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@mantine/hooks': 8.3.13(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-dropzone: 14.3.8(react@19.2.3) + '@mantine/core': 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/hooks': 8.3.16(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-dropzone: 15.0.0(react@19.2.4) - '@mantine/form@8.3.13(react@19.2.3)': + '@mantine/form@8.3.16(react@19.2.4)': dependencies: fast-deep-equal: 3.1.3 klona: 2.0.6 - react: 19.2.3 + react: 19.2.4 - '@mantine/hooks@8.3.13(react@19.2.3)': + '@mantine/hooks@8.3.16(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 - '@mantine/modals@8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@mantine/modals@8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@mantine/core': 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@mantine/hooks': 8.3.13(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@mantine/core': 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/hooks': 8.3.16(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@mantine/notifications@8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@mantine/notifications@8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@mantine/core': 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@mantine/hooks': 8.3.13(react@19.2.3) - '@mantine/store': 8.3.13(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@mantine/core': 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/hooks': 8.3.16(react@19.2.4) + '@mantine/store': 8.3.16(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@mantine/spotlight@8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@mantine/spotlight@8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@mantine/core': 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@mantine/hooks': 8.3.13(react@19.2.3) - '@mantine/store': 8.3.13(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@mantine/core': 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/hooks': 8.3.16(react@19.2.4) + '@mantine/store': 8.3.16(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@mantine/store@8.3.13(react@19.2.3)': + '@mantine/store@8.3.16(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 - '@mantine/tiptap@8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(@tiptap/extension-link@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))(@tiptap/react@3.16.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@mantine/tiptap@8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(@tiptap/extension-link@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))(@tiptap/react@3.20.1(@floating-ui/dom@1.7.4)(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@mantine/core': 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@mantine/hooks': 8.3.13(react@19.2.3) - '@tiptap/extension-link': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) - '@tiptap/react': 3.16.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@mantine/core': 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/hooks': 8.3.16(react@19.2.4) + '@tiptap/extension-link': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) + '@tiptap/react': 3.20.1(@floating-ui/dom@1.7.4)(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) '@million/install@1.0.14': dependencies: '@antfu/ni': 0.21.12 '@axiomhq/js': 1.0.0-rc.3 - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.0 '@babel/types': 7.26.0 '@clack/prompts': 0.7.0 ast-types: 0.14.2 cli-high: 0.4.3 - diff: 5.2.0 - effect: 3.19.4 + diff: 5.2.2 + effect: 3.19.19 nanoid: 5.1.6 recast: 0.23.11 xycolors: 0.1.2 - '@million/lint@1.0.14(webpack-sources@3.3.3)': + '@million/lint@1.0.14(webpack-sources@3.3.4)': 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.11.4) + '@hono/node-server': 1.13.0(hono@4.12.7) '@million/install': 1.0.14 '@rollup/pluginutils': 5.1.0 '@rrweb/types': 2.0.0-alpha.16 babel-plugin-syntax-hermes-parser: 0.21.1 ci-info: 4.0.0 - esbuild: 0.27.2 + esbuild: 0.27.3 faster-babel-types: 0.1.0(@babel/types@7.26.0) - hono: 4.11.4 + hono: 4.12.7 isomorphic-fetch: 3.0.0 nanoid: 5.1.6 ohash: 1.1.4 @@ -12469,7 +12378,7 @@ snapshots: socket.io: 4.8.1 socket.io-client: 4.7.5 tmp: 0.2.5 - unplugin: 1.14.1(webpack-sources@3.3.3) + unplugin: 1.14.1(webpack-sources@3.3.4) update-notifier-cjs: 5.1.6 transitivePeerDependencies: - bufferutil @@ -12481,34 +12390,34 @@ snapshots: '@ndaidong/bellajs@12.0.1': {} - '@next/env@16.1.4': {} + '@next/env@16.1.6': {} - '@next/eslint-plugin-next@16.1.4': + '@next/eslint-plugin-next@16.1.6': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@16.1.4': + '@next/swc-darwin-arm64@16.1.6': optional: true - '@next/swc-darwin-x64@16.1.4': + '@next/swc-darwin-x64@16.1.6': optional: true - '@next/swc-linux-arm64-gnu@16.1.4': + '@next/swc-linux-arm64-gnu@16.1.6': optional: true - '@next/swc-linux-arm64-musl@16.1.4': + '@next/swc-linux-arm64-musl@16.1.6': optional: true - '@next/swc-linux-x64-gnu@16.1.4': + '@next/swc-linux-x64-gnu@16.1.6': optional: true - '@next/swc-linux-x64-musl@16.1.4': + '@next/swc-linux-x64-musl@16.1.6': optional: true - '@next/swc-win32-arm64-msvc@16.1.4': + '@next/swc-win32-arm64-msvc@16.1.6': optional: true - '@next/swc-win32-x64-msvc@16.1.4': + '@next/swc-win32-x64-msvc@16.1.6': optional: true '@noble/hashes@2.0.1': {} @@ -12523,11 +12432,13 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 + fastq: 1.20.1 + + '@oazapfts/runtime@1.2.0': {} '@octokit/app@16.1.2': dependencies: - '@octokit/auth-app': 8.1.2 + '@octokit/auth-app': 8.2.0 '@octokit/auth-unauthenticated': 7.0.3 '@octokit/core': 7.0.6 '@octokit/oauth-app': 8.0.3 @@ -12535,7 +12446,7 @@ snapshots: '@octokit/types': 16.0.0 '@octokit/webhooks': 14.0.0 - '@octokit/auth-app@8.1.2': + '@octokit/auth-app@8.2.0': dependencies: '@octokit/auth-oauth-app': 9.0.3 '@octokit/auth-oauth-user': 6.0.2 @@ -12685,7 +12596,7 @@ snapshots: '@panva/hkdf@1.2.1': {} - '@paralleldrive/cuid2@3.1.0': + '@paralleldrive/cuid2@3.3.0': dependencies: '@noble/hashes': 2.0.1 bignumber.js: 9.3.1 @@ -12794,7 +12705,7 @@ snapshots: '@remirror/core-constants@3.0.0': {} - '@rolldown/pluginutils@1.0.0-beta.53': {} + '@rolldown/pluginutils@1.0.0-rc.3': {} '@rollup/pluginutils@5.1.0': dependencies: @@ -12879,15 +12790,15 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/changelog@6.0.3(semantic-release@25.0.2(typescript@5.9.3))': + '@semantic-release/changelog@6.0.3(semantic-release@25.0.3(typescript@5.9.3))': dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 fs-extra: 11.2.0 lodash: 4.17.21 - semantic-release: 25.0.2(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) - '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.2(typescript@5.9.3))': + '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.3(typescript@5.9.3))': dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 @@ -12897,7 +12808,7 @@ snapshots: import-from-esm: 2.0.0 lodash-es: 4.17.21 micromatch: 4.0.8 - semantic-release: 25.0.2(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -12905,7 +12816,7 @@ snapshots: '@semantic-release/error@4.0.0': {} - '@semantic-release/git@10.0.1(semantic-release@25.0.2(typescript@5.9.3))': + '@semantic-release/git@10.0.1(semantic-release@25.0.3(typescript@5.9.3))': dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 @@ -12915,11 +12826,11 @@ snapshots: lodash: 4.17.21 micromatch: 4.0.8 p-reduce: 2.1.0 - semantic-release: 25.0.2(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) transitivePeerDependencies: - supports-color - '@semantic-release/github@12.0.2(semantic-release@25.0.2(typescript@5.9.3))': + '@semantic-release/github@12.0.6(semantic-release@25.0.3(typescript@5.9.3))': dependencies: '@octokit/core': 7.0.6 '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) @@ -12935,16 +12846,16 @@ snapshots: lodash-es: 4.17.21 mime: 4.0.4 p-filter: 4.1.0 - semantic-release: 25.0.2(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) tinyglobby: 0.2.15 undici: 7.18.2 url-join: 5.0.0 transitivePeerDependencies: - supports-color - '@semantic-release/npm@13.1.3(semantic-release@25.0.2(typescript@5.9.3))': + '@semantic-release/npm@13.1.5(semantic-release@25.0.3(typescript@5.9.3))': dependencies: - '@actions/core': 2.0.1 + '@actions/core': 3.0.0 '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 env-ci: 11.2.0 @@ -12952,16 +12863,16 @@ snapshots: fs-extra: 11.2.0 lodash-es: 4.17.21 nerf-dart: 1.0.0 - normalize-url: 8.0.1 + normalize-url: 9.0.0 npm: 11.6.2 rc: 1.2.8 read-pkg: 10.0.0 registry-auth-token: 5.0.2 - semantic-release: 25.0.2(typescript@5.9.3) - semver: 7.7.3 + semantic-release: 25.0.3(typescript@5.9.3) + semver: 7.7.4 tempy: 3.1.0 - '@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.2(typescript@5.9.3))': + '@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.3(typescript@5.9.3))': dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 @@ -12973,7 +12884,7 @@ snapshots: into-stream: 7.0.0 lodash-es: 4.17.21 read-package-up: 11.0.0 - semantic-release: 25.0.2(typescript@5.9.3) + semantic-release: 25.0.3(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -12988,22 +12899,22 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@standard-schema/spec@1.0.0': {} + '@standard-schema/spec@1.1.0': {} - '@swagger-api/apidom-ast@1.0.0-rc.1': + '@swagger-api/apidom-ast@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 + '@swagger-api/apidom-error': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) unraw: 3.0.0 - '@swagger-api/apidom-core@1.0.0-rc.1': + '@swagger-api/apidom-core@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-ast': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 + '@swagger-api/apidom-ast': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 '@types/ramda': 0.30.2 minim: 0.23.8 ramda: 0.30.1 @@ -13011,213 +12922,260 @@ snapshots: short-unique-id: 5.3.2 ts-mixer: 6.0.4 - '@swagger-api/apidom-error@1.0.0-rc.1': + '@swagger-api/apidom-error@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-json-pointer@1.0.0-rc.1': + '@swagger-api/apidom-json-pointer@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 '@swaggerexpert/json-pointer': 2.10.2 - '@swagger-api/apidom-ns-api-design-systems@1.0.0-rc.1': + '@swagger-api/apidom-ns-api-design-systems@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-1': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 optional: true - '@swagger-api/apidom-ns-arazzo-1@1.0.0-rc.1': + '@swagger-api/apidom-ns-arazzo-1@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-json-schema-2020-12': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-json-schema-2020-12': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 optional: true - '@swagger-api/apidom-ns-asyncapi-2@1.0.0-rc.1': + '@swagger-api/apidom-ns-asyncapi-2@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-json-schema-draft-7': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-json-schema-draft-7': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 optional: true - '@swagger-api/apidom-ns-json-schema-2019-09@1.0.0-rc.1': + '@swagger-api/apidom-ns-asyncapi-3@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 - '@swagger-api/apidom-ns-json-schema-draft-7': 1.0.0-rc.1 - '@types/ramda': 0.30.2 - ramda: 0.30.1 - ramda-adjunct: 5.1.0(ramda@0.30.1) - ts-mixer: 6.0.4 - - '@swagger-api/apidom-ns-json-schema-2020-12@1.0.0-rc.1': - dependencies: - '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 - '@swagger-api/apidom-ns-json-schema-2019-09': 1.0.0-rc.1 - '@types/ramda': 0.30.2 - ramda: 0.30.1 - ramda-adjunct: 5.1.0(ramda@0.30.1) - ts-mixer: 6.0.4 - - '@swagger-api/apidom-ns-json-schema-draft-4@1.0.0-rc.1': - dependencies: - '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-ast': 1.0.0-rc.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@types/ramda': 0.30.2 - ramda: 0.30.1 - ramda-adjunct: 5.1.0(ramda@0.30.1) - ts-mixer: 6.0.4 - - '@swagger-api/apidom-ns-json-schema-draft-6@1.0.0-rc.1': - dependencies: - '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 - '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-rc.1 - '@types/ramda': 0.30.2 - ramda: 0.30.1 - ramda-adjunct: 5.1.0(ramda@0.30.1) - ts-mixer: 6.0.4 - - '@swagger-api/apidom-ns-json-schema-draft-7@1.0.0-rc.1': - dependencies: - '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 - '@swagger-api/apidom-ns-json-schema-draft-6': 1.0.0-rc.1 - '@types/ramda': 0.30.2 - ramda: 0.30.1 - ramda-adjunct: 5.1.0(ramda@0.30.1) - ts-mixer: 6.0.4 - - '@swagger-api/apidom-ns-openapi-2@1.0.0-rc.1': - dependencies: - '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 - '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-asyncapi-2': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 optional: true - '@swagger-api/apidom-ns-openapi-3-0@1.0.0-rc.1': + '@swagger-api/apidom-ns-json-schema-2019-09@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 - '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 + '@swagger-api/apidom-ns-json-schema-draft-7': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 - '@swagger-api/apidom-ns-openapi-3-1@1.0.0-rc.1': + '@swagger-api/apidom-ns-json-schema-2020-12@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-ast': 1.0.0-rc.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-json-pointer': 1.0.0-rc.1 - '@swagger-api/apidom-ns-json-schema-2020-12': 1.0.0-rc.1 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 + '@swagger-api/apidom-ns-json-schema-2019-09': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 - '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.0.0-rc.1': + '@swagger-api/apidom-ns-json-schema-draft-4@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-api-design-systems': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.1 + '@swagger-api/apidom-ast': 1.6.0 + '@swagger-api/apidom-core': 1.6.0 + '@types/ramda': 0.30.2 + ramda: 0.30.1 + ramda-adjunct: 5.1.0(ramda@0.30.1) + ts-mixer: 6.0.4 + + '@swagger-api/apidom-ns-json-schema-draft-6@1.6.0': + dependencies: + '@babel/runtime-corejs3': 7.27.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 + '@swagger-api/apidom-ns-json-schema-draft-4': 1.6.0 + '@types/ramda': 0.30.2 + ramda: 0.30.1 + ramda-adjunct: 5.1.0(ramda@0.30.1) + ts-mixer: 6.0.4 + + '@swagger-api/apidom-ns-json-schema-draft-7@1.6.0': + dependencies: + '@babel/runtime-corejs3': 7.27.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 + '@swagger-api/apidom-ns-json-schema-draft-6': 1.6.0 + '@types/ramda': 0.30.2 + ramda: 0.30.1 + ramda-adjunct: 5.1.0(ramda@0.30.1) + ts-mixer: 6.0.4 + + '@swagger-api/apidom-ns-openapi-2@1.6.0': + dependencies: + '@babel/runtime-corejs3': 7.27.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 + '@swagger-api/apidom-ns-json-schema-draft-4': 1.6.0 + '@types/ramda': 0.30.2 + ramda: 0.30.1 + ramda-adjunct: 5.1.0(ramda@0.30.1) + ts-mixer: 6.0.4 + optional: true + + '@swagger-api/apidom-ns-openapi-3-0@1.6.0': + dependencies: + '@babel/runtime-corejs3': 7.27.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 + '@swagger-api/apidom-ns-json-schema-draft-4': 1.6.0 + '@types/ramda': 0.30.2 + ramda: 0.30.1 + ramda-adjunct: 5.1.0(ramda@0.30.1) + ts-mixer: 6.0.4 + + '@swagger-api/apidom-ns-openapi-3-1@1.6.0': + dependencies: + '@babel/runtime-corejs3': 7.27.1 + '@swagger-api/apidom-ast': 1.6.0 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-json-pointer': 1.6.0 + '@swagger-api/apidom-ns-json-schema-2020-12': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-0': 1.6.0 + '@types/ramda': 0.30.2 + ramda: 0.30.1 + ramda-adjunct: 5.1.0(ramda@0.30.1) + ts-mixer: 6.0.4 + + '@swagger-api/apidom-ns-openapi-3-2@1.6.0': + dependencies: + '@babel/runtime-corejs3': 7.27.1 + '@swagger-api/apidom-ast': 1.6.0 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-json-pointer': 1.6.0 + '@swagger-api/apidom-ns-json-schema-2020-12': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-0': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-1': 1.6.0 + '@types/ramda': 0.30.2 + ramda: 0.30.1 + ramda-adjunct: 5.1.0(ramda@0.30.1) + ts-mixer: 6.0.4 + + '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.6.0': + dependencies: + '@babel/runtime-corejs3': 7.27.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-api-design-systems': 1.6.0 + '@swagger-api/apidom-parser-adapter-json': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-api-design-systems': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-api-design-systems': 1.6.0 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-arazzo-1': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-arazzo-1': 1.6.0 + '@swagger-api/apidom-parser-adapter-json': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-arazzo-1': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-arazzo-1': 1.6.0 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-asyncapi-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-json': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-asyncapi-json-3@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-asyncapi-3': 1.6.0 + '@swagger-api/apidom-parser-adapter-json': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-json@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-ast': 1.0.0-rc.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-asyncapi-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.6.0 + '@types/ramda': 0.30.2 + ramda: 0.30.1 + ramda-adjunct: 5.1.0(ramda@0.30.1) + optional: true + + '@swagger-api/apidom-parser-adapter-asyncapi-yaml-3@1.6.0': + dependencies: + '@babel/runtime-corejs3': 7.27.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-asyncapi-3': 1.6.0 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.6.0 + '@types/ramda': 0.30.2 + ramda: 0.30.1 + ramda-adjunct: 5.1.0(ramda@0.30.1) + optional: true + + '@swagger-api/apidom-parser-adapter-json@1.6.0': + dependencies: + '@babel/runtime-corejs3': 7.27.1 + '@swagger-api/apidom-ast': 1.6.0 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) @@ -13226,78 +13184,100 @@ snapshots: web-tree-sitter: 0.24.5 optional: true - '@swagger-api/apidom-parser-adapter-openapi-json-2@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-openapi-json-2@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-openapi-2': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-openapi-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-json': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-0': 1.6.0 + '@swagger-api/apidom-parser-adapter-json': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-1': 1.6.0 + '@swagger-api/apidom-parser-adapter-json': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-openapi-json-3-2@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-openapi-2': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-json': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-openapi-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-0': 1.6.0 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.6.0 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-yaml-1-2@1.0.0-rc.1': + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-ast': 1.0.0-rc.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-1': 1.6.0 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.6.0 + '@types/ramda': 0.30.2 + ramda: 0.30.1 + ramda-adjunct: 5.1.0(ramda@0.30.1) + optional: true + + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-2@1.6.0': + dependencies: + '@babel/runtime-corejs3': 7.27.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.6.0 + '@types/ramda': 0.30.2 + ramda: 0.30.1 + ramda-adjunct: 5.1.0(ramda@0.30.1) + optional: true + + '@swagger-api/apidom-parser-adapter-yaml-1-2@1.6.0': + dependencies: + '@babel/runtime-corejs3': 7.27.1 + '@swagger-api/apidom-ast': 1.6.0 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 '@tree-sitter-grammars/tree-sitter-yaml': 0.7.1(tree-sitter@0.22.4) '@types/ramda': 0.30.2 ramda: 0.30.1 @@ -13306,38 +13286,42 @@ snapshots: web-tree-sitter: 0.24.5 optional: true - '@swagger-api/apidom-reference@1.0.0-rc.1': + '@swagger-api/apidom-reference@1.6.0': dependencies: '@babel/runtime-corejs3': 7.27.1 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 '@types/ramda': 0.30.2 axios: 1.12.2 - minimatch: 7.4.6 - process: 0.11.10 + minimatch: 10.2.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optionalDependencies: - '@swagger-api/apidom-json-pointer': 1.0.0-rc.1 - '@swagger-api/apidom-ns-arazzo-1': 1.0.0-rc.1 - '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-rc.1 - '@swagger-api/apidom-ns-openapi-2': 1.0.0-rc.1 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-rc.1 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-api-design-systems-json': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-api-design-systems-yaml': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-arazzo-json-1': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-arazzo-yaml-1': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-asyncapi-json-2': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-openapi-json-2': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-openapi-json-3-0': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-openapi-json-3-1': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-openapi-yaml-2': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1': 1.0.0-rc.1 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.1 + '@swagger-api/apidom-json-pointer': 1.6.0 + '@swagger-api/apidom-ns-arazzo-1': 1.6.0 + '@swagger-api/apidom-ns-asyncapi-2': 1.6.0 + '@swagger-api/apidom-ns-openapi-2': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-0': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-1': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-api-design-systems-json': 1.6.0 + '@swagger-api/apidom-parser-adapter-api-design-systems-yaml': 1.6.0 + '@swagger-api/apidom-parser-adapter-arazzo-json-1': 1.6.0 + '@swagger-api/apidom-parser-adapter-arazzo-yaml-1': 1.6.0 + '@swagger-api/apidom-parser-adapter-asyncapi-json-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-asyncapi-json-3': 1.6.0 + '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-asyncapi-yaml-3': 1.6.0 + '@swagger-api/apidom-parser-adapter-json': 1.6.0 + '@swagger-api/apidom-parser-adapter-openapi-json-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-openapi-json-3-0': 1.6.0 + '@swagger-api/apidom-parser-adapter-openapi-json-3-1': 1.6.0 + '@swagger-api/apidom-parser-adapter-openapi-json-3-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-openapi-yaml-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0': 1.6.0 + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1': 1.6.0 + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-2': 1.6.0 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.6.0 transitivePeerDependencies: - debug @@ -13419,12 +13403,12 @@ snapshots: typescript: 5.9.3 zod: 4.2.1 - '@tabler/icons-react@3.36.1(react@19.2.3)': + '@tabler/icons-react@3.40.0(react@19.2.4)': dependencies: - '@tabler/icons': 3.36.1 - react: 19.2.3 + '@tabler/icons': 3.40.0 + react: 19.2.4 - '@tabler/icons@3.36.1': {} + '@tabler/icons@3.40.0': {} '@tanstack/devtools-event-client@0.4.0': {} @@ -13442,7 +13426,7 @@ snapshots: '@tanstack/query-core@5.90.19': {} - '@tanstack/query-devtools@5.92.0': {} + '@tanstack/query-devtools@5.93.0': {} '@tanstack/react-form@1.27.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: @@ -13454,20 +13438,20 @@ snapshots: '@tanstack/react-query-devtools@5.91.2(@tanstack/react-query@5.90.19(react@19.2.3))(react@19.2.3)': dependencies: - '@tanstack/query-devtools': 5.92.0 - '@tanstack/react-query': 5.90.19(react@19.2.3) - react: 19.2.3 + '@tanstack/query-devtools': 5.93.0 + '@tanstack/react-query': 5.90.21(react@19.2.4) + react: 19.2.4 - '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.19(react@19.2.3))(next@16.1.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2))(react@19.2.3)': + '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.21(react@19.2.4))(next@16.1.6(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(react@19.2.4)': dependencies: - '@tanstack/react-query': 5.90.19(react@19.2.3) - next: 16.1.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) - react: 19.2.3 + '@tanstack/react-query': 5.90.21(react@19.2.4) + next: 16.1.6(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) + react: 19.2.4 - '@tanstack/react-query@5.90.19(react@19.2.3)': + '@tanstack/react-query@5.90.21(react@19.2.4)': dependencies: - '@tanstack/query-core': 5.90.19 - react: 19.2.3 + '@tanstack/query-core': 5.90.20 + react: 19.2.4 '@tanstack/react-store@0.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: @@ -13479,14 +13463,14 @@ snapshots: '@tanstack/react-table@8.20.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@tanstack/table-core': 8.20.5 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@tanstack/react-virtual@3.11.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@tanstack/react-virtual@3.11.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@tanstack/virtual-core': 3.11.2 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) '@tanstack/store@0.7.7': {} @@ -13496,189 +13480,189 @@ snapshots: '@tanstack/virtual-core@3.11.2': {} - '@testcontainers/mysql@11.11.0': + '@testcontainers/mysql@11.12.0': dependencies: - testcontainers: 11.11.0 + testcontainers: 11.12.0 transitivePeerDependencies: - bare-buffer - supports-color - '@testcontainers/postgresql@11.11.0': + '@testcontainers/postgresql@11.12.0': dependencies: - testcontainers: 11.11.0 + testcontainers: 11.12.0 transitivePeerDependencies: - bare-buffer - supports-color - '@testcontainers/redis@11.11.0': + '@testcontainers/redis@11.12.0': dependencies: - testcontainers: 11.11.0 + testcontainers: 11.12.0 transitivePeerDependencies: - bare-buffer - supports-color - '@tiptap/core@3.16.0(@tiptap/pm@3.16.0)': + '@tiptap/core@3.20.1(@tiptap/pm@3.20.1)': dependencies: - '@tiptap/pm': 3.16.0 + '@tiptap/pm': 3.20.1 - '@tiptap/extension-blockquote@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-blockquote@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-bold@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-bold@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-bubble-menu@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)': + '@tiptap/extension-bubble-menu@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)': dependencies: '@floating-ui/dom': 1.7.4 - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) - '@tiptap/pm': 3.16.0 + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) + '@tiptap/pm': 3.20.1 optional: true - '@tiptap/extension-bullet-list@3.16.0(@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))': + '@tiptap/extension-bullet-list@3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/extension-list': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extension-list': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) - '@tiptap/extension-code-block@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)': + '@tiptap/extension-code-block@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) - '@tiptap/pm': 3.16.0 + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) + '@tiptap/pm': 3.20.1 - '@tiptap/extension-code@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-code@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-color@3.16.0(@tiptap/extension-text-style@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)))': + '@tiptap/extension-color@3.20.1(@tiptap/extension-text-style@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)))': dependencies: - '@tiptap/extension-text-style': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) + '@tiptap/extension-text-style': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) - '@tiptap/extension-document@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-document@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-dropcursor@3.16.0(@tiptap/extensions@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))': + '@tiptap/extension-dropcursor@3.20.1(@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/extensions': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extensions': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) - '@tiptap/extension-floating-menu@3.16.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)': + '@tiptap/extension-floating-menu@3.20.1(@floating-ui/dom@1.7.4)(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)': dependencies: '@floating-ui/dom': 1.7.4 - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) - '@tiptap/pm': 3.16.0 + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) + '@tiptap/pm': 3.20.1 optional: true - '@tiptap/extension-gapcursor@3.16.0(@tiptap/extensions@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))': + '@tiptap/extension-gapcursor@3.20.1(@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/extensions': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extensions': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) - '@tiptap/extension-hard-break@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-hard-break@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-heading@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-heading@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-highlight@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-highlight@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-horizontal-rule@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)': + '@tiptap/extension-horizontal-rule@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) - '@tiptap/pm': 3.16.0 + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) + '@tiptap/pm': 3.20.1 - '@tiptap/extension-image@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-image@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-italic@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-italic@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-link@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)': + '@tiptap/extension-link@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) - '@tiptap/pm': 3.16.0 + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) + '@tiptap/pm': 3.20.1 linkifyjs: 4.3.2 - '@tiptap/extension-list-item@3.16.0(@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))': + '@tiptap/extension-list-item@3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/extension-list': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extension-list': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) - '@tiptap/extension-list-keymap@3.16.0(@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))': + '@tiptap/extension-list-keymap@3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/extension-list': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extension-list': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) - '@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)': + '@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) - '@tiptap/pm': 3.16.0 + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) + '@tiptap/pm': 3.20.1 - '@tiptap/extension-ordered-list@3.16.0(@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))': + '@tiptap/extension-ordered-list@3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/extension-list': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extension-list': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) - '@tiptap/extension-paragraph@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-paragraph@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-placeholder@3.16.0(@tiptap/extensions@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))': + '@tiptap/extension-placeholder@3.20.1(@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/extensions': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extensions': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) - '@tiptap/extension-strike@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-strike@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-table-cell@3.16.0(@tiptap/extension-table@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))': + '@tiptap/extension-table-cell@3.20.1(@tiptap/extension-table@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/extension-table': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extension-table': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) - '@tiptap/extension-table-header@3.16.0(@tiptap/extension-table@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))': + '@tiptap/extension-table-header@3.20.1(@tiptap/extension-table@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/extension-table': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extension-table': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) - '@tiptap/extension-table-row@3.16.0(@tiptap/extension-table@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))': + '@tiptap/extension-table-row@3.20.1(@tiptap/extension-table@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/extension-table': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extension-table': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) - '@tiptap/extension-table@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)': + '@tiptap/extension-table@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) - '@tiptap/pm': 3.16.0 + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) + '@tiptap/pm': 3.20.1 - '@tiptap/extension-task-item@3.16.0(@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))': + '@tiptap/extension-task-item@3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/extension-list': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extension-list': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) - '@tiptap/extension-task-list@3.16.0(@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0))': + '@tiptap/extension-task-list@3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/extension-list': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extension-list': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) - '@tiptap/extension-text-align@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-text-align@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-text-style@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-text-style@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-text@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-text@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extension-underline@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))': + '@tiptap/extension-underline@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) - '@tiptap/extensions@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)': + '@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) - '@tiptap/pm': 3.16.0 + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) + '@tiptap/pm': 3.20.1 - '@tiptap/pm@3.16.0': + '@tiptap/pm@3.20.1': dependencies: prosemirror-changeset: 2.3.0 prosemirror-collab: 1.3.1 @@ -13699,51 +13683,49 @@ snapshots: prosemirror-transform: 1.10.2 prosemirror-view: 1.41.4 - '@tiptap/react@3.16.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@tiptap/react@3.20.1(@floating-ui/dom@1.7.4)(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) - '@tiptap/pm': 3.16.0 - '@types/react': 19.2.8 - '@types/react-dom': 19.2.3(@types/react@19.2.8) + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) + '@tiptap/pm': 3.20.1 + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) '@types/use-sync-external-store': 0.0.6 fast-equals: 5.3.3 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - use-sync-external-store: 1.4.0(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + use-sync-external-store: 1.4.0(react@19.2.4) optionalDependencies: - '@tiptap/extension-bubble-menu': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) - '@tiptap/extension-floating-menu': 3.16.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) + '@tiptap/extension-bubble-menu': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) + '@tiptap/extension-floating-menu': 3.20.1(@floating-ui/dom@1.7.4)(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) transitivePeerDependencies: - '@floating-ui/dom' - '@tiptap/starter-kit@3.16.0': + '@tiptap/starter-kit@3.20.1': dependencies: - '@tiptap/core': 3.16.0(@tiptap/pm@3.16.0) - '@tiptap/extension-blockquote': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) - '@tiptap/extension-bold': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) - '@tiptap/extension-bullet-list': 3.16.0(@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)) - '@tiptap/extension-code': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) - '@tiptap/extension-code-block': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) - '@tiptap/extension-document': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) - '@tiptap/extension-dropcursor': 3.16.0(@tiptap/extensions@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)) - '@tiptap/extension-gapcursor': 3.16.0(@tiptap/extensions@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)) - '@tiptap/extension-hard-break': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) - '@tiptap/extension-heading': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) - '@tiptap/extension-horizontal-rule': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) - '@tiptap/extension-italic': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) - '@tiptap/extension-link': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) - '@tiptap/extension-list': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) - '@tiptap/extension-list-item': 3.16.0(@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)) - '@tiptap/extension-list-keymap': 3.16.0(@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)) - '@tiptap/extension-ordered-list': 3.16.0(@tiptap/extension-list@3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0)) - '@tiptap/extension-paragraph': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) - '@tiptap/extension-strike': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) - '@tiptap/extension-text': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) - '@tiptap/extension-underline': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0)) - '@tiptap/extensions': 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))(@tiptap/pm@3.16.0) - '@tiptap/pm': 3.16.0 - - '@tootallnate/quickjs-emscripten@0.23.0': {} + '@tiptap/core': 3.20.1(@tiptap/pm@3.20.1) + '@tiptap/extension-blockquote': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) + '@tiptap/extension-bold': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) + '@tiptap/extension-bullet-list': 3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)) + '@tiptap/extension-code': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) + '@tiptap/extension-code-block': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) + '@tiptap/extension-document': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) + '@tiptap/extension-dropcursor': 3.20.1(@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)) + '@tiptap/extension-gapcursor': 3.20.1(@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)) + '@tiptap/extension-hard-break': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) + '@tiptap/extension-heading': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) + '@tiptap/extension-horizontal-rule': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) + '@tiptap/extension-italic': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) + '@tiptap/extension-link': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) + '@tiptap/extension-list': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) + '@tiptap/extension-list-item': 3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)) + '@tiptap/extension-list-keymap': 3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)) + '@tiptap/extension-ordered-list': 3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)) + '@tiptap/extension-paragraph': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) + '@tiptap/extension-strike': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) + '@tiptap/extension-text': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) + '@tiptap/extension-underline': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1)) + '@tiptap/extensions': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1) + '@tiptap/pm': 3.20.1 '@tree-sitter-grammars/tree-sitter-yaml@0.7.1(tree-sitter@0.22.4)': dependencies: @@ -13753,128 +13735,112 @@ snapshots: tree-sitter: 0.22.4 optional: true - '@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3)': + '@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3)': dependencies: - '@trpc/server': 11.8.1(typescript@5.9.3) + '@trpc/server': 11.12.0(typescript@5.9.3) typescript: 5.9.3 - '@trpc/next@11.8.1(@tanstack/react-query@5.90.19(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.8.1(@tanstack/react-query@5.90.19(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(next@16.1.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + '@trpc/next@11.12.0(@tanstack/react-query@5.90.21(react@19.2.4))(@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.12.0(@tanstack/react-query@5.90.21(react@19.2.4))(@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.12.0(typescript@5.9.3))(react@19.2.4)(typescript@5.9.3))(@trpc/server@11.12.0(typescript@5.9.3))(next@16.1.6(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@trpc/client': 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) - '@trpc/server': 11.8.1(typescript@5.9.3) - next: 16.1.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@trpc/client': 11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3) + '@trpc/server': 11.12.0(typescript@5.9.3) + next: 16.1.6(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) typescript: 5.9.3 optionalDependencies: - '@tanstack/react-query': 5.90.19(react@19.2.3) - '@trpc/react-query': 11.8.1(@tanstack/react-query@5.90.19(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@tanstack/react-query': 5.90.21(react@19.2.4) + '@trpc/react-query': 11.12.0(@tanstack/react-query@5.90.21(react@19.2.4))(@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.12.0(typescript@5.9.3))(react@19.2.4)(typescript@5.9.3) - '@trpc/react-query@11.8.1(@tanstack/react-query@5.90.19(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + '@trpc/react-query@11.12.0(@tanstack/react-query@5.90.21(react@19.2.4))(@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.12.0(typescript@5.9.3))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@tanstack/react-query': 5.90.19(react@19.2.3) - '@trpc/client': 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) - '@trpc/server': 11.8.1(typescript@5.9.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@tanstack/react-query': 5.90.21(react@19.2.4) + '@trpc/client': 11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3) + '@trpc/server': 11.12.0(typescript@5.9.3) + react: 19.2.4 typescript: 5.9.3 - '@trpc/server@11.8.1(typescript@5.9.3)': + '@trpc/server@11.12.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@trpc/tanstack-react-query@11.8.1(@tanstack/react-query@5.90.19(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + '@trpc/tanstack-react-query@11.12.0(@tanstack/react-query@5.90.21(react@19.2.4))(@trpc/client@11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.12.0(typescript@5.9.3))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@tanstack/react-query': 5.90.19(react@19.2.3) - '@trpc/client': 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) - '@trpc/server': 11.8.1(typescript@5.9.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@tanstack/react-query': 5.90.21(react@19.2.4) + '@trpc/client': 11.12.0(@trpc/server@11.12.0(typescript@5.9.3))(typescript@5.9.3) + '@trpc/server': 11.12.0(typescript@5.9.3) + react: 19.2.4 typescript: 5.9.3 - '@tsconfig/node10@1.0.11': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.7.5(@swc/core@1.15.3)(@types/node@24.10.9)(typescript@5.9.3)': - dependencies: - '@turbo/workspaces': 2.7.5 - commander: 10.0.0 - fs-extra: 10.1.0 - inquirer: 8.2.4 - minimatch: 9.0.0 - node-plop: 0.26.3 - picocolors: 1.0.1 - proxy-agent: 6.5.0 - ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@24.10.9)(typescript@5.9.3) - update-check: 1.5.4 - validate-npm-package-name: 5.0.0 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - supports-color - - typescript + '@turbo/gen-darwin-64@2.8.16': + optional: true - '@turbo/workspaces@2.7.5': + '@turbo/gen-darwin-arm64@2.8.16': + optional: true + + '@turbo/gen-linux-64@2.8.16': + optional: true + + '@turbo/gen-linux-arm64@2.8.16': + optional: true + + '@turbo/gen-windows-64@2.8.16': + optional: true + + '@turbo/gen@2.8.16(@types/node@24.12.0)': dependencies: - commander: 10.0.0 - execa: 5.1.1 - fast-glob: 3.2.12 - fs-extra: 10.1.0 - gradient-string: 2.0.1 - inquirer: 8.2.4 - js-yaml: 4.1.0 - ora: 4.1.1 - picocolors: 1.0.1 - semver: 7.6.2 - update-check: 1.5.4 + '@inquirer/prompts': 7.10.1(@types/node@24.12.0) + node-plop: 0.32.3(@types/node@24.12.0) + optionalDependencies: + '@turbo/gen-darwin-64': 2.8.16 + '@turbo/gen-darwin-arm64': 2.8.16 + '@turbo/gen-linux-64': 2.8.16 + '@turbo/gen-linux-arm64': 2.8.16 + '@turbo/gen-windows-64': 2.8.16 + transitivePeerDependencies: + - '@types/node' '@types/adm-zip@0.5.7': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/aws-lambda@8.10.146': {} '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 '@types/bcrypt@6.0.0': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/chai@5.2.2': dependencies: @@ -13884,7 +13850,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/cookie@0.4.1': {} @@ -13893,11 +13859,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/cors@2.8.17': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/crypto-js@4.2.2': {} @@ -13937,19 +13903,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/ssh2': 1.15.1 - '@types/dockerode@3.3.47': + '@types/dockerode@4.0.1': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 24.10.9 - '@types/ssh2': 1.15.1 - - '@types/dockerode@4.0.0': - dependencies: - '@types/docker-modem': 3.0.6 - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/ssh2': 1.15.1 '@types/estree-jsx@1.0.5': @@ -13960,7 +13920,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13972,21 +13932,16 @@ snapshots: '@types/qs': 6.9.16 '@types/serve-static': 1.15.7 - '@types/glob@7.2.0': - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 24.10.9 - '@types/hast@3.0.4': dependencies: '@types/unist': 2.0.11 '@types/http-errors@2.0.4': {} - '@types/inquirer@6.5.0': + '@types/inquirer@9.0.9': dependencies: '@types/through': 0.0.33 - rxjs: 6.6.7 + rxjs: 7.8.2 '@types/js-yaml@4.0.9': {} @@ -14011,15 +13966,13 @@ snapshots: '@types/mime@1.3.5': {} - '@types/minimatch@5.1.2': {} - '@types/ms@2.1.0': {} '@types/node-cron@3.0.11': {} '@types/node-fetch@2.6.13': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 form-data: 4.0.5 '@types/node-unifi@2.5.1(patch_hash=5e6ae51e2a17a7f9729bfa30b0eb3d0842a5810ac6db47603ab4a6efa1ed84c5)': @@ -14030,19 +13983,21 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@24.10.9': + '@types/node@24.12.0': dependencies: undici-types: 7.16.0 '@types/normalize-package-data@2.4.4': {} - '@types/pg@8.16.0': + '@types/pg@8.18.0': dependencies: - '@types/node': 24.10.9 - pg-protocol: 1.10.3 + '@types/node': 24.12.0 + pg-protocol: 1.12.0 pg-types: 2.2.0 - '@types/prismjs@1.26.5': {} + '@types/picomatch@4.0.2': {} + + '@types/prismjs@1.26.6': {} '@types/qs@6.9.16': {} @@ -14052,11 +14007,11 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@19.2.3(@types/react@19.2.8)': + '@types/react-dom@19.2.3(@types/react@19.2.14)': dependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.14 - '@types/react@19.2.8': + '@types/react@19.2.14': dependencies: csstype: 3.2.3 @@ -14065,21 +14020,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/ssh2@0.5.52': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -14088,17 +14043,15 @@ snapshots: '@types/stream-buffers@3.0.7': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/swagger-ui-react@5.18.0': dependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.14 '@types/through@0.0.33': dependencies: - '@types/node': 24.10.9 - - '@types/tinycolor2@1.4.6': {} + '@types/node': 24.12.0 '@types/triple-beam@1.3.5': {} @@ -14115,21 +14068,21 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 '@types/xml2js@0.4.14': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 - '@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/type-utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.1 - eslint: 9.39.2 + '@typescript-eslint/parser': 8.57.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/type-utils': 8.57.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.0 + eslint: 9.39.4 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -14137,86 +14090,86 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.0 debug: 4.4.3 - eslint: 9.39.2 + eslint: 9.39.4 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.53.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) - '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.53.1': + '@typescript-eslint/scope-manager@8.57.0': dependencies: - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/visitor-keys': 8.57.0 - '@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.53.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.57.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@9.39.4)(typescript@5.9.3) debug: 4.4.3 - eslint: 9.39.2 + eslint: 9.39.4 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.53.1': {} + '@typescript-eslint/types@8.57.0': {} - '@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.53.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/project-service': 8.57.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/visitor-keys': 8.57.0 debug: 4.4.3 - minimatch: 9.0.5 - semver: 7.7.3 + minimatch: 10.2.2 + semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.53.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.57.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - eslint: 9.39.2 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + eslint: 9.39.4 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.53.1': + '@typescript-eslint/visitor-keys@8.57.0': dependencies: - '@typescript-eslint/types': 8.53.1 - eslint-visitor-keys: 4.2.1 + '@typescript-eslint/types': 8.57.0 + eslint-visitor-keys: 5.0.0 '@umami/node@0.4.0': {} '@ungap/structured-clone@1.3.0': {} - '@videojs/http-streaming@3.17.2(video.js@8.23.4)': + '@videojs/http-streaming@3.17.4(video.js@8.23.7)': dependencies: '@babel/runtime': 7.28.6 '@videojs/vhs-utils': 4.1.1 @@ -14225,7 +14178,7 @@ snapshots: m3u8-parser: 7.2.0 mpd-parser: 1.3.1 mux.js: 7.1.0 - video.js: 8.23.4 + video.js: 8.23.7 '@videojs/vhs-utils@4.0.0': dependencies: @@ -14244,22 +14197,22 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@5.1.2(vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': + '@vitejs/plugin-react@5.1.4(vite@7.1.12(@types/node@24.12.0)(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1))': dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5) - '@rolldown/pluginutils': 1.0.0-beta.53 + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) + '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.12.0)(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@4.0.17(vitest@4.0.17)': + '@vitest/coverage-v8@4.0.18(vitest@4.0.18)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.17 + '@vitest/utils': 4.0.18 ast-v8-to-istanbul: 0.3.10 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -14268,56 +14221,56 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.17(@types/node@24.10.9)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vitest: 4.0.18(@types/node@24.12.0)(@vitest/ui@4.0.18)(jsdom@28.1.0(@noble/hashes@2.0.1))(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1) - '@vitest/expect@4.0.17': + '@vitest/expect@4.0.18': dependencies: - '@standard-schema/spec': 1.0.0 + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.2 - '@vitest/spy': 4.0.17 - '@vitest/utils': 4.0.17 + '@vitest/spy': 4.0.18 + '@vitest/utils': 4.0.18 chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.17(vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': + '@vitest/mocker@4.0.18(vite@7.1.12(@types/node@24.12.0)(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1))': dependencies: - '@vitest/spy': 4.0.17 + '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.12.0)(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1) - '@vitest/pretty-format@4.0.17': + '@vitest/pretty-format@4.0.18': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.17': + '@vitest/runner@4.0.18': dependencies: - '@vitest/utils': 4.0.17 + '@vitest/utils': 4.0.18 pathe: 2.0.3 - '@vitest/snapshot@4.0.17': + '@vitest/snapshot@4.0.18': dependencies: - '@vitest/pretty-format': 4.0.17 + '@vitest/pretty-format': 4.0.18 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.17': {} + '@vitest/spy@4.0.18': {} - '@vitest/ui@4.0.17(vitest@4.0.17)': + '@vitest/ui@4.0.18(vitest@4.0.18)': dependencies: - '@vitest/utils': 4.0.17 + '@vitest/utils': 4.0.18 fflate: 0.8.2 flatted: 3.3.3 pathe: 2.0.3 sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.17(@types/node@24.10.9)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vitest: 4.0.18(@types/node@24.12.0)(@vitest/ui@4.0.18)(jsdom@28.1.0(@noble/hashes@2.0.1))(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1) - '@vitest/utils@4.0.17': + '@vitest/utils@4.0.18': dependencies: - '@vitest/pretty-format': 4.0.17 + '@vitest/pretty-format': 4.0.18 tinyrainbow: 3.0.3 '@webassemblyjs/ast@1.14.1': @@ -14423,21 +14376,17 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-import-attributes@1.9.5(acorn@8.15.0): + acorn-import-attributes@1.9.5(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 - acorn-jsx@5.3.2(acorn@8.15.0): + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: - acorn: 8.15.0 - - acorn-walk@8.3.4: - dependencies: - acorn: 8.15.0 + acorn: 8.16.0 acorn@8.14.0: {} - acorn@8.15.0: {} + acorn@8.16.0: {} adm-zip@0.5.16: {} @@ -14460,34 +14409,34 @@ snapshots: clean-stack: 5.2.0 indent-string: 5.0.0 - ajv-formats@2.1.1(ajv@8.17.1): + ajv-formats@2.1.1(ajv@8.18.0): optionalDependencies: - ajv: 8.17.1 + ajv: 8.18.0 - ajv-formats@3.0.1(ajv@8.17.1): + ajv-formats@3.0.1(ajv@8.18.0): optionalDependencies: - ajv: 8.17.1 + ajv: 8.18.0 - ajv-keywords@3.5.2(ajv@6.12.6): + ajv-keywords@3.5.2(ajv@6.14.0): dependencies: - ajv: 6.12.6 + ajv: 6.14.0 - ajv-keywords@5.1.0(ajv@8.17.1): + ajv-keywords@5.1.0(ajv@8.18.0): dependencies: - ajv: 8.17.1 + ajv: 8.18.0 fast-deep-equal: 3.1.3 - ajv@6.12.6: + ajv@6.14.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.17.1: + ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -14505,8 +14454,6 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} - ansi-regex@6.2.2: {} ansi-styles@3.2.1: @@ -14543,8 +14490,6 @@ snapshots: tar-stream: 3.1.7 zip-stream: 6.0.1 - arg@4.1.3: {} - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -14593,8 +14538,6 @@ snapshots: is-string: 1.1.1 math-intrinsics: 1.1.0 - array-union@2.1.0: {} - array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.8 @@ -14677,10 +14620,6 @@ snapshots: ast-types-flow@0.0.8: {} - ast-types@0.13.4: - dependencies: - tslib: 2.8.1 - ast-types@0.14.2: dependencies: tslib: 2.8.1 @@ -14713,10 +14652,10 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - avvio@9.1.0: + avvio@9.2.0: dependencies: '@fastify/error': 4.2.0 - fastq: 1.17.1 + fastq: 1.20.1 aws-ssl-profiles@1.1.2: {} @@ -14752,7 +14691,9 @@ snapshots: bail@2.0.2: {} - balanced-match@3.0.1: {} + balanced-match@4.0.2: + dependencies: + jackspeak: 4.2.3 bare-events@2.5.4: optional: true @@ -14789,7 +14730,7 @@ snapshots: baseline-browser-mapping@2.8.29: {} - basic-ftp@5.0.5: {} + baseline-browser-mapping@2.9.19: {} bcrypt-pbkdf@1.0.2: dependencies: @@ -14840,9 +14781,13 @@ snapshots: widest-line: 3.1.0 wrap-ansi: 7.0.0 - brace-expansion@4.0.1: + brace-expansion@5.0.2: dependencies: - balanced-match: 3.0.1 + balanced-match: 4.0.2 + + brace-expansion@5.0.4: + dependencies: + balanced-match: 4.0.2 braces@3.0.3: dependencies: @@ -14862,13 +14807,13 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) - browserslist@4.28.0: + browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.8.29 - caniuse-lite: 1.0.30001755 - electron-to-chromium: 1.5.256 + baseline-browser-mapping: 2.9.19 + caniuse-lite: 1.0.30001766 + electron-to-chromium: 1.5.282 node-releases: 2.0.27 - update-browserslist-db: 1.1.4(browserslist@4.28.0) + update-browserslist-db: 1.2.3(browserslist@4.28.1) buffer-crc32@1.0.0: {} @@ -14887,10 +14832,6 @@ snapshots: buildcheck@0.0.6: optional: true - builtins@5.1.0: - dependencies: - semver: 7.7.3 - byline@5.0.0: {} bytes@3.1.2: {} @@ -14932,17 +14873,14 @@ snapshots: callsites@3.1.0: {} - camel-case@3.0.0: - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - camelcase-css@2.0.1: {} camelcase@6.3.0: {} caniuse-lite@1.0.30001755: {} + caniuse-lite@1.0.30001766: {} + ccount@2.0.1: {} chai@6.2.1: {} @@ -14953,11 +14891,6 @@ snapshots: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -14965,26 +14898,7 @@ snapshots: chalk@5.4.1: {} - change-case@3.1.0: - dependencies: - camel-case: 3.0.0 - constant-case: 2.0.0 - dot-case: 2.1.1 - header-case: 1.0.1 - is-lower-case: 1.1.3 - is-upper-case: 1.1.2 - lower-case: 1.1.4 - lower-case-first: 1.0.2 - no-case: 2.3.2 - param-case: 2.1.1 - pascal-case: 2.0.1 - path-case: 2.1.1 - sentence-case: 2.1.1 - snake-case: 2.1.0 - swap-case: 1.1.2 - title-case: 2.1.1 - upper-case: 1.1.3 - upper-case-first: 1.1.2 + change-case@5.4.4: {} char-regex@1.0.2: {} @@ -14996,7 +14910,7 @@ snapshots: character-reference-invalid@2.0.1: {} - chardet@0.7.0: {} + chardet@2.1.1: {} chokidar@4.0.0: dependencies: @@ -15050,7 +14964,7 @@ snapshots: optionalDependencies: '@colors/colors': 1.5.0 - cli-width@3.0.0: {} + cli-width@4.1.0: {} client-only@0.0.1: {} @@ -15119,8 +15033,6 @@ snapshots: comma-separated-tokens@2.0.3: {} - commander@10.0.0: {} - commander@2.20.3: {} compare-func@2.0.0: @@ -15159,16 +15071,11 @@ snapshots: write-file-atomic: 3.0.3 xdg-basedir: 4.0.0 - constant-case@2.0.0: - dependencies: - snake-case: 2.1.0 - upper-case: 1.1.3 - conventional-changelog-angular@8.0.0: dependencies: compare-func: 2.0.0 - conventional-changelog-conventionalcommits@9.1.0: + conventional-changelog-conventionalcommits@9.3.0: dependencies: compare-func: 2.0.0 @@ -15178,7 +15085,7 @@ snapshots: conventional-commits-filter: 5.0.0 handlebars: 4.7.8 meow: 13.2.0 - semver: 7.7.3 + semver: 7.7.4 conventional-commits-filter@5.0.0: {} @@ -15194,7 +15101,7 @@ snapshots: cookie@0.7.2: {} - cookie@1.0.2: {} + cookie@1.1.1: {} cookies@0.9.1: dependencies: @@ -15240,8 +15147,6 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.5.2 - create-require@1.1.1: {} - crelt@1.0.6: {} cross-env@10.1.0: @@ -15282,13 +15187,12 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.4(postcss@8.5.6): + cssstyle@6.0.1: dependencies: - '@asamuzakjp/css-color': 4.1.0 - '@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6) + '@asamuzakjp/css-color': 4.1.2 + '@csstools/css-syntax-patches-for-csstree': 1.0.26 css-tree: 3.1.0 - transitivePeerDependencies: - - postcss + lru-cache: 11.2.5 csstype@3.2.3: {} @@ -15332,12 +15236,12 @@ snapshots: damerau-levenshtein@1.0.8: {} - data-uri-to-buffer@6.0.2: {} - - data-urls@6.0.0: + data-urls@7.0.0(@noble/hashes@2.0.1): dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 15.1.0 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.0(@noble/hashes@2.0.1) + transitivePeerDependencies: + - '@noble/hashes' data-view-buffer@1.0.1: dependencies: @@ -15438,23 +15342,6 @@ snapshots: defu@6.1.4: {} - degenerator@5.0.1: - dependencies: - ast-types: 0.13.4 - escodegen: 2.1.0 - esprima: 4.0.1 - - del@5.1.0: - dependencies: - globby: 10.0.2 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 3.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - delayed-stream@1.0.0: {} denque@2.1.0: {} @@ -15481,19 +15368,19 @@ snapshots: dependencies: dequal: 2.0.3 - diff@4.0.2: {} - - diff@5.2.0: {} + diff@5.2.2: {} dir-glob@3.0.1: dependencies: path-type: 4.0.0 + dlv@1.1.3: {} + dns-caching@0.2.9: dependencies: lru-cache: 11.2.4 - docker-compose@1.3.0: + docker-compose@1.3.1: dependencies: yaml: 2.5.1 @@ -15533,14 +15420,10 @@ snapshots: optionalDependencies: '@types/trusted-types': 2.0.7 - dompurify@3.3.1: + dompurify@3.3.3: optionalDependencies: '@types/trusted-types': 2.0.7 - dot-case@2.1.1: - dependencies: - no-case: 2.3.2 - dot-prop@5.3.0: dependencies: is-obj: 2.0.0 @@ -15548,7 +15431,7 @@ snapshots: dotenv-cli@11.0.0: dependencies: cross-spawn: 7.0.6 - dotenv: 17.2.3 + dotenv: 17.3.1 dotenv-expand: 12.0.3 minimist: 1.2.8 @@ -15560,11 +15443,11 @@ snapshots: dotenv@16.6.1: {} - dotenv@17.2.3: {} + dotenv@17.3.1: {} drange@1.1.1: {} - drizzle-kit@0.31.8: + drizzle-kit@0.31.9: dependencies: '@drizzle-team/brocli': 0.10.2 '@esbuild-kit/esm-loader': 2.6.5 @@ -15573,19 +15456,19 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1): + drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.19.1(@types/node@24.12.0))(pg@8.20.0): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.13 - '@types/pg': 8.16.0 + '@types/pg': 8.18.0 better-sqlite3: 12.6.2 gel: 2.0.0 - mysql2: 3.16.1 - pg: 8.17.1 + mysql2: 3.19.1(@types/node@24.12.0) + pg: 8.20.0 - drizzle-zod@0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1))(zod@4.2.1): + drizzle-zod@0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.19.1(@types/node@24.12.0))(pg@8.20.0))(zod@4.2.1): dependencies: - drizzle-orm: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1) + drizzle-orm: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.19.1(@types/node@24.12.0))(pg@8.20.0) zod: 4.2.1 dunder-proto@1.0.1: @@ -15600,14 +15483,14 @@ snapshots: eastasianwidth@0.2.0: {} - effect@3.19.4: + effect@3.19.19: dependencies: - '@standard-schema/spec': 1.0.0 + '@standard-schema/spec': 1.1.0 fast-check: 3.23.2 electron-to-chromium@1.5.114: {} - electron-to-chromium@1.5.256: {} + electron-to-chromium@1.5.282: {} electron-to-chromium@1.5.55: {} @@ -15645,7 +15528,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 24.10.9 + '@types/node': 24.12.0 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -15658,7 +15541,7 @@ snapshots: - supports-color - utf-8-validate - enhanced-resolve@5.18.3: + enhanced-resolve@5.20.0: dependencies: graceful-fs: 4.2.11 tapable: 2.3.0 @@ -15947,34 +15830,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.2: + esbuild@0.27.3: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.2 - '@esbuild/android-arm': 0.27.2 - '@esbuild/android-arm64': 0.27.2 - '@esbuild/android-x64': 0.27.2 - '@esbuild/darwin-arm64': 0.27.2 - '@esbuild/darwin-x64': 0.27.2 - '@esbuild/freebsd-arm64': 0.27.2 - '@esbuild/freebsd-x64': 0.27.2 - '@esbuild/linux-arm': 0.27.2 - '@esbuild/linux-arm64': 0.27.2 - '@esbuild/linux-ia32': 0.27.2 - '@esbuild/linux-loong64': 0.27.2 - '@esbuild/linux-mips64el': 0.27.2 - '@esbuild/linux-ppc64': 0.27.2 - '@esbuild/linux-riscv64': 0.27.2 - '@esbuild/linux-s390x': 0.27.2 - '@esbuild/linux-x64': 0.27.2 - '@esbuild/netbsd-arm64': 0.27.2 - '@esbuild/netbsd-x64': 0.27.2 - '@esbuild/openbsd-arm64': 0.27.2 - '@esbuild/openbsd-x64': 0.27.2 - '@esbuild/openharmony-arm64': 0.27.2 - '@esbuild/sunos-x64': 0.27.2 - '@esbuild/win32-arm64': 0.27.2 - '@esbuild/win32-ia32': 0.27.2 - '@esbuild/win32-x64': 0.27.2 + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 escalade@3.2.0: {} @@ -15986,23 +15869,15 @@ snapshots: escape-string-regexp@5.0.0: {} - escodegen@2.1.0: + eslint-config-prettier@10.1.8(eslint@9.39.4): dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 + eslint: 9.39.4 - eslint-config-prettier@10.1.8(eslint@9.39.2): + eslint-config-turbo@2.8.16(eslint@9.39.4)(turbo@2.8.16): dependencies: - eslint: 9.39.2 - - eslint-config-turbo@2.7.5(eslint@9.39.2)(turbo@2.7.5): - dependencies: - eslint: 9.39.2 - eslint-plugin-turbo: 2.7.5(eslint@9.39.2)(turbo@2.7.5) - turbo: 2.7.5 + eslint: 9.39.4 + eslint-plugin-turbo: 2.8.16(eslint@9.39.4)(turbo@2.8.16) + turbo: 2.8.16 eslint-import-resolver-node@0.3.9: dependencies: @@ -16012,17 +15887,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2)(typescript@5.9.3) - eslint: 9.39.2 + '@typescript-eslint/parser': 8.57.0(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -16031,9 +15906,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.39.2 + eslint: 9.39.4 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -16045,13 +15920,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.0(eslint@9.39.4)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.2): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4): dependencies: aria-query: 5.3.2 array-includes: 3.1.8 @@ -16061,7 +15936,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.39.2 + eslint: 9.39.4 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -16070,17 +15945,17 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@6.1.1(eslint@9.39.2): + eslint-plugin-react-hooks@6.1.1(eslint@9.39.4): dependencies: '@babel/core': 7.28.4 '@babel/parser': 7.28.4 - eslint: 9.39.2 + eslint: 9.39.4 zod: 4.2.1 zod-validation-error: 4.0.2(zod@4.2.1) transitivePeerDependencies: - supports-color - eslint-plugin-react@7.37.5(eslint@9.39.2): + eslint-plugin-react@7.37.5(eslint@9.39.4): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -16088,7 +15963,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.39.2 + eslint: 9.39.4 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -16102,11 +15977,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.7.5(eslint@9.39.2)(turbo@2.7.5): + eslint-plugin-turbo@2.8.16(eslint@9.39.4)(turbo@2.8.16): dependencies: dotenv: 16.0.3 - eslint: 9.39.2 - turbo: 2.7.5 + eslint: 9.39.4 + turbo: 2.8.16 eslint-scope@5.1.1: dependencies: @@ -16122,21 +15997,23 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.2: + eslint-visitor-keys@5.0.0: {} + + eslint@9.39.4: dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.21.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.2 '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.39.2 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 '@types/estree': 1.0.8 - ajv: 6.12.6 + ajv: 6.14.0 chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 @@ -16155,7 +16032,7 @@ snapshots: is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -16163,8 +16040,8 @@ snapshots: espree@10.4.0: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 4.2.1 esprima@4.0.1: {} @@ -16246,12 +16123,6 @@ snapshots: extend@3.0.2: {} - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.2.5 - fast-check@3.23.2: dependencies: pure-rand: 6.1.0 @@ -16266,14 +16137,6 @@ snapshots: fast-fifo@1.3.2: {} - fast-glob@3.2.12: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - fast-glob@3.3.1: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -16282,25 +16145,17 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - fast-json-patch@3.1.1: {} fast-json-stable-stringify@2.1.0: {} - fast-json-stringify@6.0.1: + fast-json-stringify@6.3.0: dependencies: '@fastify/merge-json-schemas': 0.2.1 - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - fast-uri: 3.0.6 - json-schema-ref-resolver: 2.0.1 + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + fast-uri: 3.1.0 + json-schema-ref-resolver: 3.0.0 rfdc: 1.4.1 fast-levenshtein@2.0.6: {} @@ -16309,37 +16164,40 @@ snapshots: dependencies: fast-decode-uri-component: 1.0.1 - fast-uri@3.0.6: {} + fast-uri@3.1.0: {} - fast-xml-parser@5.3.3: + fast-xml-builder@1.0.0: {} + + fast-xml-parser@5.4.2: dependencies: - strnum: 2.1.0 + fast-xml-builder: 1.0.0 + strnum: 2.1.2 faster-babel-types@0.1.0(@babel/types@7.26.0): dependencies: '@babel/types': 7.26.0 - fastify@5.7.1: + fastify@5.8.2: dependencies: '@fastify/ajv-compiler': 4.0.5 '@fastify/error': 4.2.0 '@fastify/fast-json-stringify-compiler': 5.0.3 - '@fastify/proxy-addr': 5.0.0 + '@fastify/proxy-addr': 5.1.0 abstract-logging: 2.0.1 - avvio: 9.1.0 - fast-json-stringify: 6.0.1 - find-my-way: 9.3.0 + avvio: 9.2.0 + fast-json-stringify: 6.3.0 + find-my-way: 9.5.0 light-my-request: 6.6.0 - pino: 10.1.0 + pino: 10.3.1 process-warning: 5.0.0 rfdc: 1.4.1 - secure-json-parse: 4.0.0 - semver: 7.7.3 + secure-json-parse: 4.1.0 + semver: 7.7.4 toad-cache: 3.7.0 - fastq@1.17.1: + fastq@1.20.1: dependencies: - reusify: 1.0.4 + reusify: 1.1.0 fault@1.0.4: dependencies: @@ -16361,10 +16219,6 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - figures@3.2.0: - dependencies: - escape-string-regexp: 1.0.5 - figures@6.1.0: dependencies: is-unicode-supported: 2.1.0 @@ -16383,7 +16237,7 @@ snapshots: dependencies: to-regex-range: 5.0.1 - find-my-way@9.3.0: + find-my-way@9.5.0: dependencies: fast-deep-equal: 3.1.3 fast-querystring: 1.1.2 @@ -16450,20 +16304,12 @@ snapshots: fs-constants@1.0.0: {} - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - fs.realpath@1.0.0: {} - fsevents@2.3.2: optional: true @@ -16497,7 +16343,7 @@ snapshots: '@petamoriken/float16': 3.9.3 debug: 4.4.3 env-paths: 3.0.0 - semver: 7.7.3 + semver: 7.7.4 shell-quote: 1.8.3 which: 4.0.0 transitivePeerDependencies: @@ -16580,7 +16426,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.13.0: + get-tsconfig@4.13.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -16588,15 +16434,6 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - get-uri@6.0.3: - dependencies: - basic-ftp: 5.0.5 - data-uri-to-buffer: 6.0.2 - debug: 4.4.3 - fs-extra: 11.2.0 - transitivePeerDependencies: - - supports-color - git-hooks-list@4.1.1: {} git-log-parser@1.2.1: @@ -16629,20 +16466,11 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@13.0.0: + glob@13.0.6: dependencies: - minimatch: 10.1.1 - minipass: 7.1.2 - path-scurry: 2.0.1 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + minimatch: 10.2.2 + minipass: 7.1.3 + path-scurry: 2.0.2 global-dirs@3.0.1: dependencies: @@ -16653,8 +16481,6 @@ snapshots: min-document: 2.19.0 process: 0.11.10 - globals@11.12.0: {} - globals@14.0.0: {} globalthis@1.0.4: @@ -16662,17 +16488,6 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - globby@10.0.2: - dependencies: - '@types/glob': 7.2.0 - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - glob: 7.2.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - globrex@0.1.2: {} gopd@1.0.1: @@ -16685,11 +16500,6 @@ snapshots: graceful-fs@4.2.11: {} - gradient-string@2.0.1: - dependencies: - chalk: 4.1.2 - tinygradient: 1.1.5 - h3@1.15.1: dependencies: cookie-es: 1.2.2 @@ -16699,7 +16509,7 @@ snapshots: iron-webcrypto: 1.2.1 node-mock-http: 1.0.2 radix3: 1.1.2 - ufo: 1.6.1 + ufo: 1.6.3 uncrypto: 0.1.3 handlebars@4.7.8: @@ -16777,11 +16587,6 @@ snapshots: property-information: 7.0.0 space-separated-tokens: 2.0.2 - header-case@1.0.1: - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - hermes-estree@0.21.1: {} hermes-parser@0.21.1: @@ -16792,7 +16597,7 @@ snapshots: highlightjs-vue@1.0.0: {} - hono@4.11.4: {} + hono@4.12.7: {} hook-std@4.0.0: {} @@ -16806,11 +16611,11 @@ snapshots: hpagent@1.2.0: {} - html-encoding-sniffer@6.0.0: + html-encoding-sniffer@6.0.0(@noble/hashes@2.0.1): dependencies: - '@exodus/bytes': 1.7.0 + '@exodus/bytes': 1.11.0(@noble/hashes@2.0.1) transitivePeerDependencies: - - '@exodus/crypto' + - '@noble/hashes' html-entities@2.6.0: {} @@ -16859,10 +16664,14 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.7.0: + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 + icu-minify@4.8.3: + dependencies: + '@formatjs/icu-messageformat-parser': 3.5.0 + ieee754@1.2.1: {} ignore@5.3.2: {} @@ -16895,17 +16704,10 @@ snapshots: indent-string@5.0.0: {} - index-to-position@0.1.2: {} - index-to-position@1.2.0: {} inflation@2.1.0: {} - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - inherits@2.0.4: {} ini@1.3.8: {} @@ -16914,39 +16716,22 @@ snapshots: inline-style-parser@0.2.4: {} - inquirer@7.3.3: + inquirer@9.3.8(@types/node@24.12.0): dependencies: + '@inquirer/external-editor': 1.0.3(@types/node@24.12.0) + '@inquirer/figures': 1.0.15 ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - - inquirer@8.2.4: - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 + cli-width: 4.1.0 + mute-stream: 1.0.0 ora: 5.4.1 - run-async: 2.4.1 + run-async: 3.0.0 rxjs: 7.8.2 string-width: 4.2.3 strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 7.0.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + transitivePeerDependencies: + - '@types/node' internal-slot@1.0.7: dependencies: @@ -16962,11 +16747,11 @@ snapshots: internmap@2.0.3: {} - intl-messageformat@10.7.1: + intl-messageformat@11.1.1: dependencies: - '@formatjs/ecma402-abstract': 2.2.0 - '@formatjs/fast-memoize': 2.2.1 - '@formatjs/icu-messageformat-parser': 2.8.0 + '@formatjs/ecma402-abstract': 3.1.0 + '@formatjs/fast-memoize': 3.1.0 + '@formatjs/icu-messageformat-parser': 3.5.0 tslib: 2.8.1 into-stream@7.0.0: @@ -16978,9 +16763,9 @@ snapshots: dependencies: loose-envify: 1.4.0 - ioredis@5.9.2: + ioredis@5.10.0: dependencies: - '@ioredis/commands': 1.5.0 + '@ioredis/commands': 1.5.1 cluster-key-slot: 1.1.2 debug: 4.4.3 denque: 2.1.0 @@ -16997,7 +16782,7 @@ snapshots: jsbn: 1.1.0 sprintf-js: 1.1.3 - ipaddr.js@2.2.0: {} + ipaddr.js@2.3.0: {} iron-webcrypto@1.2.1: {} @@ -17107,10 +16892,6 @@ snapshots: is-interactive@1.0.0: {} - is-lower-case@1.1.3: - dependencies: - lower-case: 1.1.4 - is-map@2.0.3: {} is-negative-zero@2.0.3: {} @@ -17130,8 +16911,6 @@ snapshots: is-obj@2.0.0: {} - is-path-cwd@2.2.0: {} - is-path-inside@3.0.3: {} is-plain-obj@4.1.0: {} @@ -17201,10 +16980,6 @@ snapshots: is-unicode-supported@2.1.0: {} - is-upper-case@1.1.2: - dependencies: - upper-case: 1.1.3 - is-weakmap@2.0.2: {} is-weakref@1.0.2: @@ -17232,24 +17007,21 @@ snapshots: isarray@2.0.5: {} - isbinaryfile@4.0.10: {} + isbinaryfile@5.0.7: {} isexe@2.0.0: {} - isexe@3.1.1: + isexe@3.1.5: optional: true - isomorphic-dompurify@2.35.0(postcss@8.5.6): + isomorphic-dompurify@3.1.0(@noble/hashes@2.0.1): dependencies: - dompurify: 3.3.1 - jsdom: 27.4.0(postcss@8.5.6) + dompurify: 3.3.3 + jsdom: 28.1.0(@noble/hashes@2.0.1) transitivePeerDependencies: - - '@exodus/crypto' - - bufferutil + - '@noble/hashes' - canvas - - postcss - supports-color - - utf-8-validate isomorphic-fetch@3.0.0: dependencies: @@ -17298,29 +17070,33 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@4.2.3: + dependencies: + '@isaacs/cliui': 9.0.0 + java-properties@1.0.2: {} jest-worker@27.5.1: dependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 merge-stream: 2.0.0 supports-color: 8.1.1 jose@6.0.8: {} - jotai@2.16.2(@babel/core@7.26.0)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3): + jotai@2.18.1(@babel/core@7.26.0)(@babel/template@7.28.6)(@types/react@19.2.14)(react@19.2.4): optionalDependencies: '@babel/core': 7.26.0 '@babel/template': 7.28.6 - '@types/react': 19.2.8 - react: 19.2.3 + '@types/react': 19.2.14 + react: 19.2.4 - jotai@2.16.2(@babel/core@7.28.5)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3): + jotai@2.18.1(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@19.2.14)(react@19.2.4): optionalDependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@babel/template': 7.28.6 - '@types/react': 19.2.8 - react: 19.2.3 + '@types/react': 19.2.14 + react: 19.2.4 js-base64@3.7.8: optional: true @@ -17341,15 +17117,16 @@ snapshots: jsbn@1.1.0: {} - jsdom@27.4.0(postcss@8.5.6): + jsdom@28.1.0(@noble/hashes@2.0.1): dependencies: - '@acemir/cssom': 0.9.28 - '@asamuzakjp/dom-selector': 6.7.6 - '@exodus/bytes': 1.7.0 - cssstyle: 5.3.4(postcss@8.5.6) - data-urls: 6.0.0 + '@acemir/cssom': 0.9.31 + '@asamuzakjp/dom-selector': 6.8.1 + '@bramus/specificity': 2.4.2 + '@exodus/bytes': 1.11.0(@noble/hashes@2.0.1) + cssstyle: 6.0.1 + data-urls: 7.0.0(@noble/hashes@2.0.1) decimal.js: 10.6.0 - html-encoding-sniffer: 6.0.0 + html-encoding-sniffer: 6.0.0(@noble/hashes@2.0.1) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 @@ -17357,18 +17134,15 @@ snapshots: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.0 + undici: 7.21.0 w3c-xmlserializer: 5.0.0 - webidl-conversions: 8.0.0 - whatwg-mimetype: 4.0.0 - whatwg-url: 15.1.0 - ws: 8.19.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.0(@noble/hashes@2.0.1) xml-name-validator: 5.0.0 transitivePeerDependencies: - - '@exodus/crypto' - - bufferutil - - postcss + - '@noble/hashes' - supports-color - - utf-8-validate jsep@1.4.0: {} @@ -17380,7 +17154,7 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-schema-ref-resolver@2.0.1: + json-schema-ref-resolver@3.0.0: dependencies: dequal: 2.0.3 @@ -17443,10 +17217,9 @@ snapshots: dependencies: readable-stream: 2.3.8 - ldapts@8.1.3: + ldapts@8.1.7: dependencies: strict-event-emitter-types: 2.0.0 - whatwg-url: 15.1.0 levn@0.4.1: dependencies: @@ -17455,9 +17228,9 @@ snapshots: light-my-request@6.6.0: dependencies: - cookie: 1.0.2 + cookie: 1.1.1 process-warning: 4.0.1 - set-cookie-parser: 2.7.1 + set-cookie-parser: 2.7.2 lines-and-columns@1.2.4: {} @@ -17505,8 +17278,6 @@ snapshots: lodash.escaperegexp@4.1.2: {} - lodash.get@4.4.2: {} - lodash.isarguments@3.1.0: {} lodash.isplainobject@4.0.6: {} @@ -17519,10 +17290,6 @@ snapshots: lodash@4.17.21: {} - log-symbols@3.0.0: - dependencies: - chalk: 2.4.2 - log-symbols@4.1.0: dependencies: chalk: 4.1.2 @@ -17537,7 +17304,7 @@ snapshots: safe-stable-stringify: 2.5.0 triple-beam: 1.4.1 - long@5.2.3: {} + long@5.3.2: {} longest-streak@3.1.0: {} @@ -17545,12 +17312,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - lower-case-first@1.0.2: - dependencies: - lower-case: 1.1.4 - - lower-case@1.1.4: {} - lowlight@1.20.0: dependencies: fault: 1.0.4 @@ -17558,17 +17319,17 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.2: {} - lru-cache@11.2.4: {} + lru-cache@11.2.5: {} + + lru-cache@11.2.6: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - lru-cache@7.18.3: {} - - lru.min@1.1.0: {} + lru.min@1.1.4: {} m3u8-parser@7.2.0: dependencies: @@ -17582,8 +17343,8 @@ snapshots: magicast@0.5.1: dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 source-map-js: 1.2.1 make-dir@3.1.0: @@ -17592,28 +17353,26 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.3 + semver: 7.7.4 - make-error@1.3.6: {} - - mantine-form-zod-resolver@1.3.0(@mantine/form@8.3.13(react@19.2.3))(zod@4.2.1): + mantine-form-zod-resolver@1.3.0(@mantine/form@8.3.16(react@19.2.4))(zod@4.2.1): dependencies: - '@mantine/form': 8.3.13(react@19.2.3) + '@mantine/form': 8.3.16(react@19.2.4) zod: 4.2.1 - mantine-react-table@2.0.0-beta.9(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(@tabler/icons-react@3.36.1(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + mantine-react-table@2.0.0-beta.9(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/dates@8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(@tabler/icons-react@3.40.0(react@19.2.4))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - '@mantine/core': 8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@mantine/dates': 8.3.13(@mantine/core@8.3.13(@mantine/hooks@8.3.13(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.13(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@mantine/hooks': 8.3.13(react@19.2.3) - '@tabler/icons-react': 3.36.1(react@19.2.3) + '@mantine/core': 8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/dates': 8.3.16(@mantine/core@8.3.16(@mantine/hooks@8.3.16(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.16(react@19.2.4))(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mantine/hooks': 8.3.16(react@19.2.4) + '@tabler/icons-react': 3.40.0(react@19.2.4) '@tanstack/match-sorter-utils': 8.19.4 - '@tanstack/react-table': 8.20.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@tanstack/react-virtual': 3.11.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@tanstack/react-table': 8.20.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tanstack/react-virtual': 3.11.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 dayjs: 1.11.19 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) maria2@0.4.1: {} @@ -17629,7 +17388,7 @@ snapshots: marked-terminal@7.3.0(marked@15.0.11): dependencies: ansi-escapes: 7.0.0 - ansi-regex: 6.1.0 + ansi-regex: 6.2.2 chalk: 5.4.1 cli-highlight: 2.1.11 cli-table3: 0.6.5 @@ -17902,43 +17661,37 @@ snapshots: dependencies: lodash: 4.17.21 - minimatch@10.1.1: + minimatch@10.2.2: dependencies: - '@isaacs/brace-expansion': 5.0.0 + brace-expansion: 5.0.2 minimatch@3.1.2: dependencies: - brace-expansion: 4.0.1 + brace-expansion: 5.0.4 + + minimatch@3.1.5: + dependencies: + brace-expansion: 5.0.4 minimatch@5.1.6: dependencies: - brace-expansion: 4.0.1 - - minimatch@7.4.6: - dependencies: - brace-expansion: 4.0.1 - - minimatch@9.0.0: - dependencies: - brace-expansion: 4.0.1 + brace-expansion: 5.0.4 minimatch@9.0.5: dependencies: - brace-expansion: 4.0.1 + brace-expansion: 5.0.4 minimist@1.2.8: {} minipass@7.1.2: {} + minipass@7.1.3: {} + mitt@3.0.1: {} mkdirp-classic@0.5.3: {} - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mkdirp@1.0.4: {} + mkdirp@3.0.1: {} mpd-parser@1.3.1: dependencies: @@ -17953,24 +17706,26 @@ snapshots: ms@2.1.3: {} - mute-stream@0.0.8: {} + mute-stream@1.0.0: {} + + mute-stream@2.0.0: {} mux.js@7.1.0: dependencies: '@babel/runtime': 7.28.6 global: 4.4.0 - mysql2@3.16.1: + mysql2@3.19.1(@types/node@24.12.0): dependencies: + '@types/node': 24.12.0 aws-ssl-profiles: 1.1.2 denque: 2.1.0 generate-function: 2.3.1 - iconv-lite: 0.7.0 - long: 5.2.3 - lru.min: 1.1.0 + iconv-lite: 0.7.2 + long: 5.3.2 + lru.min: 1.1.4 named-placeholders: 1.1.6 - seq-queue: 0.0.5 - sqlstring: 2.3.3 + sql-escaper: 1.3.3 mz@2.7.0: dependencies: @@ -17980,7 +17735,7 @@ snapshots: named-placeholders@1.1.6: dependencies: - lru.min: 1.1.0 + lru.min: 1.1.4 nan@2.20.0: optional: true @@ -18003,79 +17758,78 @@ snapshots: nerf-dart@1.0.0: {} - netmask@2.0.2: {} - - next-auth@5.0.0-beta.30(next@16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2))(react@19.2.3): + next-auth@5.0.0-beta.30(next@16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(react@19.2.4): dependencies: '@auth/core': 0.41.0 - next: 16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) - react: 19.2.3 + next: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) + react: 19.2.4 - next-intl-swc-plugin-extractor@4.7.0: {} + next-intl-swc-plugin-extractor@4.8.3: {} - next-intl@4.7.0(next@16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2))(react@19.2.3)(typescript@5.9.3): + next-intl@4.8.3(next@16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(react@19.2.4)(typescript@5.9.3): dependencies: - '@formatjs/intl-localematcher': 0.5.5 + '@formatjs/intl-localematcher': 0.8.1 '@parcel/watcher': 2.4.1 '@swc/core': 1.15.3 + icu-minify: 4.8.3 negotiator: 1.0.0 - next: 16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2) - next-intl-swc-plugin-extractor: 4.7.0 + next: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) + next-intl-swc-plugin-extractor: 4.8.3 po-parser: 2.1.1 - react: 19.2.3 - use-intl: 4.7.0(react@19.2.3) + react: 19.2.4 + use-intl: 4.8.3(react@19.2.4) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - '@swc/helpers' - next@16.1.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2): + next@16.1.6(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3): dependencies: - '@next/env': 16.1.4 + '@next/env': 16.1.6 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.8.29 caniuse-lite: 1.0.30001755 postcss: 8.4.31 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.2.4) optionalDependencies: - '@next/swc-darwin-arm64': 16.1.4 - '@next/swc-darwin-x64': 16.1.4 - '@next/swc-linux-arm64-gnu': 16.1.4 - '@next/swc-linux-arm64-musl': 16.1.4 - '@next/swc-linux-x64-gnu': 16.1.4 - '@next/swc-linux-x64-musl': 16.1.4 - '@next/swc-win32-arm64-msvc': 16.1.4 - '@next/swc-win32-x64-msvc': 16.1.4 + '@next/swc-darwin-arm64': 16.1.6 + '@next/swc-darwin-x64': 16.1.6 + '@next/swc-linux-arm64-gnu': 16.1.6 + '@next/swc-linux-arm64-musl': 16.1.6 + '@next/swc-linux-x64-gnu': 16.1.6 + '@next/swc-linux-x64-musl': 16.1.6 + '@next/swc-win32-arm64-msvc': 16.1.6 + '@next/swc-win32-x64-msvc': 16.1.6 babel-plugin-react-compiler: 1.0.0 - sass: 1.97.2 + sass: 1.97.3 sharp: 0.34.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@16.1.4(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.2): + next@16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3): dependencies: - '@next/env': 16.1.4 + '@next/env': 16.1.6 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.8.29 caniuse-lite: 1.0.30001755 postcss: 8.4.31 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.4) optionalDependencies: - '@next/swc-darwin-arm64': 16.1.4 - '@next/swc-darwin-x64': 16.1.4 - '@next/swc-linux-arm64-gnu': 16.1.4 - '@next/swc-linux-arm64-musl': 16.1.4 - '@next/swc-linux-x64-gnu': 16.1.4 - '@next/swc-linux-x64-musl': 16.1.4 - '@next/swc-win32-arm64-msvc': 16.1.4 - '@next/swc-win32-x64-msvc': 16.1.4 + '@next/swc-darwin-arm64': 16.1.6 + '@next/swc-darwin-x64': 16.1.6 + '@next/swc-linux-arm64-gnu': 16.1.6 + '@next/swc-linux-arm64-musl': 16.1.6 + '@next/swc-linux-x64-gnu': 16.1.6 + '@next/swc-linux-x64-musl': 16.1.6 + '@next/swc-win32-arm64-msvc': 16.1.6 + '@next/swc-win32-x64-msvc': 16.1.6 babel-plugin-react-compiler: 1.0.0 - sass: 1.97.2 + sass: 1.97.3 sharp: 0.34.4 transitivePeerDependencies: - '@babel/core' @@ -18087,13 +17841,9 @@ snapshots: node-gyp-build: 4.8.4 optional: true - no-case@2.3.2: - dependencies: - lower-case: 1.1.4 - node-abi@3.67.0: dependencies: - semver: 7.7.3 + semver: 7.7.4 node-abort-controller@3.1.1: {} @@ -18135,26 +17885,27 @@ snapshots: dependencies: rrule: 2.8.1 - node-loader@2.1.0(webpack@5.94.0(@swc/core@1.15.3)): + node-loader@2.1.0(webpack@5.94.0): dependencies: loader-utils: 2.0.4 - webpack: 5.94.0(@swc/core@1.15.3) + webpack: 5.94.0 node-mock-http@1.0.2: {} - node-plop@0.26.3: + node-plop@0.32.3(@types/node@24.12.0): dependencies: - '@babel/runtime-corejs3': 7.27.1 - '@types/inquirer': 6.5.0 - change-case: 3.1.0 - del: 5.1.0 - globby: 10.0.2 + '@types/inquirer': 9.0.9 + '@types/picomatch': 4.0.2 + change-case: 5.4.4 + dlv: 1.1.3 handlebars: 4.7.8 - inquirer: 7.3.3 - isbinaryfile: 4.0.10 - lodash.get: 4.4.2 - mkdirp: 0.5.6 - resolve: 1.22.8 + inquirer: 9.3.8(@types/node@24.12.0) + isbinaryfile: 5.0.7 + resolve: 1.22.11 + tinyglobby: 0.2.15 + title-case: 4.3.2 + transitivePeerDependencies: + - '@types/node' node-releases@2.0.18: {} @@ -18165,18 +17916,18 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.3 + semver: 7.7.4 validate-npm-package-license: 3.0.4 normalize-package-data@8.0.0: dependencies: hosted-git-info: 9.0.2 - semver: 7.7.3 + semver: 7.7.4 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} - normalize-url@8.0.1: {} + normalize-url@9.0.0: {} npm-run-path@4.0.1: dependencies: @@ -18274,13 +18025,13 @@ snapshots: dependencies: destr: 2.0.3 node-fetch-native: 1.6.7 - ufo: 1.6.1 + ufo: 1.6.3 ofetch@1.5.1: dependencies: destr: 2.0.5 node-fetch-native: 1.6.7 - ufo: 1.6.1 + ufo: 1.6.3 ohash@1.1.4: {} @@ -18328,17 +18079,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@4.1.1: - dependencies: - chalk: 3.0.0 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - log-symbols: 3.0.0 - mute-stream: 0.0.8 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - ora@5.4.1: dependencies: bl: 4.1.0 @@ -18383,10 +18123,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@3.0.0: - dependencies: - aggregate-error: 3.1.0 - p-map@7.0.3: {} p-reduce@2.1.0: {} @@ -18395,32 +18131,10 @@ snapshots: p-try@1.0.0: {} - pac-proxy-agent@7.2.0: - dependencies: - '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.3 - debug: 4.4.3 - get-uri: 6.0.3 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - - pac-resolver@7.0.1: - dependencies: - degenerator: 5.0.1 - netmask: 2.0.2 - package-json-from-dist@1.0.1: {} pako@2.1.0: {} - param-case@2.1.1: - dependencies: - no-case: 2.3.2 - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -18442,20 +18156,14 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.29.0 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-json@8.1.0: - dependencies: - '@babel/code-frame': 7.27.1 - index-to-position: 0.1.2 - type-fest: 4.41.0 - parse-json@8.3.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.29.0 index-to-position: 1.2.0 type-fest: 4.41.0 @@ -18475,21 +18183,10 @@ snapshots: dependencies: entities: 6.0.1 - pascal-case@2.0.1: - dependencies: - camel-case: 3.0.0 - upper-case-first: 1.1.2 - - path-case@2.1.1: - dependencies: - no-case: 2.3.2 - path-exists@3.0.0: {} path-exists@4.0.0: {} - path-is-absolute@1.0.1: {} - path-key@3.1.1: {} path-key@4.0.0: {} @@ -18501,10 +18198,10 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-scurry@2.0.1: + path-scurry@2.0.2: dependencies: - lru-cache: 11.2.2 - minipass: 7.1.2 + lru-cache: 11.2.6 + minipass: 7.1.3 path-type@4.0.0: {} @@ -18515,17 +18212,17 @@ snapshots: pg-cloudflare@1.3.0: optional: true - pg-connection-string@2.10.0: {} + pg-connection-string@2.12.0: {} pg-int8@1.0.1: {} - pg-pool@3.11.0(pg@8.17.1): + pg-pool@3.13.0(pg@8.20.0): dependencies: - pg: 8.17.1 + pg: 8.20.0 - pg-protocol@1.10.3: {} + pg-protocol@1.12.0: {} - pg-protocol@1.11.0: {} + pg-protocol@1.13.0: {} pg-types@2.2.0: dependencies: @@ -18535,11 +18232,11 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg@8.17.1: + pg@8.20.0: dependencies: - pg-connection-string: 2.10.0 - pg-pool: 3.11.0(pg@8.17.1) - pg-protocol: 1.11.0 + pg-connection-string: 2.12.0 + pg-pool: 3.13.0(pg@8.20.0) + pg-protocol: 1.13.0 pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: @@ -18549,8 +18246,6 @@ snapshots: dependencies: split2: 4.2.0 - picocolors@1.0.1: {} - picocolors@1.1.1: {} picomatch-browser@2.2.6: {} @@ -18561,25 +18256,25 @@ snapshots: pify@3.0.0: {} - pino-abstract-transport@2.0.0: + pino-abstract-transport@3.0.0: dependencies: split2: 4.2.0 - pino-std-serializers@7.0.0: {} + pino-std-serializers@7.1.0: {} - pino@10.1.0: + pino@10.3.1: dependencies: '@pinojs/redact': 0.4.0 atomic-sleep: 1.0.0 on-exit-leak-free: 2.1.2 - pino-abstract-transport: 2.0.0 - pino-std-serializers: 7.0.0 + pino-abstract-transport: 3.0.0 + pino-std-serializers: 7.1.0 process-warning: 5.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 + sonic-boom: 4.2.1 + thread-stream: 4.0.0 piscina@4.6.1: optionalDependencies: @@ -18679,20 +18374,20 @@ snapshots: pump: 3.0.2 rc: 1.2.8 simple-get: 4.0.1 - tar-fs: 3.1.1 + tar-fs: 3.1.2 tunnel-agent: 0.6.0 transitivePeerDependencies: - bare-buffer prelude-ls@1.2.1: {} - prettier-plugin-packagejson@2.5.22(prettier@3.8.0): + prettier-plugin-packagejson@3.0.2(prettier@3.8.1): dependencies: sort-package-json: 3.6.0 optionalDependencies: - prettier: 3.8.0 + prettier: 3.8.1 - prettier@3.8.0: {} + prettier@3.8.1: {} pretty-ms@8.0.0: dependencies: @@ -18716,7 +18411,7 @@ snapshots: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - react-is: 19.2.3 + react-is: 19.2.4 proper-lockfile@4.1.2: dependencies: @@ -18724,9 +18419,12 @@ snapshots: retry: 0.12.0 signal-exit: 3.0.7 - properties-reader@2.3.0: + properties-reader@3.0.1: dependencies: - mkdirp: 1.0.4 + '@kwsites/file-exists': 1.1.1 + mkdirp: 3.0.1 + transitivePeerDependencies: + - supports-color property-information@7.0.0: {} @@ -18847,25 +18545,12 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 24.10.9 - long: 5.2.3 + '@types/node': 24.12.0 + long: 5.3.2 proxmox-api@1.1.1: dependencies: - undici: 7.18.2 - - proxy-agent@6.5.0: - dependencies: - agent-base: 7.1.3 - debug: 4.4.3 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - lru-cache: 7.18.3 - pac-proxy-agent: 7.2.0 - proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color + undici: 7.19.2 proxy-from-env@1.1.0: {} @@ -18927,61 +18612,61 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-copy-to-clipboard@5.1.0(react@19.2.3): + react-copy-to-clipboard@5.1.0(react@19.2.4): dependencies: copy-to-clipboard: 3.3.3 prop-types: 15.8.1 - react: 19.2.3 + react: 19.2.4 - react-debounce-input@3.3.0(react@19.2.3): + react-debounce-input@3.3.0(react@19.2.4): dependencies: lodash.debounce: 4.0.8 prop-types: 15.8.1 - react: 19.2.3 + react: 19.2.4 - react-dom@19.2.3(react@19.2.3): + react-dom@19.2.4(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 scheduler: 0.27.0 - react-dropzone@14.3.8(react@19.2.3): + react-dropzone@15.0.0(react@19.2.4): dependencies: attr-accept: 2.2.5 file-selector: 2.1.2 prop-types: 15.8.1 - react: 19.2.3 + react: 19.2.4 - react-error-boundary@6.1.0(react@19.2.3): + react-error-boundary@6.1.1(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 react-immutable-proptypes@2.2.0(immutable@3.8.2): dependencies: immutable: 3.8.2 invariant: 2.2.4 - react-immutable-pure-component@2.2.2(immutable@3.8.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-immutable-pure-component@2.2.2(immutable@3.8.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: immutable: 3.8.2 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react-inspector@6.0.2(react@19.2.3): + react-inspector@6.0.2(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 - react-is@19.2.3: {} + react-is@19.2.4: {} - react-markdown@10.1.0(@types/react@19.2.8)(react@19.2.3): + react-markdown@10.1.0(@types/react@19.2.14)(react@19.2.4): dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@types/react': 19.2.8 + '@types/react': 19.2.14 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.6 html-url-attributes: 3.0.1 mdast-util-to-hast: 13.2.0 - react: 19.2.3 + react: 19.2.4 remark-parse: 11.0.0 remark-rehype: 11.1.1 unified: 11.0.5 @@ -18990,40 +18675,40 @@ snapshots: transitivePeerDependencies: - supports-color - react-number-format@5.4.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-number-format@5.4.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react-redux@9.2.0(@types/react@19.2.8)(react@19.2.3)(redux@5.0.1): + react-redux@9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.6 - react: 19.2.3 - use-sync-external-store: 1.4.0(react@19.2.3) + react: 19.2.4 + use-sync-external-store: 1.4.0(react@19.2.4) optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.14 redux: 5.0.1 react-refresh@0.18.0: {} - react-remove-scroll-bar@2.3.8(@types/react@19.2.8)(react@19.2.3): + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.4): dependencies: - react: 19.2.3 - react-style-singleton: 2.2.3(@types/react@19.2.8)(react@19.2.3) + react: 19.2.4 + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.14 - react-remove-scroll@2.7.1(@types/react@19.2.8)(react@19.2.3): + react-remove-scroll@2.7.1(@types/react@19.2.14)(react@19.2.4): dependencies: - react: 19.2.3 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.8)(react@19.2.3) - react-style-singleton: 2.2.3(@types/react@19.2.8)(react@19.2.3) + react: 19.2.4 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.4) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.8)(react@19.2.3) - use-sidecar: 1.1.3(@types/react@19.2.8)(react@19.2.3) + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.4) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.4) optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.14 react-scan@0.0.31: dependencies: @@ -19033,56 +18718,56 @@ snapshots: mri: 1.2.0 playwright: 1.49.0 - react-simple-code-editor@0.14.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-simple-code-editor@0.14.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react-smooth@4.0.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-smooth@4.0.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: fast-equals: 5.3.3 prop-types: 15.8.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react-style-singleton@2.2.3(@types/react@19.2.8)(react@19.2.3): + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.4): dependencies: get-nonce: 1.0.1 - react: 19.2.3 + react: 19.2.4 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.14 - react-syntax-highlighter@16.1.0(react@19.2.3): + react-syntax-highlighter@16.1.0(react@19.2.4): dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 highlight.js: 10.7.3 highlightjs-vue: 1.0.0 lowlight: 1.20.0 prismjs: 1.30.0 - react: 19.2.3 + react: 19.2.4 refractor: 5.0.0 - react-textarea-autosize@8.5.9(@types/react@19.2.8)(react@19.2.3): + react-textarea-autosize@8.5.9(@types/react@19.2.14)(react@19.2.4): dependencies: '@babel/runtime': 7.28.6 - react: 19.2.3 - use-composed-ref: 1.3.0(react@19.2.3) - use-latest: 1.2.1(@types/react@19.2.8)(react@19.2.3) + react: 19.2.4 + use-composed-ref: 1.3.0(react@19.2.4) + use-latest: 1.2.1(@types/react@19.2.14)(react@19.2.4) transitivePeerDependencies: - '@types/react' - react-transition-group@4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-transition-group@4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@babel/runtime': 7.28.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react@19.2.3: {} + react@19.2.4: {} read-package-up@11.0.0: dependencies: @@ -19094,21 +18779,21 @@ snapshots: dependencies: find-up-simple: 1.0.1 read-pkg: 10.0.0 - type-fest: 5.2.0 + type-fest: 5.4.4 read-pkg@10.0.0: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 8.0.0 parse-json: 8.3.0 - type-fest: 5.2.0 + type-fest: 5.4.4 unicorn-magic: 0.3.0 read-pkg@9.0.1: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.2 - parse-json: 8.1.0 + parse-json: 8.3.0 type-fest: 4.41.0 unicorn-magic: 0.1.0 @@ -19156,15 +18841,15 @@ snapshots: dependencies: decimal.js-light: 2.5.1 - recharts@2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + recharts@2.15.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: clsx: 2.1.1 eventemitter3: 4.0.7 lodash: 4.17.21 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-is: 19.2.3 - react-smooth: 4.0.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-is: 19.2.4 + react-smooth: 4.0.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) recharts-scale: 0.4.5 tiny-invariant: 1.3.3 victory-vendor: 36.9.2 @@ -19195,7 +18880,7 @@ snapshots: refractor@5.0.0: dependencies: '@types/hast': 3.0.4 - '@types/prismjs': 1.26.5 + '@types/prismjs': 1.26.6 hastscript: 9.0.1 parse-entities: 4.0.2 @@ -19222,19 +18907,10 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - registry-auth-token@3.3.2: - dependencies: - rc: 1.2.8 - safe-buffer: 5.2.1 - registry-auth-token@5.0.2: dependencies: '@pnpm/npm-conf': 2.3.1 - registry-url@3.1.0: - dependencies: - rc: 1.2.8 - registry-url@5.1.0: dependencies: rc: 1.2.8 @@ -19281,6 +18957,12 @@ snapshots: resolve-pkg-maps@1.0.0: {} + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + resolve@1.22.8: dependencies: is-core-module: 2.16.1 @@ -19304,16 +18986,12 @@ snapshots: retry@0.12.0: {} - reusify@1.0.4: {} + reusify@1.1.0: {} rfc4648@1.5.4: {} rfdc@1.4.1: {} - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - rollup@4.48.1: dependencies: '@types/estree': 1.0.8 @@ -19372,16 +19050,12 @@ snapshots: rrdom: 0.1.7 rrweb-snapshot: 2.0.0-alpha.4 - run-async@2.4.1: {} + run-async@3.0.0: {} run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - rxjs@6.6.7: - dependencies: - tslib: 1.14.1 - rxjs@7.8.2: dependencies: tslib: 2.8.1 @@ -19430,7 +19104,7 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.97.2: + sass@1.97.3: dependencies: chokidar: 4.0.0 immutable: 5.0.2 @@ -19449,25 +19123,25 @@ snapshots: schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) + ajv: 6.14.0 + ajv-keywords: 3.5.2(ajv@6.14.0) schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) + ajv: 8.18.0 + ajv-formats: 2.1.1(ajv@8.18.0) + ajv-keywords: 5.1.0(ajv@8.18.0) - secure-json-parse@4.0.0: {} + secure-json-parse@4.1.0: {} - semantic-release@25.0.2(typescript@5.9.3): + semantic-release@25.0.3(typescript@5.9.3): dependencies: - '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.3(typescript@5.9.3)) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 12.0.2(semantic-release@25.0.2(typescript@5.9.3)) - '@semantic-release/npm': 13.1.3(semantic-release@25.0.2(typescript@5.9.3)) - '@semantic-release/release-notes-generator': 14.1.0(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/github': 12.0.6(semantic-release@25.0.3(typescript@5.9.3)) + '@semantic-release/npm': 13.1.5(semantic-release@25.0.3(typescript@5.9.3)) + '@semantic-release/release-notes-generator': 14.1.0(semantic-release@25.0.3(typescript@5.9.3)) aggregate-error: 5.0.0 cosmiconfig: 9.0.0(typescript@5.9.3) debug: 4.4.3 @@ -19488,8 +19162,7 @@ snapshots: p-reduce: 3.0.0 read-package-up: 12.0.0 resolve-from: 5.0.0 - semver: 7.7.2 - semver-diff: 5.0.0 + semver: 7.7.3 signale: 1.4.0 yargs: 18.0.0 transitivePeerDependencies: @@ -19500,40 +19173,23 @@ snapshots: dependencies: semver: 6.3.1 - semver-diff@5.0.0: - dependencies: - semver: 7.7.3 - semver-parser@4.1.8: {} semver-regex@4.0.5: {} semver@6.3.1: {} - semver@7.6.2: {} - semver@7.6.3: {} - semver@7.7.2: {} - semver@7.7.3: {} - sentence-case@2.1.1: - dependencies: - no-case: 2.3.2 - upper-case-first: 1.1.2 - - seq-queue@0.0.5: {} + semver@7.7.4: {} serialize-error@8.1.0: dependencies: type-fest: 0.20.2 - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - set-cookie-parser@2.7.1: {} + set-cookie-parser@2.7.2: {} set-function-length@1.2.2: dependencies: @@ -19569,7 +19225,7 @@ snapshots: dependencies: '@img/colour': 1.0.0 detect-libc: 2.1.2 - semver: 7.7.3 + semver: 7.7.4 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.4 '@img/sharp-darwin-x64': 0.34.4 @@ -19665,14 +19321,8 @@ snapshots: dependencies: unicode-emoji-modifier-base: 1.0.0 - slash@3.0.0: {} - smart-buffer@4.2.0: {} - snake-case@2.1.0: - dependencies: - no-case: 2.3.2 - socket.io-adapter@2.5.5: dependencies: debug: 4.3.7 @@ -19727,7 +19377,7 @@ snapshots: ip-address: 9.0.5 smart-buffer: 4.2.0 - sonic-boom@4.2.0: + sonic-boom@4.2.1: dependencies: atomic-sleep: 1.0.0 @@ -19739,7 +19389,7 @@ snapshots: detect-newline: 4.0.1 git-hooks-list: 4.1.1 is-plain-obj: 4.1.0 - semver: 7.7.3 + semver: 7.7.4 sort-object-keys: 2.0.1 tinyglobby: 0.2.15 @@ -19782,7 +19432,7 @@ snapshots: sprintf-js@1.1.3: {} - sqlstring@2.3.3: {} + sql-escaper@1.3.3: {} ssh-remote-port-forward@1.0.4: dependencies: @@ -19936,7 +19586,7 @@ snapshots: strip-json-comments@3.1.1: {} - strnum@2.1.0: {} + strnum@2.1.2: {} style-to-js@1.1.16: dependencies: @@ -19946,19 +19596,19 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.2.3): + styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.2.4): dependencies: client-only: 0.0.1 - react: 19.2.3 + react: 19.2.4 optionalDependencies: '@babel/core': 7.26.0 - styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.3): + styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.4): dependencies: client-only: 0.0.1 - react: 19.2.3 + react: 19.2.4 optionalDependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 sugar-high@0.7.5: {} @@ -19999,15 +19649,16 @@ snapshots: deep-rename-keys: 0.2.1 xml-reader: 2.4.3 - swagger-client@3.36.0: + swagger-client@3.37.0: dependencies: '@babel/runtime-corejs3': 7.27.1 '@scarf/scarf': 1.4.0 - '@swagger-api/apidom-core': 1.0.0-rc.1 - '@swagger-api/apidom-error': 1.0.0-rc.1 - '@swagger-api/apidom-json-pointer': 1.0.0-rc.1 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-rc.1 - '@swagger-api/apidom-reference': 1.0.0-rc.1 + '@swagger-api/apidom-core': 1.6.0 + '@swagger-api/apidom-error': 1.6.0 + '@swagger-api/apidom-json-pointer': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-1': 1.6.0 + '@swagger-api/apidom-ns-openapi-3-2': 1.6.0 + '@swagger-api/apidom-reference': 1.6.0 '@swaggerexpert/cookie': 2.0.2 deepmerge: 4.3.1 fast-json-patch: 3.1.1 @@ -20022,7 +19673,7 @@ snapshots: transitivePeerDependencies: - debug - swagger-ui-react@5.31.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + swagger-ui-react@5.32.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@babel/runtime-corejs3': 7.27.1 '@scarf/scarf': 1.4.0 @@ -20040,22 +19691,22 @@ snapshots: prop-types: 15.8.1 randexp: 0.5.3 randombytes: 2.1.0 - react: 19.2.3 - react-copy-to-clipboard: 5.1.0(react@19.2.3) - react-debounce-input: 3.3.0(react@19.2.3) - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-copy-to-clipboard: 5.1.0(react@19.2.4) + react-debounce-input: 3.3.0(react@19.2.4) + react-dom: 19.2.4(react@19.2.4) react-immutable-proptypes: 2.2.0(immutable@3.8.2) - react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react-inspector: 6.0.2(react@19.2.3) - react-redux: 9.2.0(@types/react@19.2.8)(react@19.2.3)(redux@5.0.1) - react-syntax-highlighter: 16.1.0(react@19.2.3) + react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-inspector: 6.0.2(react@19.2.4) + react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1) + react-syntax-highlighter: 16.1.0(react@19.2.4) redux: 5.0.1 redux-immutable: 4.0.0(immutable@3.8.2) remarkable: 2.0.1 reselect: 5.1.1 serialize-error: 8.1.0 sha.js: 2.4.12 - swagger-client: 3.36.0 + swagger-client: 3.37.0 url-parse: 1.5.10 xml: 1.0.1 xml-but-prettier: 1.0.1 @@ -20064,11 +19715,6 @@ snapshots: - '@types/react' - debug - swap-case@1.1.2: - dependencies: - lower-case: 1.1.4 - upper-case: 1.1.3 - symbol-tree@3.2.4: {} tabbable@6.2.0: {} @@ -20094,6 +19740,16 @@ snapshots: transitivePeerDependencies: - bare-buffer + tar-fs@3.1.2: + dependencies: + pump: 3.0.2 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.1.2 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-buffer + tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -20117,41 +19773,38 @@ snapshots: type-fest: 2.19.0 unique-string: 3.0.0 - terser-webpack-plugin@5.3.14(@swc/core@1.15.3)(webpack@5.94.0(@swc/core@1.15.3)): + terser-webpack-plugin@5.3.17(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - terser: 5.44.1 - webpack: 5.94.0(@swc/core@1.15.3) - optionalDependencies: - '@swc/core': 1.15.3 + terser: 5.46.0 + webpack: 5.94.0 - terser@5.44.1: + terser@5.46.0: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.15.0 + acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 - testcontainers@11.11.0: + testcontainers@11.12.0: dependencies: '@balena/dockerignore': 1.0.2 - '@types/dockerode': 3.3.47 + '@types/dockerode': 4.0.1 archiver: 7.0.1 async-lock: 1.4.1 byline: 5.0.0 debug: 4.4.3 - docker-compose: 1.3.0 + docker-compose: 1.3.1 dockerode: 4.0.9 get-port: 7.1.0 proper-lockfile: 4.1.2 - properties-reader: 2.3.0 + properties-reader: 3.0.1 ssh-remote-port-forward: 1.0.4 tar-fs: 3.1.1 tmp: 0.2.5 - undici: 7.18.2 + undici: 7.22.0 transitivePeerDependencies: - bare-buffer - supports-color @@ -20170,7 +19823,7 @@ snapshots: dependencies: any-promise: 1.3.0 - thread-stream@3.1.0: + thread-stream@4.0.0: dependencies: real-require: 0.2.0 @@ -20179,8 +19832,6 @@ snapshots: readable-stream: 2.3.8 xtend: 4.0.2 - through@2.3.8: {} - time-span@5.1.0: dependencies: convert-hrtime: 5.0.0 @@ -20189,8 +19840,6 @@ snapshots: tinybench@2.9.0: {} - tinycolor2@1.6.0: {} - tinyexec@1.0.2: {} tinyglobby@0.2.15: @@ -20198,17 +19847,9 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - tinygradient@1.1.5: - dependencies: - '@types/tinycolor2': 1.4.6 - tinycolor2: 1.6.0 - tinyrainbow@3.0.3: {} - title-case@2.1.1: - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 + title-case@4.3.2: {} tldts-core@6.1.69: {} @@ -20286,9 +19927,9 @@ snapshots: trough@2.2.0: {} - trpc-to-openapi@3.1.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.8.1(typescript@5.9.3))(zod-openapi@5.3.0(zod@4.2.1))(zod@4.2.1): + trpc-to-openapi@3.1.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.12.0(typescript@5.9.3))(zod-openapi@5.3.0(zod@4.2.1))(zod@4.2.1): dependencies: - '@trpc/server': 11.8.1(typescript@5.9.3) + '@trpc/server': 11.12.0(typescript@5.9.3) co-body: 6.2.0 h3: 1.15.1 openapi3-ts: 4.4.0 @@ -20303,26 +19944,6 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.9)(typescript@5.9.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': 24.10.9 - acorn: 8.15.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.9.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.15.3 - ts-toolbelt@9.6.0: {} tsconfck@3.1.3(typescript@5.9.3): @@ -20336,7 +19957,7 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdav@2.1.6: + tsdav@2.1.8: dependencies: base-64: 1.0.0 cross-fetch: 4.1.0 @@ -20346,8 +19967,6 @@ snapshots: - encoding - supports-color - tslib@1.14.1: {} - tslib@2.8.1: {} tsscmp@1.0.6: {} @@ -20359,10 +19978,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - tsx@4.20.5: + tsx@4.21.0: dependencies: - esbuild: 0.25.12 - get-tsconfig: 4.13.0 + esbuild: 0.27.3 + get-tsconfig: 4.13.6 optionalDependencies: fsevents: 2.3.3 optional: true @@ -20373,32 +19992,32 @@ snapshots: tunnel@0.0.6: {} - turbo-darwin-64@2.7.5: + turbo-darwin-64@2.8.16: optional: true - turbo-darwin-arm64@2.7.5: + turbo-darwin-arm64@2.8.16: optional: true - turbo-linux-64@2.7.5: + turbo-linux-64@2.8.16: optional: true - turbo-linux-arm64@2.7.5: + turbo-linux-arm64@2.8.16: optional: true - turbo-windows-64@2.7.5: + turbo-windows-64@2.8.16: optional: true - turbo-windows-arm64@2.7.5: + turbo-windows-arm64@2.8.16: optional: true - turbo@2.7.5: + turbo@2.8.16: optionalDependencies: - turbo-darwin-64: 2.7.5 - turbo-darwin-arm64: 2.7.5 - turbo-linux-64: 2.7.5 - turbo-linux-arm64: 2.7.5 - turbo-windows-64: 2.7.5 - turbo-windows-arm64: 2.7.5 + turbo-darwin-64: 2.8.16 + turbo-darwin-arm64: 2.8.16 + turbo-linux-64: 2.8.16 + turbo-linux-arm64: 2.8.16 + turbo-windows-64: 2.8.16 + turbo-windows-arm64: 2.8.16 tweetnacl@0.14.5: {} @@ -20416,11 +20035,7 @@ snapshots: type-fest@4.41.0: {} - type-fest@5.1.0: - dependencies: - tagged-tag: 1.0.0 - - type-fest@5.2.0: + type-fest@5.4.4: dependencies: tagged-tag: 1.0.0 @@ -20502,13 +20117,13 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.53.1(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.57.0(eslint@9.39.4)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) - eslint: 9.39.2 + '@typescript-eslint/eslint-plugin': 8.57.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -20519,6 +20134,8 @@ snapshots: ufo@1.6.1: {} + ufo@1.6.3: {} + uglify-js@3.19.3: optional: true @@ -20544,12 +20161,16 @@ snapshots: undici-types@7.16.0: {} - undici@5.29.0: - dependencies: - '@fastify/busboy': 2.1.1 + undici@6.23.0: {} undici@7.18.2: {} + undici@7.19.2: {} + + undici@7.21.0: {} + + undici@7.22.0: {} + unicode-emoji-modifier-base@1.0.0: {} unicorn-magic@0.1.0: {} @@ -20605,12 +20226,12 @@ snapshots: unpipe@1.0.0: {} - unplugin@1.14.1(webpack-sources@3.3.3): + unplugin@1.14.1(webpack-sources@3.3.4): dependencies: acorn: 8.14.0 webpack-virtual-modules: 0.6.2 optionalDependencies: - webpack-sources: 3.3.3 + webpack-sources: 3.3.4 unraw@3.0.0: {} @@ -20626,17 +20247,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - update-browserslist-db@1.1.4(browserslist@4.28.0): + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: - browserslist: 4.28.0 + browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 - update-check@1.5.4: - dependencies: - registry-auth-token: 3.3.2 - registry-url: 3.1.0 - update-notifier-cjs@5.1.6: dependencies: boxen: 5.1.2 @@ -20652,18 +20268,12 @@ snapshots: pupa: 2.1.1 registry-auth-token: 5.0.2 registry-url: 5.1.0 - semver: 7.7.3 + semver: 7.7.4 semver-diff: 3.1.1 xdg-basedir: 4.0.0 transitivePeerDependencies: - encoding - upper-case-first@1.1.2: - dependencies: - upper-case: 1.1.3 - - upper-case@1.1.3: {} - uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -20677,54 +20287,55 @@ snapshots: url-toolkit@2.2.5: {} - use-callback-ref@1.3.3(@types/react@19.2.8)(react@19.2.3): + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.14 - use-composed-ref@1.3.0(react@19.2.3): + use-composed-ref@1.3.0(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 - use-deep-compare-effect@1.8.1(react@19.2.3): + use-deep-compare-effect@1.8.1(react@19.2.4): dependencies: '@babel/runtime': 7.28.6 dequal: 2.0.3 - react: 19.2.3 + react: 19.2.4 - use-intl@4.7.0(react@19.2.3): + use-intl@4.8.3(react@19.2.4): dependencies: - '@formatjs/fast-memoize': 2.2.1 + '@formatjs/fast-memoize': 3.1.0 '@schummar/icu-type-parser': 1.21.5 - intl-messageformat: 10.7.1 - react: 19.2.3 + icu-minify: 4.8.3 + intl-messageformat: 11.1.1 + react: 19.2.4 - use-isomorphic-layout-effect@1.1.2(@types/react@19.2.8)(react@19.2.3): + use-isomorphic-layout-effect@1.1.2(@types/react@19.2.14)(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.14 - use-latest@1.2.1(@types/react@19.2.8)(react@19.2.3): + use-latest@1.2.1(@types/react@19.2.14)(react@19.2.4): dependencies: - react: 19.2.3 - use-isomorphic-layout-effect: 1.1.2(@types/react@19.2.8)(react@19.2.3) + react: 19.2.4 + use-isomorphic-layout-effect: 1.1.2(@types/react@19.2.14)(react@19.2.4) optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.14 - use-sidecar@1.1.3(@types/react@19.2.8)(react@19.2.3): + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.4): dependencies: detect-node-es: 1.1.0 - react: 19.2.3 + react: 19.2.4 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.14 - use-sync-external-store@1.4.0(react@19.2.3): + use-sync-external-store@1.4.0(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 use-sync-external-store@1.6.0(react@19.2.3): dependencies: @@ -20736,17 +20347,11 @@ snapshots: uuid@8.3.2: {} - v8-compile-cache-lib@3.0.1: {} - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validate-npm-package-name@5.0.0: - dependencies: - builtins: 5.1.0 - vary@1.1.2: {} vfile-message@4.0.2: @@ -20776,10 +20381,10 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - video.js@8.23.4: + video.js@8.23.7: dependencies: '@babel/runtime': 7.28.6 - '@videojs/http-streaming': 3.17.2(video.js@8.23.4) + '@videojs/http-streaming': 3.17.4(video.js@8.23.7) '@videojs/vhs-utils': 4.1.1 '@videojs/xhr': 2.7.0 aes-decrypter: 4.0.2 @@ -20787,14 +20392,14 @@ snapshots: m3u8-parser: 7.2.0 mpd-parser: 1.3.1 mux.js: 7.1.0 - videojs-contrib-quality-levels: 4.1.0(video.js@8.23.4) + videojs-contrib-quality-levels: 4.1.0(video.js@8.23.7) videojs-font: 4.2.0 videojs-vtt.js: 0.15.5 - videojs-contrib-quality-levels@4.1.0(video.js@8.23.4): + videojs-contrib-quality-levels@4.1.0(video.js@8.23.7): dependencies: global: 4.4.0 - video.js: 8.23.4 + video.js: 8.23.7 videojs-font@4.2.0: {} @@ -20802,18 +20407,17 @@ snapshots: dependencies: global: 4.4.0 - vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.1.12(@types/node@24.12.0)(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.9.3) - optionalDependencies: - vite: 7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.12.0)(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1) transitivePeerDependencies: - supports-color - typescript - vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): + vite@7.1.12(@types/node@24.12.0)(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -20822,23 +20426,23 @@ snapshots: rollup: 4.48.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 24.12.0 fsevents: 2.3.3 - sass: 1.97.2 + sass: 1.97.3 sugarss: 5.0.0(postcss@8.5.6) - terser: 5.44.1 - tsx: 4.20.5 + terser: 5.46.0 + tsx: 4.21.0 yaml: 2.5.1 - vitest@4.0.17(@types/node@24.10.9)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): + vitest@4.0.18(@types/node@24.12.0)(@vitest/ui@4.0.18)(jsdom@28.1.0(@noble/hashes@2.0.1))(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1): dependencies: - '@vitest/expect': 4.0.17 - '@vitest/mocker': 4.0.17(vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) - '@vitest/pretty-format': 4.0.17 - '@vitest/runner': 4.0.17 - '@vitest/snapshot': 4.0.17 - '@vitest/spy': 4.0.17 - '@vitest/utils': 4.0.17 + '@vitest/expect': 4.0.18 + '@vitest/mocker': 4.0.18(vite@7.1.12(@types/node@24.12.0)(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1)) + '@vitest/pretty-format': 4.0.18 + '@vitest/runner': 4.0.18 + '@vitest/snapshot': 4.0.18 + '@vitest/spy': 4.0.18 + '@vitest/utils': 4.0.18 es-module-lexer: 1.7.0 expect-type: 1.2.2 magic-string: 0.30.21 @@ -20850,12 +20454,12 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.12.0)(sass@1.97.3)(sugarss@5.0.0(postcss@8.5.6))(terser@5.46.0)(tsx@4.21.0)(yaml@2.5.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.10.9 - '@vitest/ui': 4.0.17(vitest@4.0.17) - jsdom: 27.4.0(postcss@8.5.6) + '@types/node': 24.12.0 + '@vitest/ui': 4.0.18(vitest@4.0.18) + jsdom: 28.1.0(@noble/hashes@2.0.1) transitivePeerDependencies: - jiti - less @@ -20875,7 +20479,7 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - watchpack@2.4.4: + watchpack@2.5.1: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 @@ -20891,23 +20495,23 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@8.0.0: {} + webidl-conversions@8.0.1: {} - webpack-sources@3.3.3: {} + webpack-sources@3.3.4: {} webpack-virtual-modules@0.6.2: {} - webpack@5.94.0(@swc/core@1.15.3): + webpack@5.94.0: dependencies: '@types/estree': 1.0.8 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) - browserslist: 4.28.0 + acorn: 8.16.0 + acorn-import-attributes: 1.9.5(acorn@8.16.0) + browserslist: 4.28.1 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 + enhanced-resolve: 5.20.0 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -20919,9 +20523,9 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(@swc/core@1.15.3)(webpack@5.94.0(@swc/core@1.15.3)) - watchpack: 2.4.4 - webpack-sources: 3.3.3 + terser-webpack-plugin: 5.3.17(webpack@5.94.0) + watchpack: 2.5.1 + webpack-sources: 3.3.4 transitivePeerDependencies: - '@swc/core' - esbuild @@ -20929,12 +20533,15 @@ snapshots: whatwg-fetch@3.6.20: {} - whatwg-mimetype@4.0.0: {} + whatwg-mimetype@5.0.0: {} - whatwg-url@15.1.0: + whatwg-url@16.0.0(@noble/hashes@2.0.1): dependencies: + '@exodus/bytes': 1.11.0(@noble/hashes@2.0.1) tr46: 6.0.0 - webidl-conversions: 8.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' whatwg-url@5.0.0: dependencies: @@ -21013,7 +20620,7 @@ snapshots: which@4.0.0: dependencies: - isexe: 3.1.1 + isexe: 3.1.5 optional: true why-is-node-running@2.3.0: @@ -21049,6 +20656,12 @@ snapshots: wordwrap@1.0.0: {} + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -21161,10 +20774,10 @@ snapshots: y18n: 5.0.8 yargs-parser: 22.0.0 - yn@3.1.1: {} - yocto-queue@0.1.0: {} + yoctocolors-cjs@2.1.3: {} + yoctocolors@2.1.1: {} zenscroll@4.0.2: {} diff --git a/scripts/run.sh b/scripts/run.sh index 78659a04a..4d90499d5 100644 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -19,6 +19,11 @@ export AUTH_SECRET=$(openssl rand -base64 32) # Cron job API key is generated every time the container starts as it is required for communication between nextjs-api and tasks-api export CRON_JOB_API_KEY=$(openssl rand -base64 32) +# Support secret file for encryption key (is not empty and file exists) +if [ -n "$SECRET_ENCRYPTION_KEY_FILE" ] && [ -f "$SECRET_ENCRYPTION_KEY_FILE" ]; then + export SECRET_ENCRYPTION_KEY=$(cat $SECRET_ENCRYPTION_KEY_FILE) +fi + # Start nginx proxy # 1. Replace the HOSTNAME in the nginx template file # 2. Create the nginx configuration file from the template diff --git a/static-data/contributors.json b/static-data/contributors.json index cc863d9e1..4f1b6aff8 100644 --- a/static-data/contributors.json +++ b/static-data/contributors.json @@ -1 +1 @@ -[{"login":"ajnart","avatar_url":"https://avatars.githubusercontent.com/u/49837342?v=4"},{"login":"manuel-rw","avatar_url":"https://avatars.githubusercontent.com/u/30572287?v=4"},{"login":"Meierschlumpf","avatar_url":"https://avatars.githubusercontent.com/u/63781622?v=4"},{"login":"SeDemal","avatar_url":"https://avatars.githubusercontent.com/u/26098587?v=4"},{"login":"lammersbjorn","avatar_url":"https://avatars.githubusercontent.com/u/71191962?v=4"},{"login":"LarveyOfficial","avatar_url":"https://avatars.githubusercontent.com/u/39219859?v=4"},{"login":"c00ldude1oo","avatar_url":"https://avatars.githubusercontent.com/u/15677803?v=4"},{"login":"InterN0te","avatar_url":"https://avatars.githubusercontent.com/u/10882916?v=4"},{"login":"Aimsucks","avatar_url":"https://avatars.githubusercontent.com/u/1828486?v=4"},{"login":"JannesV","avatar_url":"https://avatars.githubusercontent.com/u/5984244?v=4"},{"login":"MauriceNino","avatar_url":"https://avatars.githubusercontent.com/u/18658092?v=4"},{"login":"hillaliy","avatar_url":"https://avatars.githubusercontent.com/u/950010?v=4"},{"login":"Skeeww","avatar_url":"https://avatars.githubusercontent.com/u/9639992?v=4"},{"login":"RichyHBM","avatar_url":"https://avatars.githubusercontent.com/u/5472275?v=4"},{"login":"Bonfire","avatar_url":"https://avatars.githubusercontent.com/u/5704760?v=4"},{"login":"wieli99","avatar_url":"https://avatars.githubusercontent.com/u/46794825?v=4"},{"login":"ishaanparlikar","avatar_url":"https://avatars.githubusercontent.com/u/43013132?v=4"},{"login":"Zareix","avatar_url":"https://avatars.githubusercontent.com/u/29818713?v=4"},{"login":"tuggan","avatar_url":"https://avatars.githubusercontent.com/u/4325608?v=4"},{"login":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"tancak","avatar_url":"https://avatars.githubusercontent.com/u/11760749?v=4"},{"login":"spkesDE","avatar_url":"https://avatars.githubusercontent.com/u/1682314?v=4"},{"login":"j3lte","avatar_url":"https://avatars.githubusercontent.com/u/2557568?v=4"},{"login":"dslatt","avatar_url":"https://avatars.githubusercontent.com/u/5211001?v=4"},{"login":"Malong11-007","avatar_url":"https://avatars.githubusercontent.com/u/40298510?v=4"},{"login":"StefanB7","avatar_url":"https://avatars.githubusercontent.com/u/22056509?v=4"},{"login":"souravghosh01","avatar_url":"https://avatars.githubusercontent.com/u/37548139?v=4"},{"login":"SR3u","avatar_url":"https://avatars.githubusercontent.com/u/2380522?v=4"},{"login":"Rikpat","avatar_url":"https://avatars.githubusercontent.com/u/33869814?v=4"},{"login":"NormanJS","avatar_url":"https://avatars.githubusercontent.com/u/83409549?v=4"},{"login":"No-Maines-Land","avatar_url":"https://avatars.githubusercontent.com/u/20687725?v=4"},{"login":"stark1tty","avatar_url":"https://avatars.githubusercontent.com/u/69326376?v=4"},{"login":"Momcilo42","avatar_url":"https://avatars.githubusercontent.com/u/10118137?v=4"},{"login":"marius-arch","avatar_url":"https://avatars.githubusercontent.com/u/72494359?v=4"},{"login":"Lumilias","avatar_url":"https://avatars.githubusercontent.com/u/10852161?v=4"},{"login":"Havock94","avatar_url":"https://avatars.githubusercontent.com/u/7635248?v=4"},{"login":"Lollyde","avatar_url":"https://avatars.githubusercontent.com/u/11347524?v=4"},{"login":"krishnamuppaneni","avatar_url":"https://avatars.githubusercontent.com/u/4703366?v=4"},{"login":"devtobi","avatar_url":"https://avatars.githubusercontent.com/u/28538704?v=4"},{"login":"TyxTang","avatar_url":"https://avatars.githubusercontent.com/u/90897955?v=4"},{"login":"alotlikebeans","avatar_url":"https://avatars.githubusercontent.com/u/19630511?v=4"},{"login":"WillyJL","avatar_url":"https://avatars.githubusercontent.com/u/49810075?v=4"},{"login":"anonysoul","avatar_url":"https://avatars.githubusercontent.com/u/105715150?v=4"},{"login":"cospeedster","avatar_url":"https://avatars.githubusercontent.com/u/52749645?v=4"},{"login":"diederbert","avatar_url":"https://avatars.githubusercontent.com/u/162878798?v=4"},{"login":"digdilem","avatar_url":"https://avatars.githubusercontent.com/u/4052275?v=4"},{"login":"dinghino","avatar_url":"https://avatars.githubusercontent.com/u/14729459?v=4"},{"login":"gfomichev","avatar_url":"https://avatars.githubusercontent.com/u/1596146?v=4"},{"login":"gnattu","avatar_url":"https://avatars.githubusercontent.com/u/12995396?v=4"},{"login":"tuxpizza","avatar_url":"https://avatars.githubusercontent.com/u/84710786?v=4"},{"login":"xmarkurion","avatar_url":"https://avatars.githubusercontent.com/u/46654687?v=4"},{"login":"huanga","avatar_url":"https://avatars.githubusercontent.com/u/732970?v=4"},{"login":"taos15","avatar_url":"https://avatars.githubusercontent.com/u/122130728?v=4"},{"login":"arghyadipchak","avatar_url":"https://avatars.githubusercontent.com/u/32430374?v=4"},{"login":"AuthorShin","avatar_url":"https://avatars.githubusercontent.com/u/4959043?v=4"},{"login":"benniblot","avatar_url":"https://avatars.githubusercontent.com/u/47495914?v=4"},{"login":"bebsworthy","avatar_url":"https://avatars.githubusercontent.com/u/5266759?v=4"},{"login":"catrielmuller","avatar_url":"https://avatars.githubusercontent.com/u/2272323?v=4"},{"login":"Vysp3r","avatar_url":"https://avatars.githubusercontent.com/u/62019735?v=4"},{"login":"DR-Blogs","avatar_url":"https://avatars.githubusercontent.com/u/96393186?v=4"},{"login":"singular0","avatar_url":"https://avatars.githubusercontent.com/u/1925883?v=4"},{"login":"diogovalentte","avatar_url":"https://avatars.githubusercontent.com/u/49578155?v=4"},{"login":"codezninja","avatar_url":"https://avatars.githubusercontent.com/u/4400773?v=4"},{"login":"fabricionaweb","avatar_url":"https://avatars.githubusercontent.com/u/15933?v=4"},{"login":"nyok1912","avatar_url":"https://avatars.githubusercontent.com/u/32163949?v=4"},{"login":"bo3bdo","avatar_url":"https://avatars.githubusercontent.com/u/5271380?v=4"},{"login":"hskrtich","avatar_url":"https://avatars.githubusercontent.com/u/1214484?v=4"},{"login":"ishults","avatar_url":"https://avatars.githubusercontent.com/u/7275442?v=4"},{"login":"jelliuk","avatar_url":"https://avatars.githubusercontent.com/u/4790959?v=4"},{"login":"Moohan","avatar_url":"https://avatars.githubusercontent.com/u/5982260?v=4"},{"login":"tesar-tech","avatar_url":"https://avatars.githubusercontent.com/u/33880579?v=4"},{"login":"jbruell","avatar_url":"https://avatars.githubusercontent.com/u/31685172?v=4"},{"login":"JasonLeeB06","avatar_url":"https://avatars.githubusercontent.com/u/82266978?v=4"},{"login":"jeffersonraimon","avatar_url":"https://avatars.githubusercontent.com/u/80064475?v=4"},{"login":"jo-chemla","avatar_url":"https://avatars.githubusercontent.com/u/16822841?v=4"},{"login":"joser93","avatar_url":"https://avatars.githubusercontent.com/u/6912089?v=4"},{"login":"justijndepover","avatar_url":"https://avatars.githubusercontent.com/u/9008623?v=4"},{"login":"Aandree5","avatar_url":"https://avatars.githubusercontent.com/u/32734153?v=4"},{"login":"jackwellerreal","avatar_url":"https://avatars.githubusercontent.com/u/97435840?v=4"},{"login":"toineenzo","avatar_url":"https://avatars.githubusercontent.com/u/4921397?v=4"},{"login":"oben01","avatar_url":"https://avatars.githubusercontent.com/u/22369027?v=4"},{"login":"rezstje","avatar_url":"https://avatars.githubusercontent.com/u/45420315?v=4"},{"login":"castielwaverly","avatar_url":"https://avatars.githubusercontent.com/u/137005689?v=4"},{"login":"xoxyuxu","avatar_url":"https://avatars.githubusercontent.com/u/3543416?v=4"},{"login":"MaienM","avatar_url":"https://avatars.githubusercontent.com/u/583129?v=4"},{"login":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?v=4"},{"login":"Copilot","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},{"login":"tech62","avatar_url":"https://avatars.githubusercontent.com/u/16237642?v=4"},{"login":"pitschi","avatar_url":"https://avatars.githubusercontent.com/u/6841565?v=4"},{"login":"lthomsen","avatar_url":"https://avatars.githubusercontent.com/u/28560325?v=4"},{"login":"generalmat82","avatar_url":"https://avatars.githubusercontent.com/u/110256073?v=4"},{"login":"CrazyWolf13","avatar_url":"https://avatars.githubusercontent.com/u/96661824?v=4"},{"login":"noahcroghan","avatar_url":"https://avatars.githubusercontent.com/u/27422774?v=4"},{"login":"NikeLaosClericus","avatar_url":"https://avatars.githubusercontent.com/u/39810627?v=4"},{"login":"NicolasNewman","avatar_url":"https://avatars.githubusercontent.com/u/16135852?v=4"},{"login":"itzTheMeow","avatar_url":"https://avatars.githubusercontent.com/u/50887230?v=4"},{"login":"mairas","avatar_url":"https://avatars.githubusercontent.com/u/407010?v=4"},{"login":"leandroscardua","avatar_url":"https://avatars.githubusercontent.com/u/24698541?v=4"},{"login":"hotrungnhan","avatar_url":"https://avatars.githubusercontent.com/u/40029631?v=4"},{"login":"Kaotic3","avatar_url":"https://avatars.githubusercontent.com/u/80522225?v=4"},{"login":"frankvHoof93","avatar_url":"https://avatars.githubusercontent.com/u/7346516?v=4"},{"login":"faugusto-oliveira","avatar_url":"https://avatars.githubusercontent.com/u/37384074?v=4"},{"login":"ieugen","avatar_url":"https://avatars.githubusercontent.com/u/1050920?v=4"},{"login":"KartulUdus","avatar_url":"https://avatars.githubusercontent.com/u/23346150?v=4"},{"login":"DZ945brH","avatar_url":"https://avatars.githubusercontent.com/u/42635243?v=4"},{"login":"Oupsman","avatar_url":"https://avatars.githubusercontent.com/u/11260343?v=4"},{"login":"m0s4ik","avatar_url":"https://avatars.githubusercontent.com/u/26578395?v=4"},{"login":"AartSchinkel","avatar_url":"https://avatars.githubusercontent.com/u/189675191?v=4"}] \ No newline at end of file +[{"login":"ajnart","avatar_url":"https://avatars.githubusercontent.com/u/49837342?v=4"},{"login":"manuel-rw","avatar_url":"https://avatars.githubusercontent.com/u/30572287?v=4"},{"login":"Meierschlumpf","avatar_url":"https://avatars.githubusercontent.com/u/63781622?v=4"},{"login":"SeDemal","avatar_url":"https://avatars.githubusercontent.com/u/26098587?v=4"},{"login":"lammersbjorn","avatar_url":"https://avatars.githubusercontent.com/u/71191962?v=4"},{"login":"LarveyOfficial","avatar_url":"https://avatars.githubusercontent.com/u/39219859?v=4"},{"login":"c00ldude1oo","avatar_url":"https://avatars.githubusercontent.com/u/15677803?v=4"},{"login":"InterN0te","avatar_url":"https://avatars.githubusercontent.com/u/10882916?v=4"},{"login":"Aimsucks","avatar_url":"https://avatars.githubusercontent.com/u/1828486?v=4"},{"login":"JannesV","avatar_url":"https://avatars.githubusercontent.com/u/5984244?v=4"},{"login":"MauriceNino","avatar_url":"https://avatars.githubusercontent.com/u/18658092?v=4"},{"login":"hillaliy","avatar_url":"https://avatars.githubusercontent.com/u/950010?v=4"},{"login":"Skeeww","avatar_url":"https://avatars.githubusercontent.com/u/9639992?v=4"},{"login":"RichyHBM","avatar_url":"https://avatars.githubusercontent.com/u/5472275?v=4"},{"login":"Bonfire","avatar_url":"https://avatars.githubusercontent.com/u/5704760?v=4"},{"login":"wieli99","avatar_url":"https://avatars.githubusercontent.com/u/46794825?v=4"},{"login":"ishaanparlikar","avatar_url":"https://avatars.githubusercontent.com/u/43013132?v=4"},{"login":"Zareix","avatar_url":"https://avatars.githubusercontent.com/u/29818713?v=4"},{"login":"tuggan","avatar_url":"https://avatars.githubusercontent.com/u/4325608?v=4"},{"login":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"tancak","avatar_url":"https://avatars.githubusercontent.com/u/11760749?v=4"},{"login":"spkesDE","avatar_url":"https://avatars.githubusercontent.com/u/1682314?v=4"},{"login":"j3lte","avatar_url":"https://avatars.githubusercontent.com/u/2557568?v=4"},{"login":"dslatt","avatar_url":"https://avatars.githubusercontent.com/u/5211001?v=4"},{"login":"Malong11-007","avatar_url":"https://avatars.githubusercontent.com/u/40298510?v=4"},{"login":"StefanB7","avatar_url":"https://avatars.githubusercontent.com/u/22056509?v=4"},{"login":"souravghosh01","avatar_url":"https://avatars.githubusercontent.com/u/37548139?v=4"},{"login":"SR3u","avatar_url":"https://avatars.githubusercontent.com/u/2380522?v=4"},{"login":"Rikpat","avatar_url":"https://avatars.githubusercontent.com/u/33869814?v=4"},{"login":"NormanJS","avatar_url":"https://avatars.githubusercontent.com/u/83409549?v=4"},{"login":"No-Maines-Land","avatar_url":"https://avatars.githubusercontent.com/u/20687725?v=4"},{"login":"stark1tty","avatar_url":"https://avatars.githubusercontent.com/u/69326376?v=4"},{"login":"Momcilo42","avatar_url":"https://avatars.githubusercontent.com/u/10118137?v=4"},{"login":"marius-arch","avatar_url":"https://avatars.githubusercontent.com/u/72494359?v=4"},{"login":"Lumilias","avatar_url":"https://avatars.githubusercontent.com/u/10852161?v=4"},{"login":"Havock94","avatar_url":"https://avatars.githubusercontent.com/u/7635248?v=4"},{"login":"Lollyde","avatar_url":"https://avatars.githubusercontent.com/u/11347524?v=4"},{"login":"krishnamuppaneni","avatar_url":"https://avatars.githubusercontent.com/u/4703366?v=4"},{"login":"devtobi","avatar_url":"https://avatars.githubusercontent.com/u/28538704?v=4"},{"login":"TyxTang","avatar_url":"https://avatars.githubusercontent.com/u/90897955?v=4"},{"login":"alotlikebeans","avatar_url":"https://avatars.githubusercontent.com/u/19630511?v=4"},{"login":"WillyJL","avatar_url":"https://avatars.githubusercontent.com/u/49810075?v=4"},{"login":"anonysoul","avatar_url":"https://avatars.githubusercontent.com/u/105715150?v=4"},{"login":"cospeedster","avatar_url":"https://avatars.githubusercontent.com/u/52749645?v=4"},{"login":"diederbert","avatar_url":"https://avatars.githubusercontent.com/u/162878798?v=4"},{"login":"digdilem","avatar_url":"https://avatars.githubusercontent.com/u/4052275?v=4"},{"login":"dinghino","avatar_url":"https://avatars.githubusercontent.com/u/14729459?v=4"},{"login":"gfomichev","avatar_url":"https://avatars.githubusercontent.com/u/1596146?v=4"},{"login":"gnattu","avatar_url":"https://avatars.githubusercontent.com/u/12995396?v=4"},{"login":"tuxpizza","avatar_url":"https://avatars.githubusercontent.com/u/84710786?v=4"},{"login":"xmarkurion","avatar_url":"https://avatars.githubusercontent.com/u/46654687?v=4"},{"login":"huanga","avatar_url":"https://avatars.githubusercontent.com/u/732970?v=4"},{"login":"taos15","avatar_url":"https://avatars.githubusercontent.com/u/122130728?v=4"},{"login":"arghyadipchak","avatar_url":"https://avatars.githubusercontent.com/u/32430374?v=4"},{"login":"AuthorShin","avatar_url":"https://avatars.githubusercontent.com/u/4959043?v=4"},{"login":"benniblot","avatar_url":"https://avatars.githubusercontent.com/u/47495914?v=4"},{"login":"bebsworthy","avatar_url":"https://avatars.githubusercontent.com/u/5266759?v=4"},{"login":"catrielmuller","avatar_url":"https://avatars.githubusercontent.com/u/2272323?v=4"},{"login":"Vysp3r","avatar_url":"https://avatars.githubusercontent.com/u/62019735?v=4"},{"login":"DR-Blogs","avatar_url":"https://avatars.githubusercontent.com/u/96393186?v=4"},{"login":"singular0","avatar_url":"https://avatars.githubusercontent.com/u/1925883?v=4"},{"login":"diogovalentte","avatar_url":"https://avatars.githubusercontent.com/u/49578155?v=4"},{"login":"codezninja","avatar_url":"https://avatars.githubusercontent.com/u/4400773?v=4"},{"login":"fabricionaweb","avatar_url":"https://avatars.githubusercontent.com/u/15933?v=4"},{"login":"nyok1912","avatar_url":"https://avatars.githubusercontent.com/u/32163949?v=4"},{"login":"bo3bdo","avatar_url":"https://avatars.githubusercontent.com/u/5271380?v=4"},{"login":"hskrtich","avatar_url":"https://avatars.githubusercontent.com/u/1214484?v=4"},{"login":"ishults","avatar_url":"https://avatars.githubusercontent.com/u/7275442?v=4"},{"login":"jelliuk","avatar_url":"https://avatars.githubusercontent.com/u/4790959?v=4"},{"login":"Moohan","avatar_url":"https://avatars.githubusercontent.com/u/5982260?v=4"},{"login":"tesar-tech","avatar_url":"https://avatars.githubusercontent.com/u/33880579?v=4"},{"login":"jbruell","avatar_url":"https://avatars.githubusercontent.com/u/31685172?v=4"},{"login":"JasonLeeB06","avatar_url":"https://avatars.githubusercontent.com/u/82266978?v=4"},{"login":"jeffersonraimon","avatar_url":"https://avatars.githubusercontent.com/u/80064475?v=4"},{"login":"jo-chemla","avatar_url":"https://avatars.githubusercontent.com/u/16822841?v=4"},{"login":"joser93","avatar_url":"https://avatars.githubusercontent.com/u/6912089?v=4"},{"login":"justijndepover","avatar_url":"https://avatars.githubusercontent.com/u/9008623?v=4"},{"login":"Aandree5","avatar_url":"https://avatars.githubusercontent.com/u/32734153?v=4"},{"login":"jackwellerreal","avatar_url":"https://avatars.githubusercontent.com/u/97435840?v=4"},{"login":"SergioChan","avatar_url":"https://avatars.githubusercontent.com/u/10103766?v=4"},{"login":"toineenzo","avatar_url":"https://avatars.githubusercontent.com/u/4921397?v=4"},{"login":"oben01","avatar_url":"https://avatars.githubusercontent.com/u/22369027?v=4"},{"login":"rezstje","avatar_url":"https://avatars.githubusercontent.com/u/45420315?v=4"},{"login":"castielwaverly","avatar_url":"https://avatars.githubusercontent.com/u/137005689?v=4"},{"login":"xoxyuxu","avatar_url":"https://avatars.githubusercontent.com/u/3543416?v=4"},{"login":"MaienM","avatar_url":"https://avatars.githubusercontent.com/u/583129?v=4"},{"login":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?v=4"},{"login":"Copilot","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},{"login":"mairas","avatar_url":"https://avatars.githubusercontent.com/u/407010?v=4"},{"login":"itzTheMeow","avatar_url":"https://avatars.githubusercontent.com/u/50887230?v=4"},{"login":"NicolasNewman","avatar_url":"https://avatars.githubusercontent.com/u/16135852?v=4"},{"login":"NikeLaosClericus","avatar_url":"https://avatars.githubusercontent.com/u/39810627?v=4"},{"login":"noahcroghan","avatar_url":"https://avatars.githubusercontent.com/u/27422774?v=4"},{"login":"Rhiz3K","avatar_url":"https://avatars.githubusercontent.com/u/33246262?v=4"},{"login":"CrazyWolf13","avatar_url":"https://avatars.githubusercontent.com/u/96661824?v=4"},{"login":"generalmat82","avatar_url":"https://avatars.githubusercontent.com/u/110256073?v=4"},{"login":"lthomsen","avatar_url":"https://avatars.githubusercontent.com/u/28560325?v=4"},{"login":"pitschi","avatar_url":"https://avatars.githubusercontent.com/u/6841565?v=4"},{"login":"tech62","avatar_url":"https://avatars.githubusercontent.com/u/16237642?v=4"},{"login":"leandroscardua","avatar_url":"https://avatars.githubusercontent.com/u/24698541?v=4"},{"login":"hotrungnhan","avatar_url":"https://avatars.githubusercontent.com/u/40029631?v=4"},{"login":"Kaotic3","avatar_url":"https://avatars.githubusercontent.com/u/80522225?v=4"},{"login":"frankvHoof93","avatar_url":"https://avatars.githubusercontent.com/u/7346516?v=4"},{"login":"faugusto-oliveira","avatar_url":"https://avatars.githubusercontent.com/u/37384074?v=4"},{"login":"ieugen","avatar_url":"https://avatars.githubusercontent.com/u/1050920?v=4"},{"login":"KartulUdus","avatar_url":"https://avatars.githubusercontent.com/u/23346150?v=4"},{"login":"DZ945brH","avatar_url":"https://avatars.githubusercontent.com/u/42635243?v=4"},{"login":"Oupsman","avatar_url":"https://avatars.githubusercontent.com/u/11260343?v=4"},{"login":"m0s4ik","avatar_url":"https://avatars.githubusercontent.com/u/26578395?v=4"},{"login":"AartSchinkel","avatar_url":"https://avatars.githubusercontent.com/u/189675191?v=4"}] \ No newline at end of file diff --git a/static-data/translators.json b/static-data/translators.json index 60b178cfc..128610dcf 100644 --- a/static-data/translators.json +++ b/static-data/translators.json @@ -1 +1 @@ -[{"username":"carlchina","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/6697/medium/d22bbe7797bbeb30dbdc73a5648d329a_default.png"},{"username":"zielmann","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png"},{"username":"Thalyn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12494028/medium/5faf5acc945a874ed116c4567edaa09f_default.png"},{"username":"magnushj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12503488/medium/68f32e33ea7b891960055c9f831f7344_default.png"},{"username":"almontegil","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12580457/medium/f4136cacbdfdb4c28ae7f85dc5f840db_default.png"},{"username":"andibing","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12664938/medium/b8be63e4dcb2e791ced1ffc9e3a049a5.jpg"},{"username":"gronare","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12680911/medium/c6eb14d1504156f34a158e507f73aa3d_default.png"},{"username":"SmartPhoneLover","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12701640/medium/ec95486662ec875cda080e778c3ff702.jpg"},{"username":"marcelotk_15","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12773227/medium/ecf6bea16ab0c873c131df2154ee9718_default.png"},{"username":"S3OD177","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13051544/medium/11dd990837f61f7e8f7d36b041a7fddb_default.png"},{"username":"marcg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13153301/medium/ebcf60fbf27deb148ec40a659566c6ff_default.png"},{"username":"BeersTeddy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13185230/medium/2f1f4e1effe74a23422b195cbefb2a95_default.png"},{"username":"jamesmcmahon0","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13245578/medium/586aa873b4abddbd9abc6f3de99ab70e.jpeg"},{"username":"b1nar10","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13286752/medium/249b02e3368752cb175446082015737c_default.png"},{"username":"vannCN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13330448/medium/9b8a9ee3611e51e951e22d5fd4eb7d8d.jpg"},{"username":"binswm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13343482/medium/45dde0e6097b9b72705d2eba9dbbc276_default.png"},{"username":"SkewRam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13496556/medium/188f5c2deb7938eda51eb786cc4539ca.jpeg"},{"username":"raphcatarino","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13547726/medium/b003511e67df13a4b4b5689488fa8099.jpg"},{"username":"shillos5","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13600557/medium/b17650b2b84f829d54fa548c44c1ab27.jpeg"},{"username":"wolong98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13641407/medium/f4634edc58c7857a357e5293543c15cf.jpg"},{"username":"spair0039","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14012333/medium/72430e96027c09c19141cac38eae4617.png"},{"username":"MajorMarcin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14072183/medium/0a197e64bb92b6ea94cecbb607512c45.jpg"},{"username":"KosmoMoustache","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14103535/medium/51c438cdd9f86e8811c75f4869de479c.png"},{"username":"Soochaehwa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14118689/medium/496a1ce63111547bf455a1e0a7ac75f1_default.png"},{"username":"garryfield","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14187035/medium/520c964706676045f6eeec1b08edc880.jpg"},{"username":"droidenko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14444264/medium/4aa3a8e824f72bc9e5ec0d8de307095e.jpeg"},{"username":"maathis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14489950/medium/6eeddf13a757ee35f78f1763f94d95e1.jpeg"},{"username":"bukvam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14546502/medium/a819dc40a13c57395a17dc46e847d3ce.jpg"},{"username":"gm.cinalli","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14670666/medium/2d466a0fdbda40764526be86c97c0ab4.jpeg"},{"username":"antoine2tt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14722148/medium/f88d926900862dd59007ea4b3419cb9d.png"},{"username":"cretzen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14799754/medium/3ba5c1805ec20c000d5810c07985afe9.jpg"},{"username":"ktKongTong","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14817246/medium/97cfc3c028dbdaf85ebd1102da71e58c.jpeg"},{"username":"marinkaberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14861042/medium/2d5c4e62613f03082f3e645fa92efd59.jpeg"},{"username":"djismgaming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14934947/medium/f5a8570713c34ab0f7d5405d105e2a9a.jpeg"},{"username":"f1refa11","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14949159/medium/fd2ae63b8eb4462200ba96abf943c1b9.png"},{"username":"jeffersonraimon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057621/medium/6dff469563860e2618bc9d45646d0ab4.png"},{"username":"giop98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057987/medium/b8a4825d3fc39fc662f35ee258db4b2d.jpeg"},{"username":"tomislav.kraljevic","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15118857/medium/e133f1061cc92850b854d05d8faaeafd.png"},{"username":"Walkx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15202182/medium/5c37361ae45aeed487b34582c1f7ca37.png"},{"username":"andrea.rosso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15246318/medium/11f3f5ef44ec7f55b6f143090e208704_default.png"},{"username":"ajnart","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15270132/medium/a0f107a463c8910ee96bc2fa843a17e3.jpeg"},{"username":"Witchling","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15282238/medium/9e196b6783415b10ca571b7673c2ef33.jpg"},{"username":"guineuu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15292058/medium/22fbb758bda3b7805d50bf21d38f2c20.jpeg"},{"username":"Bulgus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15304568/medium/0e8787e5ceb02ed5c96a514d0068ae87.jpg"},{"username":"Narno","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15314996/medium/a6ba093f24884250a1bf6c6f2ca50f1b_default.png"},{"username":"BySempron","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15315986/medium/e3d22d7b1423c6823a9f36d595ed4bdb.png"},{"username":"jonathan.berglin.work","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15359236/medium/95930b2093db13b76179782f7322c5d5.png"},{"username":"icdmkg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405504/medium/f334d16cde1ac4ffb935b440d03465af.gif"},{"username":"irithys","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405614/medium/3086461c47cce0a0c031925e5f943412.png"},{"username":"JannesV","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419912/medium/a7809eb4b817d7c49b62cf10ae86b950.png"},{"username":"benniblot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419914/medium/8086b1573d31f152ba41949b3a172445.jpeg"},{"username":"pacjo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419916/medium/3cbeddbd7bc01faafb5a3bf47bba915b_default.png"},{"username":"Payou6994","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419934/medium/37c9b9b17dfb578404c1c1ddb73ba7a8.png"},{"username":"fzibi21","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419976/medium/0da688450358e0290a7b7359cc1f7328.png"},{"username":"WowMurdock","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420118/medium/de19576fccb495b6dfe4c4c04a56b834.png"},{"username":"hbooo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420120/medium/6c7c7f8db785061356ebb03d044d3329.jpeg"},{"username":"Manicraft1001","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420178/medium/50ec94563a06a9f74f33bd09f01eed4d.jpg"},{"username":"Void123","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420354/medium/86929d44df92a00f9fe900a985c196df_default.png"},{"username":"R4cc","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15422606/medium/a390979662b84694f59de30bdb732141.jpeg"},{"username":"fabricionaweb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15425808/medium/a9354142e7ae5152c144409d55fda551_default.png"},{"username":"JokeOfDead","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15426890/medium/a383eac9365e9de64fd4ab1d6fd0cb95.jpeg"},{"username":"hkz","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15427174/medium/c88acefb0d7306e1f7470e872029fb39_default.png"},{"username":"Steken","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428516/medium/d5aea5653c769c3a523182bdb60d1664.png"},{"username":"flar.anton","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428592/medium/b01fdb365d892e9f811f77fcb50a80a2.jpeg"},{"username":"Bon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15433542/medium/5397da4dfc821f20b6ac14fe0c514e9a.jpeg"},{"username":"bfkadan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434162/medium/4f9a0b43cfe3acaea60124c14ba7f44a.png"},{"username":"BunnySweety","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434662/medium/f0ef200a6a0dcf0e1d0e9ecd4148f560_default.png"},{"username":"HRKings","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15436168/medium/69a31e461d38549f01864e7ef10d642e.png"},{"username":"wiston81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15439078/medium/10f292c8d12a7c21a44b54495fa4a3d8.jpeg"},{"username":"qaz0911","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15440860/medium/3d3e50ee388c72dc4bf7a771761f2d89_default.png"},{"username":"qqyule","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15441462/medium/7a3cdf82710ffb5d8f388bc0bd010665.png"},{"username":"Bims0n","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15445560/medium/603220b603eeb3367e0f0d3fa675247c.jpg"},{"username":"TariqDaCoder","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15446228/medium/50b0f4040112bbd67690b769477398e5_default.png"},{"username":"Anarchon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15449644/medium/e925e1f3e3ffbf0f982391ce263a1a28.jpeg"},{"username":"Ashun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15453020/medium/ccdcf51c73d6aae40751bb30beee1915_default.png"},{"username":"sebekmartin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15454038/medium/bcfb44598cdfd1d7cd4eb35812538962.jpeg"},{"username":"RagnarGraves","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15459882/medium/143d5af850c1154070a218bea124e9cb_default.png"},{"username":"PrtmPhlp","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15462414/medium/b80db55e9de301432dcd1f8c8b24fd49_default.png"},{"username":"DooYoo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15470768/medium/2a18cf4be67094724b508c9e1e698a21_default.png"},{"username":"espentruls","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486092/medium/8e38afc3a4ff669226a0cfd3e420ff3a.jpeg"},{"username":"frisco82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486922/medium/4e1c5d4189b42508e660daa3c1c25b2a.jpeg"},{"username":"lupineDK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15491798/medium/461bd501e8371c062bf29ea171aedd36_default.png"},{"username":"hillaliy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15492732/medium/0bae17b421604892d888e3fc70cf0587.jpeg"},{"username":"MarcOrfilaCarreras","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15501072/medium/ea52b26c3c6f21e4931e38e3ce3f3d6e.png"},{"username":"robertbridda","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15507822/medium/a368c2e30411bb2da9b49290084191f3.png"},{"username":"MKoniuszko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518090/medium/87605434fcc839f6763ab07c50f6d232.jpeg"},{"username":"HeroSizy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518710/medium/4e79c0e98cbeb536dd961e656331b509.png"},{"username":"dwt136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15520022/medium/554422503f2baea43ace85facb4546fb_default.png"},{"username":"asifthewebguy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15526719/medium/b18931dd0c800d725048bd440646198b_default.png"},{"username":"eiloogs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15545537/medium/f290a2f1190983530a9b76b2e858a609.gif"},{"username":"_vytdv","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15547289/medium/60d8644cc8ad6f11a92ccea4a14cd098_default.png"},{"username":"crendasien","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15554645/medium/598ab1d4aaf6b8dccd5ba16be92da7b9.jpeg"},{"username":"edxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15573823/medium/8a565b732a75a77f840dd123cdb30bf4.png"},{"username":"somerlev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15617065/medium/f4b13513e311ec902d90b2f718412c55.jpg"},{"username":"kid1412621","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15643771/medium/dd455e32de652fa88e6fd97598bdffa7.png"},{"username":"suming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15644717/medium/244159dfe10fa03436205506f80c9e25.png"},{"username":"nick.gher","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15647517/medium/5374a2c6fef60a3fbf0edf86b997c351_default.png"},{"username":"DataCat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15650315/medium/ce7c1365adf35c5d490d77500a4607fb_default.png"},{"username":"dizo89","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15658375/medium/0ca745e5017d491fe1b22b0239904de8.jpeg"},{"username":"tee_noodle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674577/medium/804d9cf06f5196026acb6436b809d0da_default.png"},{"username":"Marty88","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674593/medium/492b1509d52bd2809dea768121217125.jpeg"},{"username":"Spillebulle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15677023/medium/20b98bb85062e07afe0e63618f8a5feb.PNG"},{"username":"petitmewen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15685239/medium/15de9b62d2e0bc25013435f1784bbcc1.jpeg"},{"username":"NoProsNoNoobs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15687709/medium/ae8f65fafeb8bcf74dcb8871bbe46461.png"},{"username":"y.gybson","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15690777/medium/b5cb5d2d5768904ff6586c727e3a6c77.jpeg"},{"username":"inside90","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15704947/medium/c1355fcb30dd76f8e39d98d1d49f1c52.png"},{"username":"RJSkudra","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15709853/medium/c3abf2774913dc4e81fb261d36d7668c.png"},{"username":"binge203","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15713937/medium/77c1cfa4314673db80e6881fd9f64668.gif"},{"username":"Mailootje","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15714337/medium/743c3bc4ab1989966a375eeeec83d8b8.jpeg"},{"username":"tim-wiegers","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15719805/medium/08a96f064813350661cd6b20bf3d7d99.png"},{"username":"GkhnG","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15722911/medium/71a027caec489ef6ce82bcf1888329d0_default.png"},{"username":"Zoen-Millo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15760967/medium/9e956f11adc5b34f5636268b5c485dbf.jpg"},{"username":"HooinKyoma","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15792897/medium/9489f0a9b368e0e827ae758b740a2eed.jpeg"},{"username":"wathergeen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15794495/medium/a83b7fc80d180669ebfd6deb3544cfd0.png"},{"username":"MoeToo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15818233/medium/d35cd6953717706eaf20f6c143c62947.png"},{"username":"itodouble","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15836233/medium/e984caea18fb0673bf319fcf28cef649.png"},{"username":"loslocitos","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15847901/medium/fe30d12fd2cf38212f929e13b169f9ec.jpeg"},{"username":"Oversleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15849065/medium/06141f13a6d541d753f3c2f2947b8068_default.png"},{"username":"Beardy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15865139/medium/fca6b9d2b3f52e286d1568f52b83b6a0_default.png"},{"username":"raelyan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15875457/medium/2f4fda1d1aaa5dcc79b328baf3f03151.jpeg"},{"username":"dolphin738","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15913763/medium/ee6fede7b8528ca642329ada80d1cc18.png"},{"username":"brunotco","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15916719/medium/09db45880fc05abc18adb8d932a5ecf9_default.png"},{"username":"LukeIsHereToDevelop","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15924739/medium/3e6cd3940297bb4ba7bb039c93e6f918.png"},{"username":"kennit","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15925879/medium/6b0733ad3c5949b91c55e4d8b03db8a5_default.png"},{"username":"kuunpire","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15950309/medium/8192a4f08f07086828ac9f74ed29a169.jpeg"},{"username":"Sandor-dev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15951759/medium/0216c2da4eb028164ebbecf1c72f6271_default.png"},{"username":"Meierschlumpf","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15953187/medium/23c744faef1ab84fbdc9351a7850aab6.jpeg"},{"username":"harmlesscat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15970733/medium/dd8d0214a0250c932bb518b1b55e45a2_default.png"},{"username":"OrzWTF","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15976121/medium/4c4557cbff7ff7b0503455bc59c020e0.jpeg"},{"username":"tagaishi","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15977271/medium/eade504c83a5a1ff831c80a538fbdb44_default.png"},{"username":"azurite928","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15981895/medium/547ccc459ee123e78b5401c499f1022d.png"},{"username":"Ronner231","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16021342/medium/7734d550df2de5a2fec2ffff33e7024c.jpeg"},{"username":"ugyes","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16034148/medium/ed001e3f470a2dea9a8ce955b18e7bd5.png"},{"username":"rpieja","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16045554/medium/bd55baca2ef8b92502a760cc9ee7c505_default.png"},{"username":"flambyisyou","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16051620/medium/3a3bc0c90f6b95ab4ef74396a0a17beb.png"},{"username":"Topbcy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16077170/medium/d3aed33ea56330338756cfcd89477cfe.jpeg"},{"username":"ai5d02sb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16084674/medium/7c8119fe2a5ca71bb15f636916a42b95_default.png"},{"username":"explosiveparrot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16097722/medium/7762f80fc1da63f5b2eb87de9d640324_default.png"},{"username":"DestroyCom","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16111544/medium/83e3d3ac5c8bfed634cd1a074854db67.png"},{"username":"neotraxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16116966/medium/b30df957873329019a8a90a69f6efe3a.png"},{"username":"gzxpa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16123314/medium/487b05577310a946b0b98bc72c11213b_default.png"},{"username":"TORIK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16124732/medium/de770890e6411860ac06e8cc2dc0abd0_default.png"},{"username":"sergio.pibot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16138114/medium/80db802b2fcd6bbf19ea4c7413367dca.jpeg"},{"username":"karam-ajaj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16139838/medium/7539ab958d3c85d5f67e7849483ea8f7.jpeg"},{"username":"SimonHenz97","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16151520/medium/9b94a85b536688e2d94538c384fd0a76.png"},{"username":"olsson82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16198988/medium/eeaab4cba210c537424d4204754b604e.png"},{"username":"bo3bdo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16222806/medium/8652f3beacb6098dde5a4cd0a29fe80d.jpeg"},{"username":"AngryPlayer04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245192/medium/342715274f4dc31fd4132cdae9126188.jpeg"},{"username":"ehatamm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245884/medium/979d5e5526fe545be9bf46db481f7182.jpeg"},{"username":"Balionelis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16246058/medium/986d62ba363594c517d966fe9178dcbb.png"},{"username":"kwargs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16248816/medium/19ce11f04bf1ae2637e0483399c675f9_default.png"},{"username":"lucicu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16273892/medium/3b09e8f3bead221ef98d6a45a16851dc_default.png"},{"username":"Michael5564445","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16357688/medium/9d9026a8bf3eaccb0417da240932ebf7.png"},{"username":"Netscream","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16359198/medium/694e0c8572dc8a47e6d63da31ec5b992.png"},{"username":"belicstefan04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16368142/medium/4742dcfd7bf7ad7e33e37ac44fba7e0f.png"},{"username":"Hamad2066","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16371478/medium/f37bbc7685b6757defdbd1494236af61.jpeg"},{"username":"3ct0pl4sm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16399616/medium/ce796d1c40163975624c0a483e56374f.png"},{"username":"sanchez.marcell626","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16433865/medium/3ddde1314764cc2205ffdcd1ae719a91.png"},{"username":"Minoctis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16490079/medium/91fd0849303a4eca033d660d0a7b6854.jpeg"},{"username":"vittoriosoccorso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16498805/medium/17086b2f1981f734edd1572f79c3158a.jpeg"},{"username":"Worgen325","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16533177/medium/4a62cc6b06095751aeb4b1b3e96db93f.png"},{"username":"homarr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16657003/medium/3afabfd3de949a54ff5d40ad04552aba.png"},{"username":"mwgg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16658379/medium/763dd09f5c238cc5324d4d5357985292.png"},{"username":"kiwinho","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16671855/medium/bfe3a2d497dc4748a04d02e4ae2139cb.jpeg"},{"username":"tjvg4m34r13","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16679135/medium/7a483b9b0abe0d925e54808e1cb38fa0.jpeg"},{"username":"Diegoem","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16705921/medium/29ce68ebc191fc3f65499511b12de98f_default.png"},{"username":"bouks69","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16746091/medium/b58b1fc08520de416198be9df5d093eb.jpeg"},{"username":"futhgar","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16748067/medium/b8c526b097f9aa9d687250cac3df16dc.jpeg"},{"username":"GrimSQL","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16764343/medium/fff729a76d1f8fbcdaee9bb0c0f5f3fd.png"},{"username":"chnikel","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767047/medium/3dda2a37e03049dafefe6697bb00f75c.png"},{"username":"yuki19870616","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767951/medium/f59c848e38382cda6c8464b0a7b9e642_default.png"},{"username":"noamdal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16782245/medium/b4a72a61f9caf138f0322c0cb987e6d0.png"},{"username":"MalithRukshan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16809057/medium/084d6a5b35fbbeacc70e7021197d222f.png"},{"username":"minirope19","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16930929/medium/e8cbbc26747e31c5a8959215e1dd067b.jpeg"},{"username":"prubin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17503492/medium/96ac87644691e49c1f983f2f094e541c_default.png"},{"username":"toineenzo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12371852/medium/9f1b2bedb4794c59479cd289bdba9fab.png"},{"username":"ArcaneWater","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12421105/medium/1ac82517a6c658f6b62c48aebcb17e86_default.png"},{"username":"Ebedami","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12974801/medium/b596dea5c09454c4c828eac558389755.jpg"},{"username":"perrygamerptyt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13117177/medium/1406c949507ecd438480473c8a1f6124.jpg"},{"username":"SergiSvK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13320543/medium/3df3c79cc5f0c53716c559cd3fd2fc20.png"},{"username":"jeongeon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13362856/medium/eb572f72cde5e5526c517ca3a6489850_default.png"},{"username":"MrTranCFCVN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13439475/medium/a1789d69c85d90c667194b5d6a518c08_default.png"},{"username":"Tobost06","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13467449/medium/9227dc07f6366bc060d28304f5cb8ce7.jpeg"},{"username":"Kf637","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13530622/medium/118b00bb72d01d3229c97409637e25d1_default.png"},{"username":"Cruellest","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13610615/medium/2a74faa0947ee08d18f7946fb8602c1e.jpg"},{"username":"Thario","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14491372/medium/dd5e142070802a672900121aa3f332a6_default.png"},{"username":"Wjouter","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14585620/medium/b91a51513332bdc0a0a9ecbed99ecbc3.png"},{"username":"albanobattistella","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14686194/medium/564afcfd76f5cd24751bd669cf4943aa.jpg"},{"username":"Kachelkaiser","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14763406/medium/203a781797da4a18fe0f4e7db8fd547c.png"},{"username":"regi4","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14842936/medium/f7e1d672f562a7db61ba6b4b8f4de41d.png"},{"username":"baton5129","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14891064/medium/8d438f557b82977dd02f0ead3187265f.PNG"},{"username":"meviper","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15958903/medium/209f521ce33a05831fa8d7d1b7babc20_default.png"},{"username":"TheRedCyclops","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16486399/medium/7f39226180120d5a9efcb8e13d8aec8e_default.png"},{"username":"dymek37","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16659221/medium/d1dc6d11d7e7fc370efc5070e837ae03.png"},{"username":"B3CKDOOR","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16744975/medium/e6c7b2d45e76465d54e6efb67c83da7d.png"},{"username":"Larsluph","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16779933/medium/ed7d36f8b44013bad3a16ac0491bd0f7.png"},{"username":"FOEDI","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16781001/medium/6b4552fb72e359aa016f7a054078fac8.png"},{"username":"xmarkurion","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16805443/medium/34a20428427de5aaef99c7d140646803.png"},{"username":"gregid","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16806705/medium/f3c8f4a20436e8538929130142bbc104.png"},{"username":"Flameberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16820453/medium/d47be866148474c9d05fec6fbe406d88.png"},{"username":"Playfust","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16872865/medium/5f4609cc711e5fb9fa8a0b178635769c.jpeg"},{"username":"Cotignac","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16879297/medium/81ff353edf030699a159bb79cda26e84.jpg"},{"username":"LeaHun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16916375/medium/618520f0543b1e212ebc83d66b683d4b_default.png"},{"username":"jackwellerreal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16919717/medium/37bbfdc03893f141133ccc619593266d.png"},{"username":"andrius.cim","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16967845/medium/46028fc1a0ddfaaeebcb37b39739625d_default.png"},{"username":"xjxexrxrxyx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17041412/medium/d34d664166db6fb25579bca9ff3b50b4.jpeg"},{"username":"bilhal.fellah","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17044572/medium/d1ec6f17e4aa013e9eededc83778d2c6.png"},{"username":"the_octo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17058060/medium/7423ab3a4cabb67f5decb2e2dfa2b675_default.png"},{"username":"BamesJond","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17075846/medium/128d7ffd40254c8e376f45678e2fc620_default.png"},{"username":"Kornikus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17134240/medium/d7a42b2c30db46ff152699ca01f9e11a_default.png"},{"username":"xoxyuxu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17176526/medium/108055aa24343043de852e412bec74be.png"},{"username":"cryptodntsleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17249408/medium/b9e15aa2b24a0dbc1e4f194aa8ed5109.png"},{"username":"yaniorg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17261842/medium/7dbfc77f21c826845961243c44540d26.jpg"},{"username":"Vidariondr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17262438/medium/45fbc71be02ef27296b6f423e97b6a03_default.png"},{"username":"Fastery","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17263066/medium/701b0edc59676174863ad651528bbb37.jpeg"},{"username":"stratself","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17290388/medium/57d9d8161b3fd0abf4dc5558b4a1fa05_default.png"},{"username":"wuzeqin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17292606/medium/b9e0308410b31337e2d7aa6ed346d718_default.png"},{"username":"ChristopherBull","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17304338/medium/21a175ce596bfae81430767467908b90.jpeg"},{"username":"darkbcnlord","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17311436/medium/b271bc0b419ec3a26ddb7b63ff8ffc4b.png"},{"username":"zhoran1997","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17344028/medium/c8f450b5a8f1e9494a45dc60af7ce63e.png"},{"username":"gilalves1703","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17447768/medium/3f1de562a5c2391c88bbf8d5cf40a266.png"},{"username":"iServeCloud","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17470960/medium/11649b99d609438d66455a4d2fdc70f7.png"},{"username":"guibolzantvbox","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17474136/medium/59a576e6da538664ceb972253916fa02.jpeg"},{"username":"ivann136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17506062/medium/67d09ada36fac5f444a1f7517e3a97bd_default.png"},{"username":"Maheshivara","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17516082/medium/576e1e6581cf969615b265de6aeff8b7.jpeg"},{"username":"brunogui81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17517542/medium/7c0d174e810435af518fe8e0c05e151f.jpeg"},{"username":"michelwilhelm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17542190/medium/4c6b33fd8993ff565fa75add2ce8355e.jpeg"}] \ No newline at end of file +[{"username":"carlchina","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/6697/medium/d22bbe7797bbeb30dbdc73a5648d329a_default.png"},{"username":"zielmann","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png"},{"username":"Thalyn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12494028/medium/5faf5acc945a874ed116c4567edaa09f_default.png"},{"username":"magnushj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12503488/medium/68f32e33ea7b891960055c9f831f7344_default.png"},{"username":"almontegil","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12580457/medium/f4136cacbdfdb4c28ae7f85dc5f840db_default.png"},{"username":"andibing","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12664938/medium/b8be63e4dcb2e791ced1ffc9e3a049a5.jpg"},{"username":"gronare","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12680911/medium/c6eb14d1504156f34a158e507f73aa3d_default.png"},{"username":"SmartPhoneLover","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12701640/medium/ec95486662ec875cda080e778c3ff702.jpg"},{"username":"marcelotk_15","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12773227/medium/ecf6bea16ab0c873c131df2154ee9718_default.png"},{"username":"S3OD177","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13051544/medium/11dd990837f61f7e8f7d36b041a7fddb_default.png"},{"username":"marcg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13153301/medium/ebcf60fbf27deb148ec40a659566c6ff_default.png"},{"username":"BeersTeddy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13185230/medium/2f1f4e1effe74a23422b195cbefb2a95_default.png"},{"username":"jamesmcmahon0","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13245578/medium/586aa873b4abddbd9abc6f3de99ab70e.jpeg"},{"username":"b1nar10","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13286752/medium/249b02e3368752cb175446082015737c_default.png"},{"username":"vannCN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13330448/medium/9b8a9ee3611e51e951e22d5fd4eb7d8d.jpg"},{"username":"binswm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13343482/medium/45dde0e6097b9b72705d2eba9dbbc276_default.png"},{"username":"SkewRam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13496556/medium/188f5c2deb7938eda51eb786cc4539ca.jpeg"},{"username":"raphcatarino","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13547726/medium/b003511e67df13a4b4b5689488fa8099.jpg"},{"username":"shillos5","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13600557/medium/b17650b2b84f829d54fa548c44c1ab27.jpeg"},{"username":"wolong98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13641407/medium/f4634edc58c7857a357e5293543c15cf.jpg"},{"username":"spair0039","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14012333/medium/72430e96027c09c19141cac38eae4617.png"},{"username":"MajorMarcin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14072183/medium/0a197e64bb92b6ea94cecbb607512c45.jpg"},{"username":"KosmoMoustache","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14103535/medium/51c438cdd9f86e8811c75f4869de479c.png"},{"username":"Soochaehwa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14118689/medium/496a1ce63111547bf455a1e0a7ac75f1_default.png"},{"username":"garryfield","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14187035/medium/520c964706676045f6eeec1b08edc880.jpg"},{"username":"droidenko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14444264/medium/4aa3a8e824f72bc9e5ec0d8de307095e.jpeg"},{"username":"maathis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14489950/medium/6eeddf13a757ee35f78f1763f94d95e1.jpeg"},{"username":"bukvam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14546502/medium/a819dc40a13c57395a17dc46e847d3ce.jpg"},{"username":"gm.cinalli","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14670666/medium/2d466a0fdbda40764526be86c97c0ab4.jpeg"},{"username":"antoine2tt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14722148/medium/f88d926900862dd59007ea4b3419cb9d.png"},{"username":"cretzen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14799754/medium/3ba5c1805ec20c000d5810c07985afe9.jpg"},{"username":"ktKongTong","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14817246/medium/97cfc3c028dbdaf85ebd1102da71e58c.jpeg"},{"username":"marinkaberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14861042/medium/2d5c4e62613f03082f3e645fa92efd59.jpeg"},{"username":"djismgaming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14934947/medium/f5a8570713c34ab0f7d5405d105e2a9a.jpeg"},{"username":"f1refa11","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14949159/medium/fd2ae63b8eb4462200ba96abf943c1b9.png"},{"username":"jeffersonraimon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057621/medium/6dff469563860e2618bc9d45646d0ab4.png"},{"username":"giop98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057987/medium/b8a4825d3fc39fc662f35ee258db4b2d.jpeg"},{"username":"tomislav.kraljevic","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15118857/medium/e133f1061cc92850b854d05d8faaeafd.png"},{"username":"Walkx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15202182/medium/5c37361ae45aeed487b34582c1f7ca37.png"},{"username":"andrea.rosso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15246318/medium/11f3f5ef44ec7f55b6f143090e208704_default.png"},{"username":"ajnart","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15270132/medium/a0f107a463c8910ee96bc2fa843a17e3.jpeg"},{"username":"Witchling","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15282238/medium/9e196b6783415b10ca571b7673c2ef33.jpg"},{"username":"guineuu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15292058/medium/22fbb758bda3b7805d50bf21d38f2c20.jpeg"},{"username":"Bulgus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15304568/medium/0e8787e5ceb02ed5c96a514d0068ae87.jpg"},{"username":"Narno","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15314996/medium/a6ba093f24884250a1bf6c6f2ca50f1b_default.png"},{"username":"BySempron","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15315986/medium/e3d22d7b1423c6823a9f36d595ed4bdb.png"},{"username":"jonathan.berglin.work","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15359236/medium/95930b2093db13b76179782f7322c5d5.png"},{"username":"icdmkg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405504/medium/f334d16cde1ac4ffb935b440d03465af.gif"},{"username":"irithys","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405614/medium/3086461c47cce0a0c031925e5f943412.png"},{"username":"JannesV","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419912/medium/a7809eb4b817d7c49b62cf10ae86b950.png"},{"username":"benniblot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419914/medium/8086b1573d31f152ba41949b3a172445.jpeg"},{"username":"pacjo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419916/medium/3cbeddbd7bc01faafb5a3bf47bba915b_default.png"},{"username":"Payou6994","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419934/medium/37c9b9b17dfb578404c1c1ddb73ba7a8.png"},{"username":"fzibi21","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419976/medium/0da688450358e0290a7b7359cc1f7328.png"},{"username":"WowMurdock","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420118/medium/de19576fccb495b6dfe4c4c04a56b834.png"},{"username":"hbooo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420120/medium/6c7c7f8db785061356ebb03d044d3329.jpeg"},{"username":"Manicraft1001","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420178/medium/50ec94563a06a9f74f33bd09f01eed4d.jpg"},{"username":"Void123","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420354/medium/86929d44df92a00f9fe900a985c196df_default.png"},{"username":"R4cc","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15422606/medium/a390979662b84694f59de30bdb732141.jpeg"},{"username":"fabricionaweb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15425808/medium/a9354142e7ae5152c144409d55fda551_default.png"},{"username":"JokeOfDead","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15426890/medium/a383eac9365e9de64fd4ab1d6fd0cb95.jpeg"},{"username":"hkz","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15427174/medium/c88acefb0d7306e1f7470e872029fb39_default.png"},{"username":"Steken","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428516/medium/d5aea5653c769c3a523182bdb60d1664.png"},{"username":"flar.anton","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428592/medium/b01fdb365d892e9f811f77fcb50a80a2.jpeg"},{"username":"Bon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15433542/medium/5397da4dfc821f20b6ac14fe0c514e9a.jpeg"},{"username":"bfkadan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434162/medium/4f9a0b43cfe3acaea60124c14ba7f44a.png"},{"username":"BunnySweety","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434662/medium/f0ef200a6a0dcf0e1d0e9ecd4148f560_default.png"},{"username":"HRKings","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15436168/medium/69a31e461d38549f01864e7ef10d642e.png"},{"username":"wiston81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15439078/medium/10f292c8d12a7c21a44b54495fa4a3d8.jpeg"},{"username":"qaz0911","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15440860/medium/3d3e50ee388c72dc4bf7a771761f2d89_default.png"},{"username":"qqyule","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15441462/medium/7a3cdf82710ffb5d8f388bc0bd010665.png"},{"username":"Bims0n","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15445560/medium/603220b603eeb3367e0f0d3fa675247c.jpg"},{"username":"TariqDaCoder","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15446228/medium/50b0f4040112bbd67690b769477398e5_default.png"},{"username":"Anarchon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15449644/medium/e925e1f3e3ffbf0f982391ce263a1a28.jpeg"},{"username":"Ashun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15453020/medium/ccdcf51c73d6aae40751bb30beee1915_default.png"},{"username":"sebekmartin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15454038/medium/bcfb44598cdfd1d7cd4eb35812538962.jpeg"},{"username":"RagnarGraves","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15459882/medium/143d5af850c1154070a218bea124e9cb_default.png"},{"username":"PrtmPhlp","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15462414/medium/b80db55e9de301432dcd1f8c8b24fd49_default.png"},{"username":"DooYoo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15470768/medium/2a18cf4be67094724b508c9e1e698a21_default.png"},{"username":"espentruls","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486092/medium/8e38afc3a4ff669226a0cfd3e420ff3a.jpeg"},{"username":"frisco82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486922/medium/4e1c5d4189b42508e660daa3c1c25b2a.jpeg"},{"username":"lupineDK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15491798/medium/461bd501e8371c062bf29ea171aedd36_default.png"},{"username":"hillaliy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15492732/medium/0bae17b421604892d888e3fc70cf0587.jpeg"},{"username":"MarcOrfilaCarreras","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15501072/medium/ea52b26c3c6f21e4931e38e3ce3f3d6e.png"},{"username":"robertbridda","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15507822/medium/a368c2e30411bb2da9b49290084191f3.png"},{"username":"MKoniuszko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518090/medium/87605434fcc839f6763ab07c50f6d232.jpeg"},{"username":"HeroSizy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518710/medium/4e79c0e98cbeb536dd961e656331b509.png"},{"username":"dwt136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15520022/medium/554422503f2baea43ace85facb4546fb_default.png"},{"username":"asifthewebguy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15526719/medium/b18931dd0c800d725048bd440646198b_default.png"},{"username":"eiloogs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15545537/medium/f290a2f1190983530a9b76b2e858a609.gif"},{"username":"_vytdv","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15547289/medium/60d8644cc8ad6f11a92ccea4a14cd098_default.png"},{"username":"crendasien","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15554645/medium/598ab1d4aaf6b8dccd5ba16be92da7b9.jpeg"},{"username":"edxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15573823/medium/8a565b732a75a77f840dd123cdb30bf4.png"},{"username":"somerlev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15617065/medium/f4b13513e311ec902d90b2f718412c55.jpg"},{"username":"kid1412621","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15643771/medium/dd455e32de652fa88e6fd97598bdffa7.png"},{"username":"suming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15644717/medium/244159dfe10fa03436205506f80c9e25.png"},{"username":"nick.gher","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15647517/medium/5374a2c6fef60a3fbf0edf86b997c351_default.png"},{"username":"DataCat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15650315/medium/ce7c1365adf35c5d490d77500a4607fb_default.png"},{"username":"dizo89","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15658375/medium/0ca745e5017d491fe1b22b0239904de8.jpeg"},{"username":"tee_noodle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674577/medium/804d9cf06f5196026acb6436b809d0da_default.png"},{"username":"Marty88","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674593/medium/492b1509d52bd2809dea768121217125.jpeg"},{"username":"Spillebulle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15677023/medium/20b98bb85062e07afe0e63618f8a5feb.PNG"},{"username":"petitmewen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15685239/medium/15de9b62d2e0bc25013435f1784bbcc1.jpeg"},{"username":"NoProsNoNoobs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15687709/medium/ae8f65fafeb8bcf74dcb8871bbe46461.png"},{"username":"y.gybson","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15690777/medium/b5cb5d2d5768904ff6586c727e3a6c77.jpeg"},{"username":"inside90","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15704947/medium/c1355fcb30dd76f8e39d98d1d49f1c52.png"},{"username":"RJSkudra","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15709853/medium/c3abf2774913dc4e81fb261d36d7668c.png"},{"username":"binge203","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15713937/medium/77c1cfa4314673db80e6881fd9f64668.gif"},{"username":"Mailootje","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15714337/medium/743c3bc4ab1989966a375eeeec83d8b8.jpeg"},{"username":"tim-wiegers","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15719805/medium/08a96f064813350661cd6b20bf3d7d99.png"},{"username":"GkhnG","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15722911/medium/71a027caec489ef6ce82bcf1888329d0_default.png"},{"username":"Zoen-Millo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15760967/medium/9e956f11adc5b34f5636268b5c485dbf.jpg"},{"username":"HooinKyoma","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15792897/medium/9489f0a9b368e0e827ae758b740a2eed.jpeg"},{"username":"wathergeen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15794495/medium/a83b7fc80d180669ebfd6deb3544cfd0.png"},{"username":"MoeToo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15818233/medium/d35cd6953717706eaf20f6c143c62947.png"},{"username":"itodouble","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15836233/medium/e984caea18fb0673bf319fcf28cef649.png"},{"username":"loslocitos","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15847901/medium/fe30d12fd2cf38212f929e13b169f9ec.jpeg"},{"username":"Oversleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15849065/medium/06141f13a6d541d753f3c2f2947b8068_default.png"},{"username":"Beardy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15865139/medium/fca6b9d2b3f52e286d1568f52b83b6a0_default.png"},{"username":"raelyan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15875457/medium/2f4fda1d1aaa5dcc79b328baf3f03151.jpeg"},{"username":"dolphin738","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15913763/medium/ee6fede7b8528ca642329ada80d1cc18.png"},{"username":"brunotco","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15916719/medium/09db45880fc05abc18adb8d932a5ecf9_default.png"},{"username":"LukeIsHereToDevelop","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15924739/medium/3e6cd3940297bb4ba7bb039c93e6f918.png"},{"username":"kennit","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15925879/medium/6b0733ad3c5949b91c55e4d8b03db8a5_default.png"},{"username":"kuunpire","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15950309/medium/8192a4f08f07086828ac9f74ed29a169.jpeg"},{"username":"Sandor-dev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15951759/medium/0216c2da4eb028164ebbecf1c72f6271_default.png"},{"username":"Meierschlumpf","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15953187/medium/23c744faef1ab84fbdc9351a7850aab6.jpeg"},{"username":"harmlesscat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15970733/medium/dd8d0214a0250c932bb518b1b55e45a2_default.png"},{"username":"OrzWTF","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15976121/medium/4c4557cbff7ff7b0503455bc59c020e0.jpeg"},{"username":"tagaishi","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15977271/medium/eade504c83a5a1ff831c80a538fbdb44_default.png"},{"username":"azurite928","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15981895/medium/547ccc459ee123e78b5401c499f1022d.png"},{"username":"Ronner231","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16021342/medium/7734d550df2de5a2fec2ffff33e7024c.jpeg"},{"username":"ugyes","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16034148/medium/ed001e3f470a2dea9a8ce955b18e7bd5.png"},{"username":"rpieja","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16045554/medium/bd55baca2ef8b92502a760cc9ee7c505_default.png"},{"username":"flambyisyou","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16051620/medium/3a3bc0c90f6b95ab4ef74396a0a17beb.png"},{"username":"Topbcy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16077170/medium/d3aed33ea56330338756cfcd89477cfe.jpeg"},{"username":"ai5d02sb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16084674/medium/7c8119fe2a5ca71bb15f636916a42b95_default.png"},{"username":"explosiveparrot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16097722/medium/7762f80fc1da63f5b2eb87de9d640324_default.png"},{"username":"DestroyCom","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16111544/medium/83e3d3ac5c8bfed634cd1a074854db67.png"},{"username":"neotraxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16116966/medium/b30df957873329019a8a90a69f6efe3a.png"},{"username":"gzxpa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16123314/medium/487b05577310a946b0b98bc72c11213b_default.png"},{"username":"TORIK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16124732/medium/de770890e6411860ac06e8cc2dc0abd0_default.png"},{"username":"sergio.pibot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16138114/medium/80db802b2fcd6bbf19ea4c7413367dca.jpeg"},{"username":"karam-ajaj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16139838/medium/7539ab958d3c85d5f67e7849483ea8f7.jpeg"},{"username":"SimonHenz97","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16151520/medium/9b94a85b536688e2d94538c384fd0a76.png"},{"username":"olsson82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16198988/medium/eeaab4cba210c537424d4204754b604e.png"},{"username":"bo3bdo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16222806/medium/8652f3beacb6098dde5a4cd0a29fe80d.jpeg"},{"username":"AngryPlayer04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245192/medium/342715274f4dc31fd4132cdae9126188.jpeg"},{"username":"ehatamm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245884/medium/979d5e5526fe545be9bf46db481f7182.jpeg"},{"username":"Balionelis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16246058/medium/986d62ba363594c517d966fe9178dcbb.png"},{"username":"kwargs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16248816/medium/19ce11f04bf1ae2637e0483399c675f9_default.png"},{"username":"lucicu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16273892/medium/3b09e8f3bead221ef98d6a45a16851dc_default.png"},{"username":"Michael5564445","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16357688/medium/9d9026a8bf3eaccb0417da240932ebf7.png"},{"username":"Netscream","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16359198/medium/694e0c8572dc8a47e6d63da31ec5b992.png"},{"username":"belicstefan04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16368142/medium/4742dcfd7bf7ad7e33e37ac44fba7e0f.png"},{"username":"Hamad2066","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16371478/medium/f37bbc7685b6757defdbd1494236af61.jpeg"},{"username":"3ct0pl4sm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16399616/medium/ce796d1c40163975624c0a483e56374f.png"},{"username":"sanchez.marcell626","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16433865/medium/3ddde1314764cc2205ffdcd1ae719a91.png"},{"username":"Minoctis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16490079/medium/91fd0849303a4eca033d660d0a7b6854.jpeg"},{"username":"vittoriosoccorso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16498805/medium/17086b2f1981f734edd1572f79c3158a.jpeg"},{"username":"Worgen325","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16533177/medium/4a62cc6b06095751aeb4b1b3e96db93f.png"},{"username":"homarr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16657003/medium/3afabfd3de949a54ff5d40ad04552aba.png"},{"username":"mwgg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16658379/medium/763dd09f5c238cc5324d4d5357985292.png"},{"username":"kiwinho","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16671855/medium/bfe3a2d497dc4748a04d02e4ae2139cb.jpeg"},{"username":"tjvg4m34r13","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16679135/medium/7a483b9b0abe0d925e54808e1cb38fa0.jpeg"},{"username":"Diegoem","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16705921/medium/29ce68ebc191fc3f65499511b12de98f_default.png"},{"username":"bouks69","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16746091/medium/b58b1fc08520de416198be9df5d093eb.jpeg"},{"username":"futhgar","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16748067/medium/b8c526b097f9aa9d687250cac3df16dc.jpeg"},{"username":"GrimSQL","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16764343/medium/fff729a76d1f8fbcdaee9bb0c0f5f3fd.png"},{"username":"chnikel","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767047/medium/3dda2a37e03049dafefe6697bb00f75c.png"},{"username":"yuki19870616","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767951/medium/f59c848e38382cda6c8464b0a7b9e642_default.png"},{"username":"noamdal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16782245/medium/b4a72a61f9caf138f0322c0cb987e6d0.png"},{"username":"MalithRukshan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16809057/medium/084d6a5b35fbbeacc70e7021197d222f.png"},{"username":"minirope19","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16930929/medium/e8cbbc26747e31c5a8959215e1dd067b.jpeg"},{"username":"prubin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17503492/medium/96ac87644691e49c1f983f2f094e541c_default.png"},{"username":"sam-tam-sam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17578052/medium/1628dc2954ce3ae95e0caaa2bd60ab0c.png"},{"username":"toineenzo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12371852/medium/9f1b2bedb4794c59479cd289bdba9fab.png"},{"username":"ArcaneWater","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12421105/medium/1ac82517a6c658f6b62c48aebcb17e86_default.png"},{"username":"Ebedami","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12974801/medium/b596dea5c09454c4c828eac558389755.jpg"},{"username":"perrygamerptyt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13117177/medium/1406c949507ecd438480473c8a1f6124.jpg"},{"username":"SergiSvK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13320543/medium/3df3c79cc5f0c53716c559cd3fd2fc20.png"},{"username":"jeongeon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13362856/medium/eb572f72cde5e5526c517ca3a6489850_default.png"},{"username":"MrTranCFCVN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13439475/medium/a1789d69c85d90c667194b5d6a518c08_default.png"},{"username":"Tobost06","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13467449/medium/9227dc07f6366bc060d28304f5cb8ce7.jpeg"},{"username":"Kf637","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13530622/medium/118b00bb72d01d3229c97409637e25d1_default.png"},{"username":"Cruellest","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13610615/medium/2a74faa0947ee08d18f7946fb8602c1e.jpg"},{"username":"Thario","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14491372/medium/dd5e142070802a672900121aa3f332a6_default.png"},{"username":"Wjouter","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14585620/medium/b91a51513332bdc0a0a9ecbed99ecbc3.png"},{"username":"albanobattistella","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14686194/medium/564afcfd76f5cd24751bd669cf4943aa.jpg"},{"username":"Kachelkaiser","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14763406/medium/203a781797da4a18fe0f4e7db8fd547c.png"},{"username":"regi4","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14842936/medium/f7e1d672f562a7db61ba6b4b8f4de41d.png"},{"username":"baton5129","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14891064/medium/8d438f557b82977dd02f0ead3187265f.PNG"},{"username":"meviper","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15958903/medium/209f521ce33a05831fa8d7d1b7babc20_default.png"},{"username":"GerOriki","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16268376/medium/da00e54b08cd40348231d92873a0cd0a_default.png"},{"username":"TheRedCyclops","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16486399/medium/7f39226180120d5a9efcb8e13d8aec8e_default.png"},{"username":"dymek37","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16659221/medium/d1dc6d11d7e7fc370efc5070e837ae03.png"},{"username":"B3CKDOOR","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16744975/medium/e6c7b2d45e76465d54e6efb67c83da7d.png"},{"username":"Larsluph","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16779933/medium/ed7d36f8b44013bad3a16ac0491bd0f7.png"},{"username":"FOEDI","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16781001/medium/6b4552fb72e359aa016f7a054078fac8.png"},{"username":"xmarkurion","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16805443/medium/34a20428427de5aaef99c7d140646803.png"},{"username":"gregid","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16806705/medium/f3c8f4a20436e8538929130142bbc104.png"},{"username":"Flameberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16820453/medium/d47be866148474c9d05fec6fbe406d88.png"},{"username":"Playfust","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16872865/medium/5f4609cc711e5fb9fa8a0b178635769c.jpeg"},{"username":"Cotignac","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16879297/medium/81ff353edf030699a159bb79cda26e84.jpg"},{"username":"LeaHun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16916375/medium/618520f0543b1e212ebc83d66b683d4b_default.png"},{"username":"jackwellerreal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16919717/medium/37bbfdc03893f141133ccc619593266d.png"},{"username":"andrius.cim","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16967845/medium/46028fc1a0ddfaaeebcb37b39739625d_default.png"},{"username":"xjxexrxrxyx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17041412/medium/d34d664166db6fb25579bca9ff3b50b4.jpeg"},{"username":"bilhal.fellah","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17044572/medium/d1ec6f17e4aa013e9eededc83778d2c6.png"},{"username":"the_octo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17058060/medium/7423ab3a4cabb67f5decb2e2dfa2b675_default.png"},{"username":"BamesJond","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17075846/medium/128d7ffd40254c8e376f45678e2fc620_default.png"},{"username":"Kornikus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17134240/medium/d7a42b2c30db46ff152699ca01f9e11a_default.png"},{"username":"xoxyuxu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17176526/medium/108055aa24343043de852e412bec74be.png"},{"username":"cryptodntsleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17249408/medium/b9e15aa2b24a0dbc1e4f194aa8ed5109.png"},{"username":"yaniorg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17261842/medium/7dbfc77f21c826845961243c44540d26.jpg"},{"username":"Vidariondr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17262438/medium/45fbc71be02ef27296b6f423e97b6a03_default.png"},{"username":"Fastery","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17263066/medium/701b0edc59676174863ad651528bbb37.jpeg"},{"username":"stratself","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17290388/medium/57d9d8161b3fd0abf4dc5558b4a1fa05_default.png"},{"username":"wuzeqin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17292606/medium/b9e0308410b31337e2d7aa6ed346d718_default.png"},{"username":"ChristopherBull","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17304338/medium/21a175ce596bfae81430767467908b90.jpeg"},{"username":"darkbcnlord","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17311436/medium/b271bc0b419ec3a26ddb7b63ff8ffc4b.png"},{"username":"zhoran1997","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17344028/medium/c8f450b5a8f1e9494a45dc60af7ce63e.png"},{"username":"gilalves1703","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17447768/medium/3f1de562a5c2391c88bbf8d5cf40a266.png"},{"username":"iServeCloud","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17470960/medium/11649b99d609438d66455a4d2fdc70f7.png"},{"username":"guibolzantvbox","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17474136/medium/59a576e6da538664ceb972253916fa02.jpeg"},{"username":"ivann136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17506062/medium/67d09ada36fac5f444a1f7517e3a97bd_default.png"},{"username":"Maheshivara","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17516082/medium/576e1e6581cf969615b265de6aeff8b7.jpeg"},{"username":"brunogui81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17517542/medium/7c0d174e810435af518fe8e0c05e151f.jpeg"},{"username":"michelwilhelm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17542190/medium/4c6b33fd8993ff565fa75add2ce8355e.jpeg"},{"username":"dias-gxstavo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17547376/medium/8c6b109aae8aeb651192346a39ae9e5b.jpeg"},{"username":"e.erdemir","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17617994/medium/7259a29db9941c6171a8cbbd643b92bd.png"}] \ No newline at end of file diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 07aed6bf2..e2857e0f2 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -17,19 +17,19 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@next/eslint-plugin-next": "16.1.4", + "@next/eslint-plugin-next": "16.1.6", "eslint-config-prettier": "^10.1.8", - "eslint-config-turbo": "^2.7.5", + "eslint-config-turbo": "^2.8.15", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^6.1.1", - "typescript-eslint": "^8.53.1" + "typescript-eslint": "^8.57.0" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.39.2", + "eslint": "^9.39.4", "typescript": "^5.9.3" } } diff --git a/tooling/github/setup/action.yml b/tooling/github/setup/action.yml index 20a13d8a7..6051ab5cb 100644 --- a/tooling/github/setup/action.yml +++ b/tooling/github/setup/action.yml @@ -7,7 +7,7 @@ runs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: - node-version: 24.13.0 + node-version: 24.14.0 cache: "pnpm" - shell: bash diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json index aba0382a8..4c0fc9b0f 100644 --- a/tooling/prettier/package.json +++ b/tooling/prettier/package.json @@ -10,12 +10,12 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@ianvs/prettier-plugin-sort-imports": "^4.7.0", - "prettier": "^3.8.0" + "@ianvs/prettier-plugin-sort-imports": "^4.7.1", + "prettier": "^3.8.1" }, "devDependencies": { "@homarr/tsconfig": "workspace:^0.1.0", - "prettier-plugin-packagejson": "^2.5.22", + "prettier-plugin-packagejson": "^3.0.2", "typescript": "^5.9.3" } }